Pergunta

Eu trabalho com muitos modelos e simulações diferentes. Alguns dos modelos mais antigos e simulações são escritos em Fortran. Alguns desses modelos foram convertidos para C ++, mas a tendência atual é a de criar esses modelos usando MATLAB / SIMULINK. De uma perspectiva de ciência da computação eu sempre senti MATLAB / SIMULINK não era uma boa solução. Que linguagem você usa para criar modelos e simulações e por quê?

Foi útil?

Solução

Eu também trabalho com um monte de código legado, a maior parte em Fortran. Eu realmente não se importa com Fortran - todos os compiladores modernos permitem nomes de variáveis ??maiores do que o velho e bobo limite de 6 caracteres. Além disso, com Fortran 95, você pode até fazer OOP se você sentir que suas modificações para a base de código existente seriam beneficiados.

Além disso, existem muito bons editores de código para Fortran, o que nem sempre é o caso de linguagens de script mais especializadas.

C ++ tem a grande desvantagem de considerações de memória. Tenho vindo a programação C / C ++ para mais de 20 anos agora, e eu ainda se esqueça de objetos de exclusão e devidamente preencher destruidores.

Em uma nota final, se você estiver usando o Windows, há um Fortran.NET compilador (acho que a partir de Lahey-Fujitsu?) Se você quer mover seu Fortran para um ambiente gerenciado.

Boa sorte!

Outras dicas

Eu sempre tentar usar a linguagem que é fornecido pelo melhor modelagem e simulação ferramenta (ou biblioteca, se quiser) para fazer o trabalho para mim.

E esta questão só pode realmente ser respondidas tomando em consideração o que tipos de modelos que você deseja implementar. Contínuos (por exemplo ODEs), discretas (por exemplo diagrama de estados, Redes de Petri), ou uma combinação (isto é, um modelo híbrido, como pode ser implementado com Simulink + Stateflow)? Existem várias ferramentas para cada tipo de modelo.

Outro aspecto importante seria o domínio em que você está trabalhando. Simulink tem muito extensas bibliotecas para engenharia elétrica, finanças, ou a biologia computacional (a maioria deles são incluídos nos pacotes adicionais, embora) - se você trabalha em um desses campos, não pode ser simplesmente não é melhor (isto é completo, válido) biblioteca de componentes . O mesmo vale para outros pacotes de simulação comerciais, como anylogic , Arena , etc. também pode haver algumas ferramentas de simulação de código aberto, dependendo do seu problema de modelagem.

Finalmente, você pode preferir uma linguagem de programação específica sobre o outro, e você pode ter requisitos adicionais, por exemplo, suporte para

  • Optimization (dos parâmetros do modelo)
  • Validação
  • A análise de saída (estatísticas, gráficos, testes estatísticos)
  • Suporte para paralela e simulação distribuída
  • verificação Modelo
  • ...

Então, eu estou actualmente a trabalhar com Java com as vantagens bem conhecidas - razoavelmente rápido, bom suporte para multi-threading, relativamente simples de usar etc. Mas se 'razoavelmente rápido' não é rápido o suficiente, pode haver nenhuma opção mas vai descer um nível de abstração: -)

SIMULA é claro !! : -)

O que eu tenho saído do MATLAB, é a habilidade para deixar-me rapidamente protótipos de um algoritmo. Eu realmente pode obter uma boa sensação para os dados traçando-o e usando o construído em funções estatísticas. Ao tentar algo novo, eu posso fazer rápida algo e sujo para obter alguns resultados iniciais, em seguida, voltar e as coisas limpas até refinar meus resultados. Com linguagens compiladas, há muito mais que eu tenho que fazer apenas para obter a simulação de corrida. Com MATLAB, eu gastar mais tempo pensando sobre o problema real, e menos sobre a compilação, ligando, gerenciamento de memória, etc.

No entanto, existem muitos problemas que MATLAB é apenas mal equipado para resolver. Para grandes conjuntos de dados, uma linguagem compilada com estruturas de dados definidos pelo usuário é quase certamente necessário.

A física de partículas foi se mudar para C ++ e Python. Este não é universal, e provavelmente não iria mesmo estar perto se não fosse para a onipresença da ROOT .

utilização de meios cint de raiz que você precisava se preocupar com o gerenciamento de memória quando você está dinking ao redor com uma idéia nova, é a capacidade de executar compilado lhe permite ter velocidade, a capacidade de misturar os modos é muito útil, e as ligações para python e outras linguagens RAD permitem uma grande flexibilidade.

Em um sentido muito real, isso se resume a um endosso de roland 's ponto .

Você pode usar bloco de s-funcuin para ligar fortran (C, C ++) com Matlab.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top