Advertisement
Guest User

Untitled

a guest
Jun 23rd, 2018
189
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.43 KB | None | 0 0
  1. # load real data
  2. s = Simulation()
  3. filename_dict = {
  4. 'airbase': 'data/real1/airbases.csv',
  5. 'aircraft': 'data/real1/aircraft.csv',
  6. 'port': 'data/real1/ports.csv',
  7. 'ship': 'data/real1/ships.csv',
  8. 'launcher': 'data/real1/launchers.csv',
  9. 'radar': 'data/real1/radars.csv',
  10. 'sam': 'data/real1/SAMs.csv',
  11. 'aegis_ashore': 'data/real1/Ashore.csv'
  12. }
  13. s.load_entities_from_files(filename_dict)
  14. s.print_state()
  15.  
  16. # simulate distributed attack: 25% radar, 25% SAMs, 25% ashore, 15% airbases, 10% ports
  17. # TODO: Ideally the attacks should be planned. I'm doing it in expectation
  18. # because I'm not sure how to do assign attacks to targets efficiently
  19. # (brute-forcing is an obvious bad idea).
  20. for l in s.launchers:
  21. roll = random.random()
  22. if roll <= .25:
  23. s.schedule_event(0, lambda t: l.launch_missile(t, random.choice(s.radars)))
  24. elif roll > .25 and roll <= .5:
  25. s.schedule_event(0, lambda t: l.launch_missile(t, random.choice(s.sams)))
  26. elif roll > .5 and roll <= .75:
  27. s.schedule_event(0, lambda t: l.launch_missile(t, random.choice(s.aegis_ashores)))
  28. elif roll > .75 and roll <= .9:
  29. s.schedule_event(0, lambda t: l.launch_missile(t, random.choice(s.airbases)))
  30. elif roll > .9:
  31. s.schedule_event(0, lambda t: l.launch_missile(t, random.choice(s.ports)))
  32. s.print_state()
  33.  
  34. while True:
  35. if not s.process_next_event():
  36. break
  37.  
  38. s.print_state()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement