Domanda

Io lavoro con molti diversi modelli e simulazioni.Alcuni dei vecchi modelli e le simulazioni sono scritti in FORTRAN.Alcuni di questi modelli sono stati convertiti in C++, ma il trend attuale è quello di creare questi modelli di utilizzo di MATLAB/SIMULINK.Da un computer science prospettiva ho sempre sentito MATLAB/SIMULINK non era una buona soluzione.In che linguaggio si usa per la creazione di modelli e simulazioni e perché?

È stato utile?

Soluzione

Lavoro anche con un sacco di codice legacy, la maggior parte di esso in Fortran. Io davvero non mente utilizzando Fortran - tutti i compilatori moderni consentono nomi di variabili superiore al limite di vecchio e stupido 6 caratteri. Inoltre, con il Fortran 95, si può anche fare OOP se si sente che le modifiche al codice di base esistente trarrebbero beneficio.

Inoltre, ci sono editor di codice molto buoni per Fortran, che non è sempre il caso per linguaggi di script più specializzati.

C ++ ha il grande svantaggio di considerazioni di memoria. Sono stato di programmazione C / C ++ per 20 anni, e ho ancora dimenticato di eliminare gli oggetti e adeguatamente compilo distruttori.

In una nota finale, se si utilizza Windows, v'è un compilatore Fortran.NET (credo da Lahey-Fujitsu?) Se si desidera spostare il Fortran ad un ambiente gestito.

In bocca al lupo!

Altri suggerimenti

Ho sempre cercato di usare il linguaggio che è fornito da il meglio di modellazione e simulazione strumento (o di una biblioteca, se vi piace) per fare il lavoro per me.

E a questa domanda non può essere risolta tenendo conto di ciò che tipi di modelli che si desidera implementare.Continuo (ad es.Odi), discreto (es.Diagrammi di stato, Reti di Petri), o una combinazione dei due (cioèun modello ibrido, come può essere implementato con Simulink+StateFlow)?Ci sono vari strumenti per ogni tipo di modello.

Un altro aspetto importante sarebbe il dominio in cui si sta lavorando.Simulink è piuttosto ampia, librerie per l'ingegneria elettrica, finanza, o di biologia computazionale (la maggior parte di essi sono inclusi in pacchetti aggiuntivi, però), se si lavora in uno di quei campi, ci potrebbe essere semplicemente il migliore (cioècompleta, valida) libreria dei componenti.Lo stesso vale per altri commerciali pacchetti di simulazione, come AnyLogic, Arena, etc.Ci potrebbe anche essere qualche open-source di strumenti di simulazione, a seconda del problema della modellazione.

Infine, si potrebbe preferire un linguaggio di programmazione specifico, rispetto ad un altro, e si potrebbero avere ulteriori esigenze, ad esempiosupporto per

  • Ottimizzazione dei parametri del modello)
  • Convalida
  • Uscita di analisi (statistiche, grafici, test statistici)
  • Il supporto per la simulazione parallela e distribuita
  • Il controllo del modello
  • ...

Quindi, attualmente sto lavorando in Java con i ben noti vantaggi - ragionevolmente veloce, un buon supporto per il multi-threading, relativamente semplice da usare etc.Ma se 'ragionevolmente veloce" non è abbastanza veloce, ci potrebbe essere alcuna opzione, ma scendendo di un livello di astrazione :-)

SIMULA ovviamente !! : -)

Quello che ho ottenuto fuori MATLAB è la sua capacità di farmi prototipo rapidamente un algoritmo. Posso davvero ottenere una buona sensazione per i dati tracciando esso e con il costruito nel funzioni statistiche. Quando si cerca qualcosa di nuovo, posso fare qualcosa di veloce e sporco per ottenere alcuni risultati iniziali, poi tornare indietro e le cose pulite fino a perfezionare i miei risultati. Con linguaggi compilati, c'è molto di più che devo fare solo per ottenere la simulazione per l'esecuzione. Con MATLAB, passo più tempo a pensare al vero problema, e meno sulla compilazione, linking, la gestione della memoria, ecc.

Tuttavia, ci sono molti problemi che MATLAB è solo mal equipaggiate per risolvere. Per i grandi insiemi di dati, un linguaggio compilato con strutture di dati definiti dall'utente è quasi certamente necessario.

La fisica delle particelle si è mossa per C ++ e Python. Questo non è universale, e probabilmente non sarebbe nemmeno essere vicino se non fosse per l'ubiquità di ROOT .

l'uso di Radice di cint significa che è necessario perdere tempo con la gestione della memoria quando si è dinking in giro con una nuova idea, è la capacità di eseguire compilato consente di avere la velocità, la capacità di mescolare i modi è molto disponibile, e le associazioni per pitone e altri RAD lingue consentono una grande flessibilità.

In un certo senso, questo si riduce a un avallo di roland 's punto .

è possibile utilizzare blocchi s-funcuin per il collegamento FORTRAN (C, C ++) con Matlab.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top