Подтвердить что ты не робот

Дискретные симуляторы событий для С++

В настоящее время я ищу дискретный симулятор событий, написанный для С++. Я не нашел много в Интернете, написанном специально в стиле OO; есть некоторые, но устаревшие. Некоторые другие, такие как Opnet, Omnet и ns3, слишком сложны для того, что мне нужно делать. И кроме того, мне нужно моделировать агенты-алгоритмы, способные имитировать системы тысяч узлов.

Кто-нибудь знает что-нибудь подходящее для моих нужд?

4b9b3361

Ответ 1

У других есть хорошие прямые ответы, но я собираюсь предложить альтернативу. Если я правильно понимаю, вам нужна система на С++ или такая, где вы можете публиковать события, которые запускаются в будущем, а код запускается, когда эти события срабатывают.

У меня был проект для этого, и я начал писать такую ​​систему событий на С++, а затем быстро понял, что у меня есть лучшее решение.

Рассматривали ли вы возможность писать свою программу в поведенческом Verilog? Может показаться странным писать программное обеспечение на языке описания аппаратного обеспечения, но симулятор Verilog - это система, основанная на событиях, а поведенческая Verilog - очень удобный способ выражения событий, времени, триггеров и т.д. Существует бесплатный симулятор Verilog ( который я использовал) называется Icarus Verilog. Если вы не используете Ubuntu или какой-либо дистрибутив Linux с Icarus уже в пакете, создание из исходного кода является простым.

Ответ 2

Я бы порекомендовал еще раз взглянуть на OmNet++. На первый взгляд это может показаться довольно сложным, но если вы посмотрите на него более подробно, вы обнаружите, что большая часть сложности заключается в сетевом дополнении (INET Framework). Если вы не собираетесь проводить подробное сетевое моделирование, вам не нужен INET.

Использование ядра OmNet++ не представляет особой сложности и может быть проще, чем другие подобные инструменты.

Вы можете захотеть взглянуть на вступление.

Одной из вещей, которые делают OmNet++ привлекательным для меня, является его масштабируемость. Возможно запускать большие симуляции на рабочем столе. Кроме того, такую же симуляцию можно масштабировать до кластера без переписывания кода.

Ответ 3

Вы должны рассмотреть SystemC, хотя я бы также рекомендовал второй взгляд на OmNet ++.

Ответ 4

Существует CSIM из Mesquite Software, который поддерживает разработку моделей на C, С++ и Java. Однако он платный-коммерческий, AFAIK.

Ответ 5

Мы используем SIMLIB в моей школе. Это очень быстрый, понятный, объектно-ориентированный, дискретный и непрерывный симулятор. Он может выглядеть устаревшим, но он по-прежнему поддерживается.

Ответ 6

Взгляните на библиотеку GBL. Он написан на современном С++ и даже поддерживает функции С++ 0x, такие как перемещение семантики и лямбда-функций. Он предлагает несколько механизмов моделирования: синхронные и асинхронные обработчики событий, превентивные потоки и волокна. Вы можете создавать чисто поведенческие, циклические точные и модели реального времени или любую их смесь.