|
@@ -24,7 +24,9 @@ import javax.swing.JTextField;
|
|
import javax.swing.border.EmptyBorder;
|
|
import javax.swing.border.EmptyBorder;
|
|
|
|
|
|
import api.CpsAlgorithm;
|
|
import api.CpsAlgorithm;
|
|
|
|
+import classes.CpsUpperNode;
|
|
import classes.HolonObject;
|
|
import classes.HolonObject;
|
|
|
|
+import classes.HolonSwitch;
|
|
import ui.controller.Control;
|
|
import ui.controller.Control;
|
|
import ui.model.Model;
|
|
import ui.model.Model;
|
|
|
|
|
|
@@ -57,6 +59,24 @@ public class PSO implements CpsAlgorithm {
|
|
temp.add(obj.getElements().get(j).isActive());
|
|
temp.add(obj.getElements().get(j).isActive());
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
+ else {
|
|
|
|
+ if(model.getObjectsOnCanvas().get(i) instanceof CpsUpperNode) {
|
|
|
|
+ CpsUpperNode tmp = (CpsUpperNode) model.getObjectsOnCanvas().get(i);
|
|
|
|
+ for( int j = 0; j < tmp.getNodes().size(); j++) {
|
|
|
|
+ /*if(tmp.getNodes().get(j) instanceof HolonSwitch){
|
|
|
|
+ HolonSwitch tmpSW = (HolonSwitch) tmp.getNodes().get(j);
|
|
|
|
+ information.getCoord(0).addElement(tmpSW.getState())
|
|
|
|
+ ;
|
|
|
|
+ }*/
|
|
|
|
+ if (tmp.getNodes().get(j) instanceof HolonObject) {
|
|
|
|
+ HolonObject obj = ((HolonObject) tmp.getNodes().get(j));
|
|
|
|
+ for (int k = 0; k < obj.getElements().size(); k++) {
|
|
|
|
+ temp.add(obj.getElements().get(k).isActive());
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
}
|
|
}
|
|
information.setCoord(temp, 1);
|
|
information.setCoord(temp, 1);
|
|
System.out.println("Information received: " + information.toString());
|
|
System.out.println("Information received: " + information.toString());
|
|
@@ -65,6 +85,7 @@ public class PSO implements CpsAlgorithm {
|
|
|
|
|
|
public static void applyBestConfig(Coordinate<Vector<Object>> bestConfig, Model model, Control controller) {
|
|
public static void applyBestConfig(Coordinate<Vector<Object>> bestConfig, Model model, Control controller) {
|
|
System.out.println("Applying configuration: " + bestConfig.toString());
|
|
System.out.println("Applying configuration: " + bestConfig.toString());
|
|
|
|
+ System.out.println("Config size: " + bestConfig.getCoord(1).size());
|
|
for (int i = 0; i < model.getSwitches().size(); i++) {
|
|
for (int i = 0; i < model.getSwitches().size(); i++) {
|
|
model.getSwitches().get(i).setManualMode(true);
|
|
model.getSwitches().get(i).setManualMode(true);
|
|
model.getSwitches().get(i).setManualState((boolean) bestConfig.getCoord(0).get(i));
|
|
model.getSwitches().get(i).setManualState((boolean) bestConfig.getCoord(0).get(i));
|
|
@@ -76,11 +97,22 @@ public class PSO implements CpsAlgorithm {
|
|
((HolonObject) model.getObjectsOnCanvas().get(j)).getElements().get(h)
|
|
((HolonObject) model.getObjectsOnCanvas().get(j)).getElements().get(h)
|
|
.setActive((boolean) bestConfig.getCoord(1).get(position));
|
|
.setActive((boolean) bestConfig.getCoord(1).get(position));
|
|
position++;
|
|
position++;
|
|
-
|
|
|
|
}
|
|
}
|
|
-
|
|
|
|
- // HolonObject tmp = (HolonObject) model.getObjectsOnCanvas().get(j);
|
|
|
|
- // System.out.println("object number: " + tmp.getId() + " with current state: " + tmp.getState());
|
|
|
|
|
|
+ }
|
|
|
|
+ else {
|
|
|
|
+ if(model.getObjectsOnCanvas().get(j) instanceof CpsUpperNode) {
|
|
|
|
+ CpsUpperNode tmp = (CpsUpperNode) model.getObjectsOnCanvas().get(j);
|
|
|
|
+ for( int k = 0; k < tmp.getNodes().size(); k++) {
|
|
|
|
+ if (tmp.getNodes().get(k) instanceof HolonObject) {
|
|
|
|
+ HolonObject obj = ((HolonObject) tmp.getNodes().get(k));
|
|
|
|
+ for (int l = 0; l < obj.getElements().size(); l++) {
|
|
|
|
+ obj.getElements().get(l).setActive((boolean) bestConfig.getCoord(1).get(position));
|
|
|
|
+ position++;
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
|
|
}
|
|
}
|
|
@@ -293,9 +325,15 @@ public class PSO implements CpsAlgorithm {
|
|
|
|
|
|
for(int i =0; i<nr_runs; i++) {
|
|
for(int i =0; i<nr_runs; i++) {
|
|
//applyBestConfig(startPos, model, controller);
|
|
//applyBestConfig(startPos, model, controller);
|
|
|
|
+ System.out.println("Startpos size:" + startPos.getCoord(1).size() + " in " + i + " : " + startPos.toString() );
|
|
pso = new SimplePSO(model, controller, startPos);
|
|
pso = new SimplePSO(model, controller, startPos);
|
|
|
|
+
|
|
|
|
+ long startTime = System.currentTimeMillis();
|
|
|
|
+
|
|
pso.caclSimplePSO(model, controller, startPos);
|
|
pso.caclSimplePSO(model, controller, startPos);
|
|
- System.out.println("Startpos in " + i + " : " + startPos.toString() );
|
|
|
|
|
|
+
|
|
|
|
+ long endTime = System.currentTimeMillis();
|
|
|
|
+ System.out.println("Computation time is: " + (endTime - startTime));
|
|
//HelpFunctions.runRepairConnections(model);
|
|
//HelpFunctions.runRepairConnections(model);
|
|
controller.addTextToConsole("Global best is " + pso.getGBRecord().get(Constants.MAX_ITERATION - 1));
|
|
controller.addTextToConsole("Global best is " + pso.getGBRecord().get(Constants.MAX_ITERATION - 1));
|
|
//applyBestConfig(pso.getBestConfig(), model, controller);
|
|
//applyBestConfig(pso.getBestConfig(), model, controller);
|
|
@@ -318,7 +356,8 @@ public class PSO implements CpsAlgorithm {
|
|
e1.printStackTrace();
|
|
e1.printStackTrace();
|
|
}
|
|
}
|
|
//if (graph.isSelected()) {
|
|
//if (graph.isSelected()) {
|
|
-
|
|
|
|
|
|
+ applyBestConfig(startPos, model, controller);
|
|
|
|
+
|
|
}
|
|
}
|
|
applyBestConfig(currentBestConfig, model, controller);
|
|
applyBestConfig(currentBestConfig, model, controller);
|
|
controller.addTextToConsole(
|
|
controller.addTextToConsole(
|