Jump to content

How to handle large number of active entities


rubchone

Recommended Posts

I'm trying to initialize a model with over a 100,000 entities of the same type. However, when I do so, I get a warning "the number of active entities in the simulation has exceeded 20,000 objects". If I continue, Simio basically crashes after a few minutes.


I tried to scale everything down by a factor of 1000, but then when I try to create entities in quantities < 1, it doesn't seem any entities get created.


So my question is how do I balance out the need to have 100,000+ entities and the need to be able to create new ones on a much smaller scale (10s for example).


Thanks in advance for any help with this.

Link to comment
Share on other sites

Simio has no limits. 100,000 entities is high, but not huge. Simio is limited only by the memory that your hardware and your OS make available to it. And if you are using Simio 32 bit version (the default), it can only access a limited amount of memory.


1) Verify that you really need that many concurrent entities. Is there a better approach? For example if you are creating all your entities at time 0 perhaps you can instead create them just in time. (See other ideas below)

2) Does the machine you are running on have enough memory?

3) Are you using a 64 bit OS so all your system memory is made available to applications.

4) If necessary you can run in 64 bit Simio (look for Simio64.exe in the same folder). Only do this if necessary because this will run slower.

5) If none of the above work out, then it is time to look at ways to approximate your system is other ways that would allow you to run effectively:

--That could include making 1 entity represent 10 or more. This would NOT let you create 0.1 entity (hence the approximation), but instead of creating 100,000, you would create 10,000. Depending on what you want to do this approximation might be appropriate.

--Possibly a Flow Library approach could be a better approximation.

--Or maybe a continuous or systems dynamic approach.

--If your entities represent an inventory of some type, perhaps put their information in an array or write it to a file, then destroy the entity. If necessary you could recreate from the saved information.

Link to comment
Share on other sites

Hi Dave,


Thanks so much for the quick reply. I took your advice and scaled everything down by 10. At least this way, everything runs pretty quickly and I can focus on building in the rest of the logic. The sim actually does run without scaling down in 64-bit mode (it may run in 32-bit mode, but I perhaps did not wait sufficiently long), but it is quite slow.


Thanks again!

Bruce

Link to comment
Share on other sites

  • 1 year later...
On ‎4‎/‎2‎/‎2017 at 4:29 AM, dsturrock said:

(...)

--If your entities represent an inventory of some type, perhaps put their information in an array or write it to a file, then destroy the entity. If necessary you could recreate from the saved information.

Is there an example or a SimBit which shows how to do this?

  • Like 2
Link to comment
Share on other sites

  • 4 years later...
×
×
  • Create New...