Rename EvA* classes to Optimization*

This commit is contained in:
Fabian Becker 2013-07-22 15:29:55 +02:00
parent a57c4f6504
commit 4bbcf937dc
7 changed files with 337 additions and 344 deletions

View File

@ -11,12 +11,11 @@ package eva2.gui;
*/ */
import eva2.optimization.OptimizationStateListener; import eva2.optimization.OptimizationStateListener;
import eva2.optimization.modules.ModuleAdapter; import eva2.optimization.modules.ModuleAdapter;
import eva2.optimization.stat.EvAJob; import eva2.optimization.stat.OptimizationJob;
import eva2.tools.ToolBoxGui; import eva2.tools.ToolBoxGui;
import java.awt.event.ActionEvent; import java.awt.event.ActionEvent;
import java.awt.event.ActionListener; import java.awt.event.ActionListener;
import java.io.Serializable; import java.io.Serializable;
import java.net.InetAddress;
import java.util.logging.Level; import java.util.logging.Level;
import java.util.logging.Logger; import java.util.logging.Logger;
import javax.swing.JButton; import javax.swing.JButton;
@ -120,7 +119,7 @@ public class EvAModuleButtonPanelMaker implements OptimizationStateListener, Ser
@Override @Override
public void actionPerformed(ActionEvent event) { public void actionPerformed(ActionEvent event) {
EvAJob job = moduleAdapter.scheduleJob(); OptimizationJob job = moduleAdapter.scheduleJob();
if (job == null) { if (job == null) {
LOGGER.log(Level.WARNING, "There was an error on scheduling your job"); LOGGER.log(Level.WARNING, "There was an error on scheduling your job");
} }

View File

@ -9,7 +9,8 @@ package eva2.gui;
*/ */
import eva2.gui.editor.GenericObjectEditor; import eva2.gui.editor.GenericObjectEditor;
import eva2.optimization.stat.EvAJobList; import eva2.optimization.stat.OptimizationJobList;
import java.beans.PropertyEditor; import java.beans.PropertyEditor;
import java.beans.PropertyEditorManager; import java.beans.PropertyEditorManager;
import java.io.Serializable; import java.io.Serializable;
@ -44,9 +45,9 @@ public class JParaPanel implements Serializable, PanelMaker {
public JComponent makePanel() { public JComponent makePanel() {
PropertyEditorProvider.installEditors(); PropertyEditorProvider.installEditors();
if (localParameter instanceof EvAJobList) { if (localParameter instanceof OptimizationJobList) {
/* ToDo: First parameter is useless and should be removed */ /* ToDo: First parameter is useless and should be removed */
propertyEditor = EvAJobList.makeEditor(tempPanel, (EvAJobList) localParameter); propertyEditor = OptimizationJobList.makeEditor(tempPanel, (OptimizationJobList) localParameter);
} else { } else {
propertyEditor = new GenericObjectEditor(); propertyEditor = new GenericObjectEditor();
((GenericObjectEditor) (propertyEditor)).setClassType(localParameter.getClass()); ((GenericObjectEditor) (propertyEditor)).setClassType(localParameter.getClass());

View File

@ -6,18 +6,15 @@ import eva2.gui.EvATabbedFrameMaker;
import eva2.gui.editor.GenericObjectEditor; import eva2.gui.editor.GenericObjectEditor;
import eva2.gui.JParaPanel; import eva2.gui.JParaPanel;
import eva2.optimization.go.InterfaceOptimizationParameters; import eva2.optimization.go.InterfaceOptimizationParameters;
import eva2.optimization.stat.AbstractStatistics; import eva2.optimization.stat.*;
import eva2.optimization.stat.EvAJob; import eva2.optimization.stat.OptimizationJob;
import eva2.optimization.stat.EvAJobList;
import eva2.optimization.stat.InterfaceStatisticsParameter;
import eva2.optimization.stat.StatisticsStandalone;
import eva2.optimization.stat.StatisticsWithGUI;
import java.io.Serializable; import java.io.Serializable;
public class GenericModuleAdapter extends AbstractModuleAdapter implements Serializable { public class GenericModuleAdapter extends AbstractModuleAdapter implements Serializable {
private AbstractStatistics statisticsModule; private AbstractStatistics statisticsModule;
private EvAJobList jobList = null; private OptimizationJobList jobList = null;
public String helperFilename; public String helperFilename;
JParaPanel jobPanel = null, paramPanel = null; JParaPanel jobPanel = null, paramPanel = null;
@ -97,7 +94,7 @@ public class GenericModuleAdapter extends AbstractModuleAdapter implements Seria
frmMkr.addPanelMaker(new JParaPanel(Stat, Stat.getName())); frmMkr.addPanelMaker(new JParaPanel(Stat, Stat.getName()));
jobList = new EvAJobList(new EvAJob[]{}); jobList = new OptimizationJobList(new OptimizationJob[]{});
jobList.setModule(this); jobList.setModule(this);
jobList.addTextListener((AbstractStatistics) ((Processor) processor).getStatistics()); jobList.addTextListener((AbstractStatistics) ((Processor) processor).getStatistics());
@ -113,7 +110,7 @@ public class GenericModuleAdapter extends AbstractModuleAdapter implements Seria
@Override @Override
public void performedStart(String infoString) { public void performedStart(String infoString) {
super.performedStart(infoString); super.performedStart(infoString);
EvAJob job = scheduleJob(); OptimizationJob job = scheduleJob();
((AbstractStatistics) (((Processor) processor).getStatistics())).addDataListener(job); ((AbstractStatistics) (((Processor) processor).getStatistics())).addDataListener(job);
} }
@ -136,8 +133,8 @@ public class GenericModuleAdapter extends AbstractModuleAdapter implements Seria
} }
@Override @Override
public EvAJob scheduleJob() { public OptimizationJob scheduleJob() {
EvAJob job = jobList.addJob(((Processor) processor).getGOParams(), (AbstractStatistics) (((Processor) processor).getStatistics())); OptimizationJob job = jobList.addJob(((Processor) processor).getGOParams(), (AbstractStatistics) (((Processor) processor).getStatistics()));
jobPanel.getEditor().setValue(jobList); jobPanel.getEditor().setValue(jobList);
return job; return job;
} }

View File

@ -11,7 +11,8 @@ package eva2.optimization.modules;
*/ */
import eva2.gui.EvATabbedFrameMaker; import eva2.gui.EvATabbedFrameMaker;
import eva2.optimization.OptimizationStateListener; import eva2.optimization.OptimizationStateListener;
import eva2.optimization.stat.EvAJob; import eva2.optimization.stat.OptimizationJob;
/** /**
* *
*/ */
@ -26,7 +27,7 @@ public interface ModuleAdapter extends OptimizationStateListener {
* *
* @return A new Job * @return A new Job
*/ */
EvAJob scheduleJob(); OptimizationJob scheduleJob();
void restartOpt(); void restartOpt();

View File

@ -3,6 +3,7 @@ package eva2.optimization.stat;
import eva2.gui.BeanInspector; import eva2.gui.BeanInspector;
import eva2.tools.ReflectPackage; import eva2.tools.ReflectPackage;
import eva2.tools.math.Mathematics; import eva2.tools.math.Mathematics;
import java.text.DecimalFormat; import java.text.DecimalFormat;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.LinkedList; import java.util.LinkedList;
@ -13,19 +14,16 @@ import java.util.List;
* jobs) is not tested here. * jobs) is not tested here.
* *
* @author mkron * @author mkron
*
*/ */
public class EvAStatisticalEvaluation { public class EvAStatisticalEvaluation {
public static final boolean TRACE=false;
// public static final String[] order = {"Mean" , "Median", "Variance", "Std. Deviation"};
public static EvAStatisticalEvaluationParams statsParams = new EvAStatisticalEvaluationParams(); public static EvAStatisticalEvaluationParams statsParams = new EvAStatisticalEvaluationParams();
// public static void evaluate(EvAJob[] jobList, int[] selectedIndices) { // public static void evaluate(OptimizationJob[] jobList, int[] selectedIndices) {
// if (TRACE) System.out.println("Job list: " + BeanInspector.toString(jobList)); // if (TRACE) System.out.println("Job list: " + BeanInspector.toString(jobList));
// JTextoutputFrame textout = new JTextoutputFrame("Statistics"); // JTextoutputFrame textout = new JTextoutputFrame("Statistics");
// textout.setShow(true); // textout.setShow(true);
// ArrayList<EvAJob> jobsToWorkWith = new ArrayList<EvAJob>(); // ArrayList<OptimizationJob> jobsToWorkWith = new ArrayList<OptimizationJob>();
// for (int i=0; i<jobList.length; i++) { // for (int i=0; i<jobList.length; i++) {
// // remove jobs which are not finished or not selected // // remove jobs which are not finished or not selected
// if (jobList[i]!=null && (Mathematics.contains(selectedIndices, i)) && (jobList[i].isFinishedAndComplete())) jobsToWorkWith.add(jobList[i]); // if (jobList[i]!=null && (Mathematics.contains(selectedIndices, i)) && (jobList[i].isFinishedAndComplete())) jobsToWorkWith.add(jobList[i]);
@ -45,306 +43,303 @@ public class EvAStatisticalEvaluation {
// } // }
// } // }
public static void evaluate(InterfaceTextListener textout, EvAJob[] jobList, int[] selectedIndices, public static void evaluate(InterfaceTextListener textout, OptimizationJob[] jobList, int[] selectedIndices,
StatsOnSingleDataSetEnum[] singleStats, StatsOnSingleDataSetEnum[] singleStats,
StatsOnTwoSampledDataEnum[] twoSampledStats ) { StatsOnTwoSampledDataEnum[] twoSampledStats) {
if (TRACE) { ArrayList<OptimizationJob> jobsToWorkWith = new ArrayList<OptimizationJob>();
System.out.println("Job list: " + BeanInspector.toString(jobList)); for (int i = 0; i < jobList.length; i++) {
} // remove jobs which are not finished or not selected
// JTextoutputFrame textout = new JTextoutputFrame("Statistics"); if (jobList[i] != null && (Mathematics.contains(selectedIndices, i)) && (jobList[i].isFinishedAndComplete())) {
// textout.setShow(true); jobsToWorkWith.add(jobList[i]);
ArrayList<EvAJob> jobsToWorkWith = new ArrayList<EvAJob>(); }
for (int i=0; i<jobList.length; i++) { }
// remove jobs which are not finished or not selected List<String> commonFields = getCommonFields(jobsToWorkWith);
if (jobList[i]!=null && (Mathematics.contains(selectedIndices, i)) && (jobList[i].isFinishedAndComplete())) { if (commonFields != null && !commonFields.isEmpty()) {
jobsToWorkWith.add(jobList[i]); for (String field : commonFields) {
textout.println("###\t" + field + " statistical evaluation");
if (singleStats.length > 0) {
textout.println("one-sampled statistics");
for (int j = -1; j < singleStats.length; j++) {
if (j < 0) {
textout.print("method");
} else {
textout.print("\t" + singleStats[j]);
}
} }
} textout.println("");
List<String> commonFields = getCommonFields(jobsToWorkWith); for (int i = 0; i < jobsToWorkWith.size(); i++) {
if (commonFields!=null && !commonFields.isEmpty()) { textout.print(jobsToWorkWith.get(i).getParams().getOptimizer().getName());
for (String field : commonFields) { for (int j = 0; j < singleStats.length; j++) {
textout.println("###\t"+ field + " statistical evaluation"); switch (singleStats[j]) {
case mean:
textout.print("\t" + calculateMean(field, jobsToWorkWith.get(i)));
break;
case median:
textout.print("\t" + calculateMedian(field, jobsToWorkWith.get(i)));
break;
case variance:
textout.print("\t" + calculateVariance(field, jobsToWorkWith.get(i)));
break;
case stdDev:
textout.print("\t" + calculateStdDev(field, jobsToWorkWith.get(i)));
break;
default:
textout.println("");
}
}
textout.println("");
}
}
if (twoSampledStats.length > 0) {
textout.println("two-sampled stats:");
for (int i = 0; i < twoSampledStats.length; i++) {
switch (twoSampledStats[i]) {
case tTestEqLenEqVar:
textout.println(StatsOnTwoSampledDataEnum.getInfoStrings()[twoSampledStats[i].ordinal()]);
writeTwoSampleFirstLine(textout, jobsToWorkWith);
writeTTestEqSizeEqVar(textout, jobsToWorkWith, field);
break;
case tTestUneqLenEqVar:
textout.println(StatsOnTwoSampledDataEnum.getInfoStrings()[twoSampledStats[i].ordinal()]);
writeTwoSampleFirstLine(textout, jobsToWorkWith);
writeUnEqSizeEqVar(textout, jobsToWorkWith, field);
break;
case tTestUneqLenUneqVar:
textout.println(StatsOnTwoSampledDataEnum.getInfoStrings()[twoSampledStats[i].ordinal()]);
writeTwoSampleFirstLine(textout, jobsToWorkWith);
writeTTestUnEqSizeUnEqVar(textout, jobsToWorkWith, field);
break;
case mannWhitney:
textout.println(StatsOnTwoSampledDataEnum.getInfoStrings()[twoSampledStats[i].ordinal()]);
writeTwoSampleFirstLine(textout, jobsToWorkWith);
writeMannWhitney(textout, jobsToWorkWith, field);
default:
textout.println("");
break;
}
textout.println("");
}
}
}
}
}
if(singleStats.length > 0){ /**
textout.println("one-sampled statistics"); * @param textout
for (int j=-1; j<singleStats.length; j++) { * @param jobsToWorkWith
if(j<0){ * @param field
textout.print("method"); */
}else{ private static void writeTTestUnEqSizeUnEqVar(
textout.print("\t" + singleStats[j]); InterfaceTextListener textout, ArrayList<OptimizationJob> jobsToWorkWith,
} String field) {
} for (int i = 0; i < jobsToWorkWith.size(); i++) {
textout.println(""); textout.print(jobsToWorkWith.get(i).getParams().getOptimizer().getName());
for(int i=0; i<jobsToWorkWith.size(); i++){ for (int j = 0; j < jobsToWorkWith.size(); j++) {
textout.print(jobsToWorkWith.get(i).getParams().getOptimizer().getName()); textout.print("\t" + calculateTTestUnEqSizeUnEqVar(field, jobsToWorkWith.get(i), jobsToWorkWith.get(j)));
for(int j=0; j<singleStats.length; j++){ }
switch(singleStats[j]){ textout.println("");
case mean: textout.print("\t" + calculateMean(field, jobsToWorkWith.get(i))); break; }
case median: textout.print("\t" + calculateMedian(field, jobsToWorkWith.get(i))); break; }
case variance: textout.print("\t" + calculateVariance(field, jobsToWorkWith.get(i))); break;
case stdDev: textout.print("\t" + calculateStdDev(field, jobsToWorkWith.get(i))); break;
default: textout.println("");
}
}
textout.println("");
}
}
if(twoSampledStats.length > 0){
textout.println("two-sampled stats:");
for(int i=0; i<twoSampledStats.length; i++){
switch(twoSampledStats[i]){
case tTestEqLenEqVar: textout.println(StatsOnTwoSampledDataEnum.getInfoStrings()[twoSampledStats[i].ordinal()]);
writeTwoSampleFirstLine(textout, jobsToWorkWith);
writeTTestEqSizeEqVar(textout, jobsToWorkWith, field);
break;
case tTestUneqLenEqVar: textout.println(StatsOnTwoSampledDataEnum.getInfoStrings()[twoSampledStats[i].ordinal()]);
writeTwoSampleFirstLine(textout, jobsToWorkWith);
writeUnEqSizeEqVar(textout, jobsToWorkWith, field);
break;
case tTestUneqLenUneqVar: textout.println(StatsOnTwoSampledDataEnum.getInfoStrings()[twoSampledStats[i].ordinal()]);
writeTwoSampleFirstLine(textout, jobsToWorkWith);
writeTTestUnEqSizeUnEqVar(textout, jobsToWorkWith, field);
break;
case mannWhitney: textout.println(StatsOnTwoSampledDataEnum.getInfoStrings()[twoSampledStats[i].ordinal()]);
writeTwoSampleFirstLine(textout, jobsToWorkWith);
writeMannWhitney(textout, jobsToWorkWith, field);
default: textout.println("");
break;
}
textout.println("");
}
}
} }
}
/** /**
* @param textout * @param textout
* @param jobsToWorkWith * @param jobsToWorkWith
* @param field * @param field
*/ */
private static void writeTTestUnEqSizeUnEqVar( private static void writeUnEqSizeEqVar(InterfaceTextListener textout,
InterfaceTextListener textout, ArrayList<EvAJob> jobsToWorkWith, ArrayList<OptimizationJob> jobsToWorkWith, String field) {
String field) { for (int i = 0; i < jobsToWorkWith.size(); i++) {
for (int i=0; i<jobsToWorkWith.size(); i++) { textout.print(jobsToWorkWith.get(i).getParams().getOptimizer().getName());
textout.print(jobsToWorkWith.get(i).getParams().getOptimizer().getName()); for (int j = 0; j < jobsToWorkWith.size(); j++) {
for (int j=0; j<jobsToWorkWith.size(); j++) { textout.print("\t" + calculateTTestUnEqSizeEqVar(field, jobsToWorkWith.get(i), jobsToWorkWith.get(j)));
textout.print("\t" + calculateTTestUnEqSizeUnEqVar(field, jobsToWorkWith.get(i), jobsToWorkWith.get(j))); }
} textout.println("");
textout.println(""); }
} }
}
/** /**
* @param textout * @param textout
* @param jobsToWorkWith * @param jobsToWorkWith
* @param field * @param field
*/ */
private static void writeUnEqSizeEqVar(InterfaceTextListener textout, private static void writeTTestEqSizeEqVar(InterfaceTextListener textout,
ArrayList<EvAJob> jobsToWorkWith, String field) { ArrayList<OptimizationJob> jobsToWorkWith, String field) {
for (int i=0; i<jobsToWorkWith.size(); i++) { for (int i = 0; i < jobsToWorkWith.size(); i++) {
textout.print(jobsToWorkWith.get(i).getParams().getOptimizer().getName()); textout.print(jobsToWorkWith.get(i).getParams().getOptimizer().getName());
for (int j=0; j<jobsToWorkWith.size(); j++) { for (int j = 0; j < jobsToWorkWith.size(); j++) {
textout.print("\t" + calculateTTestUnEqSizeEqVar(field, jobsToWorkWith.get(i), jobsToWorkWith.get(j))); textout.print("\t" + calculateTTestEqSizeEqVar(field, jobsToWorkWith.get(i), jobsToWorkWith.get(j)));
} }
textout.println(""); textout.println("");
} }
} }
/** private static void writeMannWhitney(InterfaceTextListener textout,
* @param textout ArrayList<OptimizationJob> jobsToWorkWith, String field) {
* @param jobsToWorkWith for (int i = 0; i < jobsToWorkWith.size(); i++) {
* @param field textout.print(jobsToWorkWith.get(i).getParams().getOptimizer().getName());
*/ for (int j = 0; j < jobsToWorkWith.size(); j++) {
private static void writeTTestEqSizeEqVar(InterfaceTextListener textout, textout.print("\t" + calculateMannWhintey(field, jobsToWorkWith.get(i), jobsToWorkWith.get(j)));
ArrayList<EvAJob> jobsToWorkWith, String field) { }
for (int i=0; i<jobsToWorkWith.size(); i++) { textout.println("");
textout.print(jobsToWorkWith.get(i).getParams().getOptimizer().getName()); }
for (int j=0; j<jobsToWorkWith.size(); j++) { }
textout.print("\t" + calculateTTestEqSizeEqVar(field, jobsToWorkWith.get(i), jobsToWorkWith.get(j)));
}
textout.println("");
}
}
private static void writeMannWhitney(InterfaceTextListener textout, /**
ArrayList<EvAJob> jobsToWorkWith, String field) { * @param textout
for (int i=0; i<jobsToWorkWith.size(); i++) { * @param jobsToWorkWith
textout.print(jobsToWorkWith.get(i).getParams().getOptimizer().getName()); */
for (int j=0; j<jobsToWorkWith.size(); j++) { private static void writeTwoSampleFirstLine(InterfaceTextListener textout,
textout.print("\t" + calculateMannWhintey(field, jobsToWorkWith.get(i), jobsToWorkWith.get(j))); ArrayList<OptimizationJob> jobsToWorkWith) {
} for (int i = 0; i < jobsToWorkWith.size(); i++) {
textout.println(""); textout.print("\t" + jobsToWorkWith.get(i).getParams().getOptimizer().getName());
} }
} textout.println("");
}
/** public static double roundTo2DecimalPlaces(double value) {
* @param textout DecimalFormat twoDForm = new DecimalFormat("#.##");
* @param jobsToWorkWith String b = twoDForm.format(value);
*/ b = b.replace(',', '.');
private static void writeTwoSampleFirstLine(InterfaceTextListener textout, Double c = Double.valueOf(b);
ArrayList<EvAJob> jobsToWorkWith) { return c;
for(int i=0; i<jobsToWorkWith.size(); i++){ }
textout.print("\t" + jobsToWorkWith.get(i).getParams().getOptimizer().getName());
}
textout.println("");
}
public static double roundTo2DecimalPlaces(double value){ private static String calculateMean(String field, OptimizationJob job1) {
DecimalFormat twoDForm = new DecimalFormat("#.##"); double[] dat = job1.getDoubleDataColumn(field);
String b = twoDForm.format(value); double mean = Double.NaN;
b = b.replace(',', '.'); if (dat != null) {
Double c = Double.valueOf(b); mean = Mathematics.mean(dat);
return c; mean = EvAStatisticalEvaluation.roundTo2DecimalPlaces(mean);
} }
return "" + mean;
}
private static String calculateMean(String field, EvAJob job1){ private static String calculateMedian(String field, OptimizationJob job1) {
double[] dat = job1.getDoubleDataColumn(field); double[] dat = job1.getDoubleDataColumn(field);
double mean = Double.NaN; double median = Double.NaN;
if (dat!=null) { if (dat != null) {
mean = Mathematics.mean(dat); median = Mathematics.median2(dat, true);
mean = EvAStatisticalEvaluation.roundTo2DecimalPlaces(mean); median = EvAStatisticalEvaluation.roundTo2DecimalPlaces(median);
} }
return ""+mean;
}
private static String calculateMedian(String field, EvAJob job1){ return "" + median;
double[] dat = job1.getDoubleDataColumn(field); }
double median = Double.NaN;
if (dat!=null) {
median = Mathematics.median2(dat, true);
median = EvAStatisticalEvaluation.roundTo2DecimalPlaces(median);
}
return ""+median; private static String calculateVariance(String field, OptimizationJob job1) {
} double[] dat = job1.getDoubleDataColumn(field);
double variance = Double.NaN;
if (dat != null) {
variance = Mathematics.variance(dat);
variance = EvAStatisticalEvaluation.roundTo2DecimalPlaces(variance);
}
return "" + variance;
}
private static String calculateVariance(String field, EvAJob job1){ private static String calculateStdDev(String field, OptimizationJob job1) {
double[] dat = job1.getDoubleDataColumn(field); double[] dat = job1.getDoubleDataColumn(field);
double variance = Double.NaN; double stdDev = Double.NaN;
if (dat!=null) { if (dat != null) {
variance = Mathematics.variance(dat); stdDev = Mathematics.stdDev(dat);
variance = EvAStatisticalEvaluation.roundTo2DecimalPlaces(variance); stdDev = EvAStatisticalEvaluation.roundTo2DecimalPlaces(stdDev);
} }
return ""+variance; return "" + stdDev;
} }
private static String calculateStdDev(String field, EvAJob job1){ private static String calculateTTestEqSizeEqVar(String field, OptimizationJob job1, OptimizationJob job2) {
double[] dat = job1.getDoubleDataColumn(field); double[] dat1 = job1.getDoubleDataColumn(field);
double stdDev = Double.NaN; double[] dat2 = job2.getDoubleDataColumn(field);
if (dat!=null) { double t = Double.NaN;
stdDev = Mathematics.stdDev(dat); if (dat1 != null && dat2 != null) {
stdDev = EvAStatisticalEvaluation.roundTo2DecimalPlaces(stdDev); t = Mathematics.tTestEqSizeEqVar(dat1, dat2);
} }
return ""+stdDev;
}
private static String calculateTTestEqSizeEqVar(String field, EvAJob job1, EvAJob job2){
double[] dat1 = job1.getDoubleDataColumn(field);
double[] dat2 = job2.getDoubleDataColumn(field);
double t=Double.NaN;
if (dat1!=null && dat2!=null) {
t = Mathematics.tTestEqSizeEqVar(dat1, dat2);
}
// MannWhitneyTest mwt = new MannWhitneyTest(job1.getDoubleDataColumn(field), job2.getDoubleDataColumn(field)); // MannWhitneyTest mwt = new MannWhitneyTest(job1.getDoubleDataColumn(field), job2.getDoubleDataColumn(field));
// double t = mwt.getSP(); // double t = mwt.getSP();
// t = roundTo2DecimalPlaces(t); // t = roundTo2DecimalPlaces(t);
return ""+t; return "" + t;
} }
private static String calculateTTestUnEqSizeEqVar(String field, EvAJob job1, EvAJob job2){ private static String calculateTTestUnEqSizeEqVar(String field, OptimizationJob job1, OptimizationJob job2) {
double[] dat1 = job1.getDoubleDataColumn(field); double[] dat1 = job1.getDoubleDataColumn(field);
double[] dat2 = job2.getDoubleDataColumn(field); double[] dat2 = job2.getDoubleDataColumn(field);
double t=Double.NaN; double t = Double.NaN;
if (dat1!=null && dat2!=null) { if (dat1 != null && dat2 != null) {
t = Mathematics.tTestUnEqSizeEqVar(dat1, dat2); t = Mathematics.tTestUnEqSizeEqVar(dat1, dat2);
} }
// t = roundTo2DecimalPlaces(t); // t = roundTo2DecimalPlaces(t);
return ""+t; return "" + t;
} }
private static String calculateTTestUnEqSizeUnEqVar(String field, EvAJob job1, EvAJob job2){ private static String calculateTTestUnEqSizeUnEqVar(String field, OptimizationJob job1, OptimizationJob job2) {
double[] dat1 = job1.getDoubleDataColumn(field); double[] dat1 = job1.getDoubleDataColumn(field);
double[] dat2 = job2.getDoubleDataColumn(field); double[] dat2 = job2.getDoubleDataColumn(field);
double t=Double.NaN; double t = Double.NaN;
if (dat1!=null && dat2!=null) { if (dat1 != null && dat2 != null) {
t = Mathematics.tTestUnEqSizeUnEqVar(dat1, dat2); t = Mathematics.tTestUnEqSizeUnEqVar(dat1, dat2);
} }
// t = roundTo2DecimalPlaces(t); // t = roundTo2DecimalPlaces(t);
return ""+t; return "" + t;
} }
private static String calculateMannWhintey(String field, EvAJob job1, EvAJob job2){ private static String calculateMannWhintey(String field, OptimizationJob job1, OptimizationJob job2) {
double[] dat1 = job1.getDoubleDataColumn(field); double[] dat1 = job1.getDoubleDataColumn(field);
double[] dat2 = job2.getDoubleDataColumn(field); double[] dat2 = job2.getDoubleDataColumn(field);
double t=Double.NaN; double t = Double.NaN;
if (dat1!=null && dat2!=null) { if (dat1 != null && dat2 != null) {
Object obj = ReflectPackage.instantiateWithParams("jsc.independentsamples.MannWhitneyTest", new Object[]{dat1,dat2}, null); Object obj = ReflectPackage.instantiateWithParams("jsc.independentsamples.MannWhitneyTest", new Object[]{dat1, dat2}, null);
if (obj!=null) { if (obj != null) {
Object sp = BeanInspector.callIfAvailable(obj, "getSP", new Object[]{}); Object sp = BeanInspector.callIfAvailable(obj, "getSP", new Object[]{});
// System.out.println(BeanInspector.niceToString(obj)); // System.out.println(BeanInspector.niceToString(obj));
// System.out.println("SP val is " + sp); // System.out.println("SP val is " + sp);
t = (Double) sp; t = (Double) sp;
} else { } else {
System.err.println("For the MannWhitney test, the JSC package is required on the class path!"); System.err.println("For the MannWhitney test, the JSC package is required on the class path!");
} }
} }
return ""+t; return "" + t;
} }
private static String compare(String field, EvAJob job1, EvAJob job2) { private static String compare(String field, OptimizationJob job1, OptimizationJob job2) {
// TODO do some statistical test // TODO do some statistical test
int numRuns1 = job1.getNumRuns(); int numRuns1 = job1.getNumRuns();
int numRuns2 = job2.getNumRuns(); int numRuns2 = job2.getNumRuns();
if (TRACE) { double avg1 = Mathematics.mean(job1.getDoubleDataColumn(field));
System.out.println("Run 1: " + numRuns1 + " runs, Run 2: " + numRuns2); double avg2 = Mathematics.mean(job2.getDoubleDataColumn(field));
}
if (TRACE) {
System.out.println("Data of run 1: " + BeanInspector.toString(job1.getDataColumn(field)));
}
if (TRACE) {
System.out.println("Data of run 2: " + BeanInspector.toString(job2.getDataColumn(field)));
}
double avg1=Mathematics.mean(job1.getDoubleDataColumn(field));
double avg2=Mathematics.mean(job2.getDoubleDataColumn(field));
if (avg1<avg2) { if (avg1 < avg2) {
return "-1"; return "-1";
} } else if (avg1 > avg2) {
else if (avg1>avg2) { return "1";
return "1"; } else {
} return "0";
else { }
return "0"; }
}
}
/** /**
* Return a list of field names which occur in all jobs. * Return a list of field names which occur in all jobs.
* @param jobList *
* @return * @param jobList
*/ * @return
private static List<String> getCommonFields(List<EvAJob> jobList) { */
List<String> lSoFar=null, tmpL = new LinkedList<String>(); private static List<String> getCommonFields(List<OptimizationJob> jobList) {
for (EvAJob j:jobList) { List<String> lSoFar = null, tmpL = new LinkedList<String>();
if (lSoFar==null) { for (OptimizationJob j : jobList) {
lSoFar = new LinkedList<String>(); if (lSoFar == null) {
for (String f : j.getFieldHeaders()) { lSoFar = new LinkedList<String>();
for (String f : j.getFieldHeaders()) {
lSoFar.add(f); lSoFar.add(f);
} }
} else { } else {
for (String f : lSoFar) { for (String f : lSoFar) {
if (j.getFieldIndex(f)>=0) { if (j.getFieldIndex(f) >= 0) {
tmpL.add(f); tmpL.add(f);
} }
} }
lSoFar=tmpL; lSoFar = tmpL;
tmpL = new LinkedList<String>(); tmpL = new LinkedList<String>();
}
}
if (TRACE) {
System.out.println("Common fields are " + BeanInspector.toString(lSoFar));
} }
return lSoFar; }
} return lSoFar;
}
} }

