Advertisement
Guest User

Untitled

a guest
Jun 26th, 2017
63
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.94 KB | None | 0 0
  1. package game.systems;
  2.  
  3. import factorys.PopulateWorld;
  4. import game.systems.abstractDef.AbstractSystem;
  5. import game.systems.aiSubSystems.*;
  6.  
  7. import java.util.ArrayList;
  8. import java.util.stream.IntStream;
  9.  
  10. import agentDefinitions.AgentWorld;
  11. import agentDefinitions.EvaderAgent;
  12.  
  13. public class ResetSimulationSystem extends AbstractSystem {
  14.  
  15. private long simulationStartMs;
  16.  
  17. public static ArrayList<Double> timeTakenPerSimulation = new ArrayList<Double>();
  18.  
  19. public ResetSimulationSystem() {
  20. simulationStartMs = System.currentTimeMillis();
  21. }
  22.  
  23. int numRun = 0;
  24. int numRunsPerExperiment = 100;
  25.  
  26. @Override
  27. public void proccessStep(AgentWorld world, float delta) {
  28.  
  29. if (!anyEvaderLeftAlive(world)) {
  30. for (int i = 0; i < world.getAllAgents().size(); i++) {
  31. world.getAllAgents().get(i).setDead(true);
  32. }
  33. numRun++;
  34. double timeTaken = (System.currentTimeMillis() - simulationStartMs) / 1000.0;
  35. System.out.println(numRun + ": " + timeTaken);
  36. timeTakenPerSimulation.add(timeTaken);
  37.  
  38. if (timeTakenPerSimulation.size() == numRunsPerExperiment) {
  39. PursuerSearchCoefficients.getCoefs();
  40. PursuerPursuitCoefficients.getCoefs();
  41. EvaderEvasionCoefficients.getCoefs();
  42. double sum = 0;
  43. for (double val:
  44. timeTakenPerSimulation) {
  45. sum += val;
  46. }
  47.  
  48. System.out.println("Sum: \t" + sum);
  49. System.out.println("Average: \t" + sum/numRunsPerExperiment);
  50. setNewParameters();
  51. }
  52.  
  53. PopulateWorld.addAllAgents(world);
  54. simulationStartMs = System.currentTimeMillis();
  55. }
  56. }
  57.  
  58. private void setNewParameters() {
  59. CoefficientFactory.USED_PURSUER_COEFFICIENTS = new PursuerCoefficients();
  60. CoefficientFactory.USED_EVADER_COEFFICIENTS = new EvaderCoefficients();
  61. }
  62.  
  63. private boolean anyEvaderLeftAlive(AgentWorld world) {
  64. // Returns if the agent list contains any evader agents
  65. return world.getAllAgents().stream().anyMatch(a -> a.getClass() == EvaderAgent.class);
  66. }
  67.  
  68. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement