HelpFunctions.java 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. package psoAlgoCode;
  2. import java.util.ArrayList;
  3. import java.util.Collections;
  4. import classes.AbstractCpsObject;
  5. import classes.CpsEdge;
  6. import classes.CpsUpperNode;
  7. import classes.HolonBattery;
  8. import classes.HolonObject;
  9. import classes.HolonSwitch;
  10. import classes.SubNet;
  11. import classes.comparator.EnergyMinToMaxComparator;
  12. import classes.comparator.MinEnergyComparator;
  13. import classes.comparator.WeakestBattery;
  14. import ui.model.Model;
  15. import ui.controller.Control;
  16. import ui.controller.SimulationManager;
  17. public class HelpFunctions {
  18. private ArrayList<AbstractCpsObject> objectsToHandle;
  19. static SimulateSimulator sim;
  20. public static void runRepairConnections(Model model) {
  21. repairAllEdgesOnMainCanvas(model);
  22. }
  23. /**
  24. * Just a helper to avoid problems with destroyed edges etc..
  25. * @param model
  26. */
  27. private static void repairAllEdgesOnMainCanvas(Model model) {
  28. for (AbstractCpsObject obj : model.getObjectsOnCanvas()) {
  29. if (obj instanceof CpsUpperNode) {
  30. repairAllEdgesInUpperNode((CpsUpperNode) obj);
  31. }
  32. for (CpsEdge e : obj.getConnections()) {
  33. e.setWorkingState(true);
  34. }
  35. }
  36. }
  37. /**
  38. * Repair function for Groupnodes.... Should all be handled in a single function if necessary.
  39. * @param uNode
  40. */
  41. private static void repairAllEdgesInUpperNode(CpsUpperNode uNode) {
  42. for (AbstractCpsObject obj : uNode.getNodes()) {
  43. if (obj instanceof CpsUpperNode) {
  44. repairAllEdgesInUpperNode((CpsUpperNode) obj);
  45. }
  46. for (CpsEdge e : obj.getConnections()) {
  47. e.setWorkingState(true);
  48. }
  49. }
  50. }
  51. public static void calculateStateForTimeStepPSO(Model model, Control control) {
  52. //Was not in an if-clause in the students work... dont know why he generated a new simulator everytime the state for a timestep was calculated... maybe causes bugs?
  53. if(sim == null) {
  54. sim = new SimulateSimulator(model);
  55. }
  56. sim.calculateStateForTimeStep(model.getCurIteration());
  57. }
  58. /**
  59. * Another anoying helperfunction which should be part of the general HOLEG functionalities
  60. * @return
  61. */
  62. public static ArrayList<SubNet> getCurrentSubnets(){
  63. return sim.getSubNets();
  64. }
  65. }