2009-06-03 3 views
4

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

+0

Мне действительно интересно, почему вы чувствуете, что MATLAB/SIMULINK не являются хорошими решениями для моделирования. У вас есть конкретные причины, по которым вы им не нравитесь/не чувствуете, что они применимы к вашим моделям? – gnovice

+0

Это могут быть только приложения, которые я видел, но все они выполняются очень медленно и не в полной мере используют доступные компьютерные ресурсы. – SchwartzE

+0

См. Этот вопрос: [http://stackoverflow.com/questions/179904/what-is-matlab-good-for-why-is-it-so-used-by-universities-when-is-it-better -tha] (http://stackoverflow.com/questions/179904/what-is-matlab-good-for-why-is-it-so-used-by-universities-when-is-it-better-tha) – MatlabDoug

ответ

4

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

Также есть очень хорошие редакторы кода для Fortran, что не всегда относится к более специализированным языкам скриптов.

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

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

Удачи вам!

7

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

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

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

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

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

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

1

Физика частиц движется к C++ и python. Это не универсально, и, вероятно, даже не было бы близко, если бы не вездесущность ROOT.

Использование Root в cint означает, что вам нужно беспокоиться об управлении памятью, когда вы окунаетесь с новой идеей, ее способность запускать скомпилированную версию позволяет вам иметь скорость, очень полезно сочетать режимы, а привязки для python и других языков RAD обеспечивают большую гибкость.

В очень реальном смысле это сводится к одобрению roland's point.

4

SIMULA конечно !! :-)

+0

+1 Когда я прочитал вопрос, я обсуждал вопрос о том, отправлять ли ответ или, скорее, просто комментарий с указателем на [SIMULA] [1] [1]: http://en.wikipedia.org/wiki/Симула –

2

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

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

0

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

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