문제

저는 다양한 모델과 시뮬레이션을 사용하여 작업합니다.이전 모델과 시뮬레이션 중 일부는 FORTRAN으로 작성되었습니다.이러한 모델 중 일부는 C++로 변환되었지만 현재 추세는 MATLAB/SIMULINK를 사용하여 이러한 모델을 만드는 것입니다.컴퓨터 과학의 관점에서 저는 MATLAB/SIMULINK가 좋은 솔루션이 아니라고 항상 느꼈습니다.모델과 시뮬레이션을 만들 때 어떤 언어를 사용하며 그 이유는 무엇입니까?

도움이 되었습니까?

해결책

또한 많은 레거시 코드와 함께 작업합니다. 나는 Fortran을 사용하는 것을 정말로 신경 쓰지 않습니다. 모든 최신 컴파일러는 기존 및 바보 같은 6 문자 제한보다 가변 이름을 허용합니다. 또한 Fortran 95를 사용하면 기존 코드베이스에 대한 수정이 도움이 될 것이라고 생각되면 OOP를 수행 할 수도 있습니다.

또한 Fortran을위한 매우 좋은 코드 편집기가 있으며, 이는 항상보다 전문 스크립트 언어의 경우는 아닙니다.

C ++는 메모리 고려 사항의 큰 단점이 있습니다. 나는 지금 20 년 이상 C/C ++를 프로그래밍 해 왔으며 여전히 물체를 삭제하고 소멸자를 올바르게 채우는 것을 잊어 버렸습니다.

마지막으로 Windows를 사용하는 경우 Fortran을 관리 환경으로 옮기려는 경우 Fortran.net 컴파일러가 있습니다 (Lahey-Fujitsu에서 생각하십니까?).

행운을 빕니다!

다른 팁

나는 항상 최고의 모델링 및 시뮬레이션에서 제공하는 언어를 사용하려고 노력할 것입니다. 도구 (또는 원하는 경우 도서관) 나를 위해 일을하려고합니다.

그리고이 질문은 실제로 무엇을 고려함으로써 대답 할 수 있습니다. 종류 구현하려는 모델의. 연속 (예 : ODE), 개별 (예 : STATECHARTS, PETRI NETS) 또는 조합 (즉, Simulink+StateFlow로 구현할 수있는 하이브리드 모델)? 각 종류의 모델에 대한 다양한 도구가 있습니다.

또 다른 중요한 측면은 다음과 같습니다 도메인 당신이 일하는 곳. Simulink는 전기 공학, 금융 또는 계산 생물학을위한 광범위한 라이브러리를 보유하고 있습니다 (대부분은 추가 패키지에 포함되어 있음) - 해당 분야 중 하나에서 작업하면 단순히 더 나은 (예 : 완전하고 유효한) 구성 요소 라이브러리가 없을 수 있습니다. . 다른 상업용 시뮬레이션 패키지도 마찬가지입니다. anylogic, 투기장, 모델링 문제에 따라 오픈 소스 시뮬레이션 도구가있을 수도 있습니다.

마지막으로, 다른 프로그래밍 언어보다 특정 프로그래밍 언어를 선호 할 수 있으며 추가 요구 사항이있을 수 있습니다.

  • 최적화 (모델 매개 변수)
  • 확인
  • 출력 분석 (통계, 플롯, 통계 테스트)
  • 병렬 및 분산 시뮬레이션 지원
  • 모델 점검
  • ...

그래서 저는 현재 잘 알려진 장점으로 Java와 함께 일하고 있습니다. 다중 스레딩에 대한 합리적으로 빠르고 좋은 지원, 비교적 간단한 사용 등. 그러나 '합리적으로 빠른'것이 빠르지 않으면 옵션이 없지만 내려갈 수 있습니다. 추상화의 한 수준 :-)

물론 시뮬라 !! :-)

제가 MATLAB을 통해 얻은 것은 알고리즘의 프로토타입을 빠르게 만들 수 있다는 것입니다.데이터를 플로팅하고 내장된 통계 기능을 사용하면 데이터에 대한 좋은 느낌을 얻을 수 있습니다.새로운 것을 시도할 때 초기 결과를 얻기 위해 빠르고 지저분한 작업을 수행한 다음 다시 돌아가서 정리하여 결과를 개선할 수 있습니다.컴파일된 언어를 사용하면 시뮬레이션을 실행하기 위해 해야 할 일이 훨씬 더 많습니다.MATLAB을 사용하면 실제 문제에 대해 생각하는 데 더 많은 시간을 할애하고 컴파일, 링크, 메모리 관리 등에 대한 시간은 줄입니다.

그러나 MATLAB으로는 해결할 수 없는 문제가 많이 있습니다.대규모 데이터 세트의 경우 사용자 정의 데이터 구조를 갖춘 컴파일된 언어가 거의 확실하게 필요합니다.

입자 물리학은 C ++ 및 Python으로 이동하고 있습니다. 이것은 보편적이지 않으며 아마도 편재성을위한 것이 아니라면 아마도 가까이 있지 않을 것입니다. 뿌리.

Root의 Cint 사용은 새로운 아이디어로 주위를 돌릴 때 메모리 관리에 귀찮게해야한다는 것을 의미합니다. 컴파일을 실행할 수있는 능력은 속도를 가질 수 있고 모드를 혼합 할 수있는 능력이 매우 도움이되며 파이썬 및 기타의 바인딩이 매우 도움이됩니다. RAD 언어는 유연성이 뛰어납니다.

매우 실제적인 의미에서 이것은 롤랑요점.

Matlab과 Fortran (C, C ++)을 연결하는 데 S-Funcuin 블록을 사용할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top