Язык моделирования и имитационного программирования [закрыт]

StackOverflow https://stackoverflow.com/questions/945846

Вопрос

Я работаю со многими различными моделями и симуляциями.Некоторые из старых моделей и симуляций написаны на FORTRAN.Некоторые из этих моделей были преобразованы в C ++, но текущая тенденция заключается в создании этих моделей с использованием MATLAB / SIMULINK.С точки зрения информатики я всегда считал, что MATLAB / SIMULINK не является хорошим решением.Какой язык вы используете для создания моделей и симуляции и почему?

Это было полезно?

Решение

Я также работаю с большим количеством устаревшего кода, большая часть которого написана на Фортране.Я действительно не против использования Фортрана - все современные компиляторы допускают имена переменных, превышающие старый и глупый предел в 6 символов.Кроме того, с помощью Fortran 95 вы даже можете использовать ООП, если чувствуете, что ваши изменения в существующей кодовой базе принесут пользу.

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

C++ имеет большой недостаток, связанный с памятью.Я программирую на C/C++ уже более 20 лет, но до сих пор забываю удалять объекты и правильно заполнять деструкторы.

И последнее замечание: если вы используете Windows, существует компилятор Fortran.NET (думаю, от Lahey-Fujitsu?), если вы хотите переместить свой Fortran в управляемую среду.

Удачи!

Другие советы

Я всегда старался использовать язык, который обеспечивает лучшее моделирование и симуляция. инструмент (или библиотеку, если хотите), чтобы сделать всю работу за меня.

И на этот вопрос действительно можно ответить, только приняв во внимание то, что виды моделей, которые вы хотите реализовать.Непрерывный (например,ОДУ), дискретные (например.StateCharts, сети Петри) или их комбинацию (т.е.гибридная модель, которую можно реализовать с помощью Simulink+StateFlow)?Для каждого типа модели существуют различные инструменты.

Еще одним важным аспектом может стать домен в котором вы работаете.Simulink имеет довольно обширные библиотеки для электротехники, финансов или вычислительной биологии (хотя большинство из них включены в дополнительные пакеты) — если вы работаете в одной из этих областей, лучшего варианта просто не найти (т.полная, действительная) библиотека компонентов.То же самое касается и других пакетов коммерческого моделирования, таких как AnyLogic, Арена, и т. д.В зависимости от вашей задачи моделирования также могут существовать некоторые инструменты моделирования с открытым исходным кодом.

Наконец, вы можете предпочесть определенный язык программирования другому, и у вас могут быть дополнительные требования, например.Поддержка для

  • Оптимизация (параметров модели)
  • Проверка
  • Анализ результатов (статистика, графики, статистические тесты)
  • Поддержка параллельного и распределенного моделирования.
  • Проверка модели
  • ...

Итак, в настоящее время я работаю с Java с хорошо известными преимуществами — достаточно быстрая, хорошая поддержка многопоточности, относительно простая в использовании и т. д.Но если «разумно быстро» недостаточно быстро, возможно, не останется другого выбора, кроме как спуститься на один уровень абстракции :-)

СИМУЛЯЦИЯ , конечно !!:-)

Что я получил от MATLAB, так это возможность быстро создать прототип алгоритма.Я действительно могу получить хорошее представление о данных, построив их график и используя встроенные статистические функции.Пробуя что-то новое, я могу сделать что-то быстрое и грязное, чтобы получить первоначальные результаты, а затем вернуться и все подчистить, чтобы уточнить результаты.При использовании компилируемых языков мне приходится делать гораздо больше, чтобы запустить симуляцию.С MATLAB я трачу больше времени на размышления о реальной проблеме, а не на компиляцию, связывание, управление памятью и т. д.

Однако существует множество проблем, для решения которых MATLAB просто не способен.Для больших наборов данных почти наверняка необходим компилируемый язык с определяемыми пользователем структурами данных.

Физика элементарных частиц перешла на C++ и Python.Это не универсально и, вероятно, даже не было бы таковым, если бы не повсеместность КОРЕНЬ.

Использование root'ом cint означает, что вам нужно беспокоиться об управлении памятью, когда вы обдумываете новую идею, его способность запускать компиляцию позволяет вам иметь скорость, возможность смешивать режимы очень полезна, а привязки для Python и других Языки RAD обеспечивают большую гибкость.

В самом прямом смысле это сводится к одобрению Роландточка.

вы можете использовать блок s-funcuin для связывания fortran(c, c++) с matlab.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top