package bots.mctsbot.ai.opponentmodels.weka; public class WekaOptions { private boolean useOnlineLearning = true; /** Continuous learning will start after threshold */ private boolean continuousLearning = true; /** if continuousLearning is false, a new model will be learned * after X actions by an opponent, where X is modelCreationTreshold */ private long modelCreationTreshold = 500; private long minimalLearnExamples = 1; /** continuousLearning must be true for using solveConceptDrift */ private boolean solveConceptDrift = true; private double cdHighCoverage = 50; private double cdLowCoverage = 1; private double cdAccuracy = 0.8; /** if solveConceptDrift is false, a new model must be learned at intervals * based on the number of reported actions */ private long learningInterval = 1; // TODO: keep files of previous online learning private boolean arffOverwrite = true; /** only available when continuousLearning if false */ private boolean continueAfterCreation = true; private boolean modelPersistency = true; public boolean useOnlineLearning() { return useOnlineLearning; } public void setUseOnlineLearning(boolean useOnlineLearning) { this.useOnlineLearning = useOnlineLearning; } public boolean continuousLearning() { return continuousLearning; } public void setContinuousLearning(boolean continuousLearning) { this.continuousLearning = continuousLearning; } public long modelCreationTreshold() { return modelCreationTreshold; } public void setModelCreationTreshold(long modelCreationTreshold) { this.modelCreationTreshold = modelCreationTreshold; } public long getMinimalLearnExamples() { return minimalLearnExamples; } public void setMinimalLearnExamples(long minimalLearnExamples) { this.minimalLearnExamples = minimalLearnExamples; } public boolean solveConceptDrift() { return solveConceptDrift; } public void setSolveConceptDrift(boolean solveConceptDrift) { if (!continuousLearning && solveConceptDrift) throw new IllegalStateException("Cannot use concept drift solver without continuous learning!"); this.solveConceptDrift = solveConceptDrift; } public long getLearningInterval() { return learningInterval; } public void setLearningInterval(long learningInterval) { this.learningInterval = learningInterval; } public boolean arffOverwrite() { return arffOverwrite; } public void setArffOverwrite(boolean arffOverwrite) { this.arffOverwrite = arffOverwrite; } public boolean continueAfterCreation() { return continueAfterCreation; } public void setContinueAfterCreation(boolean continueAfterCreation) { this.continueAfterCreation = continueAfterCreation; } public boolean modelPersistency() { return modelPersistency; } public void setModelPersistency(boolean modelPersistency) { this.modelPersistency = modelPersistency; } public double getCdHighCoverage() { return cdHighCoverage; } public void setCdHighCoverage(double cdHighCoverage) { this.cdHighCoverage = cdHighCoverage; } public double getCdLowCoverage() { return cdLowCoverage; } public void setCdLowCoverage(double cdLowCoverage) { this.cdLowCoverage = cdLowCoverage; } public double getCdAccuracy() { return cdAccuracy; } public void setCdAccuracy(double cdAccuracy) { this.cdAccuracy = cdAccuracy; } }