Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 6 additions & 6 deletions config.properties
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,8 @@ PROBLEM = DPM
# MODEL_TEMPLATE_FILE = models/FX/fxSmall.pm
# PROPERTIES_FILE = models/FX/fxSmall.pctl
#DPM
MODEL_TEMPLATE_FILE = models/DPMParam/dpmSmall.pm
PROPERTIES_FILE = models/DPMParam/dpmSmall.csl
MODEL_TEMPLATE_FILE = models/DPM/dpm.pm
PROPERTIES_FILE = models/DPM/dpm.csl
#Zeroconf
#MODEL_TEMPLATE_FILE = models/Zeroconf/zeroconf.pm
#PROPERTIES_FILE = models/Zeroconf/zeroconf.pctl
Expand All @@ -35,23 +35,23 @@ PROBLEM = DPM
POPULATION_SIZE = 50


#Step 4: Set the maximum number of evaluations
#Step 4: Set the maximum number of evaluations and when to save periodically
MAX_EVALUATIONS = 1000

EVALUATION_INTERVAL=100

#Step 5: Set the number of processors (for parallel execution)
PROCESSORS = 1


#Step 6: Set plotting settings
#Note: requires Python3
PLOT_PARETO_FRONT = true
PLOT_PARETO_FRONT = false
PYTHON3_DIRECTORY = /usr/local/bin/python3


#Step 7: Set additional settings
VERBOSE = false

RELOAD = true

#Step 8: Run
# Within your main class do:
Expand Down
2 changes: 1 addition & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
<groupId>org</groupId>
<artifactId>EvoChecker</artifactId>
<packaging>jar</packaging>
<version>1.1.0</version>
<version>3</version>
<name>EvoChecker</name>
<url>http://maven.apache.org</url>