View File

@ -7,7 +7,7 @@ import java.io.Serializable;
import java.util.List; import java.util.List;
/** /**
* An EvAJob is a set of optimization parameters and potential results from the statistics class. * An OptimizationJob is a set of optimization parameters and potential results from the statistics class.
* Each job has a unique ID and may have been completely finished or not. Once finished, the * Each job has a unique ID and may have been completely finished or not. Once finished, the
* framework should guarantee that the job is removed as a statistics listener. * framework should guarantee that the job is removed as a statistics listener.
* *
@ -16,7 +16,7 @@ import java.util.List;
* @author mkron * @author mkron
* *
*/ */
public class EvAJob implements Serializable, InterfaceStatisticsListener { public class OptimizationJob implements Serializable, InterfaceStatisticsListener {
private static final boolean TRACE = false; private static final boolean TRACE = false;
private InterfaceOptimizationParameters params = null; private InterfaceOptimizationParameters params = null;
@ -31,12 +31,12 @@ public class EvAJob implements Serializable, InterfaceStatisticsListener {
private enum StateEnum { running, idle, complete, incomplete}; private enum StateEnum { running, idle, complete, incomplete};
public EvAJob() { public OptimizationJob() {
jobID=jobIDCounter; jobID=jobIDCounter;
jobIDCounter++; jobIDCounter++;
} }
public EvAJob(InterfaceOptimizationParameters params, InterfaceStatistics sts) { public OptimizationJob(InterfaceOptimizationParameters params, InterfaceStatistics sts) {
this(); this();
this.params = params; this.params = params;
if (sts instanceof AbstractStatistics) { if (sts instanceof AbstractStatistics) {
@ -169,7 +169,7 @@ public class EvAJob implements Serializable, InterfaceStatisticsListener {
numRuns=runsPerformed; numRuns=runsPerformed;
lastRunIncompl = !completedLastRun; lastRunIncompl = !completedLastRun;
if (TRACE) { if (TRACE) {
System.out.println("EvAJob.notifyRunStopped, " + runsPerformed + " " + completedLastRun); System.out.println("OptimizationJob.notifyRunStopped, " + runsPerformed + " " + completedLastRun);
} }
} }

View File

@ -30,12 +30,12 @@ import javax.swing.JOptionPane;
* @author mkron * @author mkron
* *
*/ */
public class EvAJobList extends PropertySelectableList<EvAJob> implements Serializable, InterfaceTextListener { public class OptimizationJobList extends PropertySelectableList<OptimizationJob> implements Serializable, InterfaceTextListener {
List<InterfaceTextListener> listeners = null; List<InterfaceTextListener> listeners = null;
private ModuleAdapter module = null; private ModuleAdapter module = null;
public EvAJobList(EvAJob[] initial) { public OptimizationJobList(OptimizationJob[] initial) {
super(initial); super(initial);
} }
@ -53,24 +53,24 @@ public class EvAJobList extends PropertySelectableList<EvAJob> implements Serial
* @param params * @param params
* @param stats * @param stats
*/ */
public EvAJob addJob(InterfaceOptimizationParameters params, AbstractStatistics stats) { public OptimizationJob addJob(InterfaceOptimizationParameters params, AbstractStatistics stats) {
EvAJob job = new EvAJob((InterfaceOptimizationParameters) Serializer.deepClone(params), stats); OptimizationJob job = new OptimizationJob((InterfaceOptimizationParameters) Serializer.deepClone(params), stats);
stats.addDataListener(job); stats.addDataListener(job);
addJob(job, true); addJob(job, true);
return job; return job;
} }
private void addJob(EvAJob j, boolean selected) { private void addJob(OptimizationJob j, boolean selected) {
EvAJob[] curArr = getObjects(); OptimizationJob[] curArr = getObjects();
EvAJob[] newArr = null; OptimizationJob[] newArr = null;
boolean[] newSelection = null; boolean[] newSelection = null;
if (curArr != null && curArr.length > 0) { if (curArr != null && curArr.length > 0) {
newArr = new EvAJob[curArr.length + 1]; newArr = new OptimizationJob[curArr.length + 1];
newSelection = new boolean[newArr.length]; newSelection = new boolean[newArr.length];
System.arraycopy(curArr, 0, newArr, 0, curArr.length); System.arraycopy(curArr, 0, newArr, 0, curArr.length);
System.arraycopy(m_Selection, 0, newSelection, 0, curArr.length); System.arraycopy(m_Selection, 0, newSelection, 0, curArr.length);
} else { } else {
newArr = new EvAJob[1]; newArr = new OptimizationJob[1];
newSelection = new boolean[1]; newSelection = new boolean[1];
} }
newSelection[newArr.length - 1] = selected; newSelection[newArr.length - 1] = selected;
@ -83,8 +83,8 @@ public class EvAJobList extends PropertySelectableList<EvAJob> implements Serial
* *
* @return * @return
*/ */
public EvAJob lastJob() { public OptimizationJob lastJob() {
EvAJob[] curArr = getObjects(); OptimizationJob[] curArr = getObjects();
if (curArr != null && curArr.length > 0) { if (curArr != null && curArr.length > 0) {
return curArr[curArr.length - 1]; return curArr[curArr.length - 1];
} else { } else {
@ -97,10 +97,10 @@ public class EvAJobList extends PropertySelectableList<EvAJob> implements Serial
* *
* @return * @return
*/ */
public ArrayList<EvAJob> getSelectedJobs() { public ArrayList<OptimizationJob> getSelectedJobs() {
EvAJob[] selected = getSelectedObjects(); OptimizationJob[] selected = getSelectedObjects();
ArrayList<EvAJob> l = new ArrayList<EvAJob>(); ArrayList<OptimizationJob> l = new ArrayList<OptimizationJob>();
for (EvAJob j : selected) { for (OptimizationJob j : selected) {
if (j != null) { if (j != null) {
l.add(j); l.add(j);
} }
@ -109,7 +109,7 @@ public class EvAJobList extends PropertySelectableList<EvAJob> implements Serial
} }
public boolean saveSelectedJobs(Component parentComponent) { public boolean saveSelectedJobs(Component parentComponent) {
EvAJob[] selected = getSelectedObjects(); OptimizationJob[] selected = getSelectedObjects();
if (selected != null && (selected.length > 0)) { if (selected != null && (selected.length > 0)) {
JFileChooser fc = new JFileChooser(); JFileChooser fc = new JFileChooser();
fc.setName("Select a directory to save jobs to..."); fc.setName("Select a directory to save jobs to...");
@ -118,7 +118,7 @@ public class EvAJobList extends PropertySelectableList<EvAJob> implements Serial
if (returnVal == JFileChooser.APPROVE_OPTION) { if (returnVal == JFileChooser.APPROVE_OPTION) {
File sFile = fc.getSelectedFile(); File sFile = fc.getSelectedFile();
if (sFile.exists()) { if (sFile.exists()) {
for (EvAJob job : selected) { for (OptimizationJob job : selected) {
if (job != null) { if (job != null) {
if (!FileTools.saveObjectToFolder(job, sFile, false, parentComponent)) { if (!FileTools.saveObjectToFolder(job, sFile, false, parentComponent)) {
System.err.println("Error on saving jobs..."); System.err.println("Error on saving jobs...");
@ -144,8 +144,8 @@ public class EvAJobList extends PropertySelectableList<EvAJob> implements Serial
* @param params * @param params
* @return * @return
*/ */
public EvAJob getJobOf(InterfaceOptimizationParameters params) { public OptimizationJob getJobOf(InterfaceOptimizationParameters params) {
for (EvAJob job : getObjects()) { for (OptimizationJob job : getObjects()) {
if (job.getGOParams() == params) { if (job.getGOParams() == params) {
return job; return job;
} }
@ -159,7 +159,7 @@ public class EvAJobList extends PropertySelectableList<EvAJob> implements Serial
* @param jobList * @param jobList
* @return * @return
*/ */
public static PropertyEditor makeEditor(final Component parent, final EvAJobList jobList) { public static PropertyEditor makeEditor(final Component parent, final OptimizationJobList jobList) {
final GenericArrayEditor genericArrayEditor = new GenericArrayEditor(); final GenericArrayEditor genericArrayEditor = new GenericArrayEditor();
genericArrayEditor.setWithAddButton(false); genericArrayEditor.setWithAddButton(false);
genericArrayEditor.setWithSetButton(false); genericArrayEditor.setWithSetButton(false);
@ -198,20 +198,20 @@ public class EvAJobList extends PropertySelectableList<EvAJob> implements Serial
return genericArrayEditor; return genericArrayEditor;
} }
private static JComponent createStatsPanel(final EvAJobList jobList, final GenericArrayEditor edi) { private static JComponent createStatsPanel(final OptimizationJobList jobList, final GenericArrayEditor edi) {
JParaPanel pan = new JParaPanel(EvAStatisticalEvaluation.statsParams, "Statistics"); JParaPanel pan = new JParaPanel(EvAStatisticalEvaluation.statsParams, "Statistics");
JComponent paraPan = pan.makePanel(); JComponent paraPan = pan.makePanel();
return paraPan; return paraPan;
} }
private static ActionListener getReuseActionListener(final Component parent, final EvAJobList jobList) { private static ActionListener getReuseActionListener(final Component parent, final OptimizationJobList jobList) {
ActionListener al = new ActionListener() { ActionListener al = new ActionListener() {
@Override @Override
public void actionPerformed(ActionEvent e) { public void actionPerformed(ActionEvent e) {
List<EvAJob> jobs = jobList.getSelectedJobs(); List<OptimizationJob> jobs = jobList.getSelectedJobs();
if (jobs.size() == 1) { if (jobs.size() == 1) {
EvAJob job = jobs.get(0); OptimizationJob job = jobs.get(0);
AbstractOptimizationParameters curParams = (AbstractOptimizationParameters) ((AbstractModuleAdapter) jobList.module).getGOParameters(); AbstractOptimizationParameters curParams = (AbstractOptimizationParameters) ((AbstractModuleAdapter) jobList.module).getGOParameters();
curParams.setSameParams((AbstractOptimizationParameters) job.getGOParams()); curParams.setSameParams((AbstractOptimizationParameters) job.getGOParams());
((GenericModuleAdapter) jobList.module).setGOParameters(curParams); ((GenericModuleAdapter) jobList.module).setGOParameters(curParams);
@ -225,13 +225,13 @@ public class EvAJobList extends PropertySelectableList<EvAJob> implements Serial
return al; return al;
} }
private static ActionListener getClearSelectedActionListener(final Component parent, final EvAJobList jobList) { private static ActionListener getClearSelectedActionListener(final Component parent, final OptimizationJobList jobList) {
ActionListener al = new ActionListener() { ActionListener al = new ActionListener() {
@Override @Override
public void actionPerformed(ActionEvent e) { public void actionPerformed(ActionEvent e) {
List<EvAJob> jobs = jobList.getSelectedJobs(); List<OptimizationJob> jobs = jobList.getSelectedJobs();
for (EvAJob j : jobs) { for (OptimizationJob j : jobs) {
j.resetJob(); j.resetJob();
} }
} }