2010-10-22 2 views
11

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

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

+0

Если вам удобно с Python, вы можете попробовать GarlicSim, который позволит вам выполнять симуляции на основе агентов. (Я никогда не пробовал это за тысячи, но я не думаю, что с этим возникнут проблемы.) –

ответ

0

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

+1

Самостоятельное продвижение? –

+1

self prmotions разрешен, если он соответствует контексту его в (его ответе) –

1

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

3

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

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

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

+0

, пожалуйста, разместите ссылку на пример Verilog, выполняющий простой пример DES. Спасибо – gatorback

+0

@gatorback Я не уверен, что мне когда-либо казалось, что кто-то еще это делает.Я уверен, что они есть, но единственным примером, о котором я знаю, является вышеупомянутый проект, который я сделал, и я понятия не имею, где я помещаю этот код. –

3

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

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

Вы можете взглянуть на интро (возможно, немного устарел) в http://www.arcos.inf.uc3m.es/~jdaniel/seminarios/omnet2/index.html

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

2

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

1

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

Смежные вопросы