Dimensions icon indicating copy to clipboard operation
Dimensions copied to clipboard

Allow for event based engines

Open StoneT2000 opened this issue 5 years ago • 0 comments

Current engine uses by default, and can only use COMMAND_STREAM_TYPE.SEQUENTIAL which means the stream of command sent by agents are aggregated together and all sent to the design's update function, effectively creating a turn based engine.

Proposal to add in COMMAND_STREAM_TYPE.PARALLEL which means the stream of commands sent by agents are stored into a queue as they are sent and the engine sends to the design x commands at a time.

Each time a set of commands are processed, every agent is / (should be) sent an update (asynchronously). This means that bots can be working on out of data information if they don't wait for the next update (which can also be a bad move).

Also means kits may need to handle several rounds of new updates before continuing if the bot spent too long on one command.

Issues:

  • different languages run at very different speeds, making python a very poor choice and c++ a good choice. This could possible be addressed with looking into running a script automatically measuring how much slower a program e.g. sorting is and slowing down all faster programs by a factor.
  • could be very I/O intensive, with more match updates sent to all agents

StoneT2000 avatar Oct 21 '20 02:10 StoneT2000