main.py 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. import configparser
  2. from de2.elements import Port
  3. from pypdevs.simulator import Simulator
  4. config = configparser.ConfigParser()
  5. config.read('config.ini')
  6. port = Port("PoAB", config.get('simulation', 'schedule_file'))
  7. sim = Simulator(port)
  8. if config.getboolean('simulation', 'verbose'):
  9. sim.setVerbose(None)
  10. end_time = config.getfloat('simulation', 'end_time')
  11. if end_time > 0:
  12. sim.setTerminationCondition(lambda t, m: t[0] > end_time or m.scheduler.state["index"] >= len(m.scheduler.ivef))
  13. else:
  14. sim.setTerminationCondition(lambda _, m: m.scheduler.state["index"] >= len(m.scheduler.ivef))
  15. timescale = config.getfloat('simulation', 'timescale')
  16. if timescale > 0:
  17. sim.setRealTime(scale=timescale)
  18. if config.getboolean('simulation', 'visualization') and timescale > 0:
  19. from de2.tracer import Streamer
  20. import geoplotlib
  21. from mapper import PoABLayer
  22. streamer = Streamer()
  23. sim.setCustomTracer("de2.tracer", "TracerPort", [streamer])
  24. layer = PoABLayer(sim, streamer)
  25. geoplotlib.set_window_size(640, 760)
  26. geoplotlib.tiles_provider({
  27. 'url': lambda zoom, xtile, ytile: 'https://tile.openstreetmap.org/%d/%d/%d.png' % (zoom, xtile, ytile),
  28. 'tiles_dir': 'mytiles',
  29. 'attribution': 'Map tiles by OpenStreetMap Carto, under CC BY 3.0. Data @ OpenStreetMap contributors.'
  30. })
  31. geoplotlib.add_layer(layer)
  32. geoplotlib.show()
  33. else:
  34. sim.simulate()
  35. if config.getboolean('simulation', 'statistics'):
  36. sim.model.print_statistics()