Expand Down
77 changes: 56 additions & 21 deletions src/main/java/evochecker/EvoChecker.java
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,8 @@ public class EvoChecker {
/** Pareto set filename*/
private String paretoSetFile;


/** Old solutions to load*/
private String initialSolutions;

public EvoChecker() {

Expand Down Expand Up @@ -122,31 +123,65 @@ public void setConfigurationFile(String configFile) {
public void start() {
long start = System.currentTimeMillis();

int max_eval=Integer.parseInt(Utility.getProperty(Constants.MAX_EVALUATIONS_KEYWORD));
int interval=Integer.parseInt(Utility.getProperty(Constants.EVALUATION_INTERVAL_KEYWORD));

if (interval<max_eval)
{
try
{
Utility.setProperty(Constants.MAX_EVALUATIONS_KEYWORD, Utility.getProperty(Constants.EVALUATION_INTERVAL_KEYWORD));
} catch (Exception e)
{
e.printStackTrace();
}
}
else interval=max_eval;


try {
//0) check configuration script
ConfigurationChecker.checkConfiguration();
for (int i=0; i<max_eval; i+=interval)
{
if (i+interval>max_eval)
{
Utility.setProperty(Constants.MAX_EVALUATIONS_KEYWORD, Integer.toString(max_eval-i));
}

//1) initialise problem
initializeProblem();

//2) initialise algorithm
initialiseAlgorithm();

//3) initialise data structures and variables for saving data
String outputDir = initialiseOutputData();
if (i>0)
{
try
{
Utility.setProperty(Constants.RELOAD_KEYWORD, "true");
} catch (Exception e)
{
e.printStackTrace();
}
}

//4) execute and save results
SolutionSet solutions = execute();
//0) check configuration script
ConfigurationChecker.checkConfiguration();

long end = System.currentTimeMillis();
//1) initialise problem
initializeProblem();

//2) initialise algorithm
initialiseAlgorithm();

//3) initialise data structures and variables for saving data
String outputDir = initialiseOutputData();
//4) execute and save results
SolutionSet solutions = execute();

//5) save solutions
exportResults(outputDir, solutions);

//6) close down
closeDown();

System.err.printf("Time:\t%s\n", (end - start)/1000.0);

//5) save solutions
exportResults(outputDir, solutions);
long end = System.currentTimeMillis();

//6) close down
closeDown();

System.err.printf("Time:\t%s\n", (end - start)/1000.0);
}
}
catch (Exception e) {
e.printStackTrace();
Expand Down
102 changes: 54 additions & 48 deletions src/main/java/evochecker/auxiliary/Constants.java
Original file line number Diff line number Diff line change
Expand Up @@ -19,79 +19,85 @@ private Constants() {


/** Keyword for probabilistic model template*/
public static final String MODEL_FILE_KEYWORD = "MODEL_TEMPLATE_FILE";
public static final String MODEL_FILE_KEYWORD = "MODEL_TEMPLATE_FILE";

/** Keyword for probabilistic properties file*/
public static final String PROPERTIES_FILE_KEYWORD = "PROPERTIES_FILE";
public static final String PROPERTIES_FILE_KEYWORD = "PROPERTIES_FILE";

/** Keyword for properties */
public static final String OBJECTIVES_KEYWORD = "OBJECTIVES";
public static final String OBJECTIVES_KEYWORD = "OBJECTIVES";

/** Keyword for algorithm*/
public static final String ALGORITHM_KEYWORD = "ALGORITHM";
public static final String ALGORITHM_KEYWORD = "ALGORITHM";

/** Keyword for tolerance*/
public static final String TOLERANCE_KEYWORD = "TOLERANCE";
public static final String TOLERANCE_KEYWORD = "TOLERANCE";

/** Keyword for multiple tolerance values*/
public static final String TOLERANCES_KEYWORD = "TOLERANCES";
public static final String TOLERANCES_KEYWORD = "TOLERANCES";

/** Keyword for multiple runs */
public static final String RUNS_KEYWORD = "RUNS";
public static final String RUNS_KEYWORD = "RUNS";

/** Keyword for epsilon*/
public static final String EPSILON_KEYWORD = "EPSILON";
public static final String EPSILON_KEYWORD = "EPSILON";

/** Keyword for multiple epsilon values*/
public static final String EPSILONS_KEYWORD = "EPSILONS";
public static final String EPSILONS_KEYWORD = "EPSILONS";

/** Keyword for problem name*/
public static final String PROBLEM_KEYWORD = "PROBLEM";
public static final String PROBLEM_KEYWORD = "PROBLEM";

/** Keyword for sensitivity*/
public static final String SENSITIVITY_KEYWORD = "SENSITIVITY";
public static final String SENSITIVITY_KEYWORD = "SENSITIVITY";

/** Keyword for maximum evaluations*/
public static final String MAX_EVALUATIONS_KEYWORD = "MAX_EVALUATIONS";
public static final String MAX_EVALUATIONS_KEYWORD = "MAX_EVALUATIONS";

/** Keyword for evaluation intervals*/
public static final String EVALUATION_INTERVAL_KEYWORD = "EVALUATION_INTERVAL";

/** Keyword for reloading flag*/
public static final String RELOAD_KEYWORD = "RELOAD";

/** Keyword for population size*/
public static final String POPULATION_SIZE_KEYWORD = "POPULATION_SIZE";
public static final String POPULATION_SIZE_KEYWORD = "POPULATION_SIZE";

/** Keyword for processors*/
public static final String PROCESSORS_KEYWORD = "PROCESSORS";
public static final String PROCESSORS_KEYWORD = "PROCESSORS";

/** Keyword for initial port number*/
public static final String INITIAL_PORT_KEYWORD = "INIT_PORT";
public static final String INITIAL_PORT_KEYWORD = "INIT_PORT";

/** Keyword for initial JVM*/
public static final String JAVA_KEYWORD = "JAVA";
public static final String JAVA_KEYWORD = "JAVA";

/** Keyword for interval */
public static final String INTERVAL_KEYWORD = "INTERVAL";
public static final String INTERVAL_KEYWORD = "INTERVAL";

/** Keyword for dominance relation */
public static final String DOMINANCE_KEYWORD = "DOMINANCE";
public static final String DOMINANCE_KEYWORD = "DOMINANCE";

/** Keyword for errors */
public static final String ERRORS_KEYWORD = "ERRORS";
public static final String ERRORS_KEYWORD = "ERRORS";

/** Keyword for messages to be shown on the UI */
public static final String MESSAGE_KEYWORD = "MESSAGE";
public static final String MESSAGE_KEYWORD = "MESSAGE";

/** Keyword for finishing execution */
public static final String DONE_KEYWORD = "DONE";
public static final String DONE_KEYWORD = "DONE";

/** Keyword for graph path*/
public static final String GRAPH_KEYWORD = "GRAPH";
public static final String GRAPH_KEYWORD = "GRAPH";

/** Keyword for output directory*/
public static final String OUTPUT_DIR_KEYWORD = "OUTPUT_DIR";
public static final String OUTPUT_DIR_KEYWORD = "OUTPUT_DIR";

/** Keyword for output file suffix*/
public static final String OUTPUT_FILE_SUFFIX = "OUTPUT_FILE_SUFFIX";
public static final String OUTPUT_FILE_SUFFIX = "OUTPUT_FILE_SUFFIX";

/** Keyword for model checking engine*/
public static final String MODEL_CHECKING_ENGINE = "MODEL_CHECKING_ENGINE";
public static final String MODEL_CHECKING_ENGINE = "MODEL_CHECKING_ENGINE";
public static final String MODEL_CHECKING_ENGINE_DEFAULT = "libs/PrismExecutor.jar";

/** Keyword for libraries required for running the model checking engine*/
Expand Down Expand Up @@ -121,31 +127,31 @@ private Constants() {

/** Algorithms currently supported by our implementation*/
public static enum ALGORITHM{
NSGAII,
SPEA2,
MOCELL,
RANDOM
;
}
NSGAII,
SPEA2,
MOCELL,
RANDOM
;
}

/** Dominance relations currently supported by our implementation*/
public static enum DOMINANCE{
eDominanceWorstCaseDominance ("evochecker.genetic.jmetal.util.eDominanceWorstCaseDominanceComparator"),
eDominanceRevisedWorstCaseDominance ("evochecker.genetic.jmetal.util.eDominanceRevisedWorstCaseDominanceComparator")
;
private String comparatorPath;
DOMINANCE(String path){
// try {
// Class clazz = Class.forName(path);
// comparator = (RegionDominanceComparator)clazz.newInstance();
// } catch (InstantiationException | IllegalAccessException | ClassNotFoundException e) {
// e.printStackTrace();
// }
this.comparatorPath = path;
// System.out.println(comparatorPath +"\t"+ path);
}
eDominanceWorstCaseDominance ("evochecker.genetic.jmetal.util.eDominanceWorstCaseDominanceComparator"),
eDominanceRevisedWorstCaseDominance ("evochecker.genetic.jmetal.util.eDominanceRevisedWorstCaseDominanceComparator")
;
private String comparatorPath;
DOMINANCE(String path){
// try {
// Class clazz = Class.forName(path);
// comparator = (RegionDominanceComparator)clazz.newInstance();
// } catch (InstantiationException | IllegalAccessException | ClassNotFoundException e) {
// e.printStackTrace();
// }
this.comparatorPath = path;
// System.out.println(comparatorPath +"\t"+ path);
}
}
}
Loading