Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # load real data
- s = Simulation()
- filename_dict = {
- 'airbase': 'data/real1/airbases.csv',
- 'aircraft': 'data/real1/aircraft.csv',
- 'port': 'data/real1/ports.csv',
- 'ship': 'data/real1/ships.csv',
- 'launcher': 'data/real1/launchers.csv',
- 'radar': 'data/real1/radars.csv',
- 'sam': 'data/real1/SAMs.csv',
- 'aegis_ashore': 'data/real1/Ashore.csv'
- }
- s.load_entities_from_files(filename_dict)
- s.print_state()
- # simulate distributed attack: 25% radar, 25% SAMs, 25% ashore, 15% airbases, 10% ports
- # TODO: Ideally the attacks should be planned. I'm doing it in expectation
- # because I'm not sure how to do assign attacks to targets efficiently
- # (brute-forcing is an obvious bad idea).
- for l in s.launchers:
- roll = random.random()
- if roll <= .25:
- s.schedule_event(0, lambda t: l.launch_missile(t, random.choice(s.radars)))
- elif roll > .25 and roll <= .5:
- s.schedule_event(0, lambda t: l.launch_missile(t, random.choice(s.sams)))
- elif roll > .5 and roll <= .75:
- s.schedule_event(0, lambda t: l.launch_missile(t, random.choice(s.aegis_ashores)))
- elif roll > .75 and roll <= .9:
- s.schedule_event(0, lambda t: l.launch_missile(t, random.choice(s.airbases)))
- elif roll > .9:
- s.schedule_event(0, lambda t: l.launch_missile(t, random.choice(s.ports)))
- s.print_state()
- while True:
- if not s.process_next_event():
- break
- s.print_state()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement