- Modelica adalah bahasa berorientasi objek untuk memodelkan sistem siber-fisik yang kompleks secara lebih efisien
- Komponen yang dapat digunakan kembali dapat digabungkan melalui koneksi non-kausal, dan model berbasis persamaan matematika dapat disusun
- Dirancang agar pemodelan berbasis prinsip pertama (first principles) menjadi lebih mudah, dengan fokus pada representasi langsung struktur dan perilaku sistem fisik
- Situs resminya menyediakan informasi tentang bahasa Modelica, pustaka, alat, dan Modelica Association di satu tempat
- Materi terkait Association, anggota organisasi, toko merchandise, serta jalur kontak email dan newsletter juga dapat dilihat di sana
Pendekatan pemodelan dalam bahasa Modelica
- Modelica adalah bahasa berorientasi objek untuk memodelkan sistem siber-fisik
- Komponen yang dapat digunakan kembali dapat digabungkan dengan pendekatan koneksi non-kausal
- Komponen direpresentasikan sebagai model yang diatur oleh persamaan matematika
- Struktur seperti ini lebih dekat dengan rancangan untuk memudahkan pemodelan berbasis prinsip pertama
Materi yang disediakan di situs resmi
-
Bahasa, pustaka, alat
- Modelica Language: Informasi bahasa Modelica
- Modelica Libraries: Informasi pustaka Modelica
- Modelica Tools: Informasi alat Modelica
- Modelica Association: Informasi Modelica Association
-
Association dan jalur kontak
- Modelica Association memiliki anggota organisasi, dan di situsnya Anda dapat melihat lebih dari 21 anggota tambahan
- Anda dapat menuju toko merchandise melalui Modelica merchandising shop
- Jalur kontaknya adalah email board@modelica.org dan Modelica Association Newsletter
1 komentar
Pendapat Hacker News
Seperti deskripsi di situs webnya, Modelica adalah bahasa deklaratif tingkat tinggi untuk mendeskripsikan perilaku matematis, dan biasanya diterapkan pada sistem rekayasa.
Di industri HVAC, bahasa ini cukup banyak dipakai; dalam kasus saya, sebagai engineer kontrol, saya bisa meminta FMU dari berbagai komponen kepada system engineer untuk pekerjaan optimisasi.
FMU (Functional Mockup Unit) adalah biner mandiri yang merepresentasikan sistem dinamika yang dapat dijalankan oleh aplikasi lain.
Latar belakang saya adalah reinforcement learning, model predictive control, dan Python, jadi nyaman karena model berbasis fisika yang ditulis dalam bahasa domain-specific bisa di-embed ke dalam workflow Python.
Modelica memiliki sudut pandang yang berbeda dari pemrograman imperatif umum seperti Python/MATLAB.
Jika persamaan, variabel, dan constraint didefinisikan tanpa bergantung pada urutan, compiler akan menentukan cara menjalankan simulasi, misalnya variabel mana yang diselesaikan lebih dulu.
OpenModelica sudah banyak berkembang sebagai implementasi open source dari standar bahasa ini, tetapi di industri aplikasi proprietary seperti Dymola masih lebih unggul.
https://fmi-standard.org/
https://fmpy.readthedocs.io/en/latest/
https://openmodelica.org/
Organisasi komersial di balik bahasa Julia menerima pendanaan DARPA untuk membuat alat-alat ini, dan menyatukan peneliti analisis numerik, komputasi yang dapat diskalakan, serta pakar domain pemodelan sistem rekayasa seperti listrik dan mekanik.
Sepertinya masa depan simulasi akan menuju ke arah ini.
https://juliahub.com/products/juliasim
https://news.ycombinator.com/item?id=26425659
https://docs.sciml.ai/DiffEqDocs/stable/
Ini adalah bahasa non-kausal yang cukup niche, dan banyak digunakan di motorsport (F1, NASCAR) untuk simulasi real-time pada simulator pengemudi.
Spesifikasi bahasanya open source, tetapi ada beberapa compiler komersial, dan Dymola adalah yang paling terkenal.
Saya banyak menulis kode dengan bahasa ini, dan sifat non-kausalnya sangat powerful.
Ini membuat model sangat mudah dikomposisikan, sehingga jika sistem mekanik dirakit seperti balok Lego, persamaannya akan keluar secara otomatis.
Membalik model juga bisa dilakukan dengan mudah.
Analogi terdekat di dunia pemrograman adalah Haskell.
Namun pada akhirnya solver tidak sanggup menangani persamaan yang dihasilkan, dan karena terlihat seperti black box yang mustahil di-debug, kami menyerah.
Tidak jelas apakah kami yang salah, atau alternatif open source-nya memang belum mampu menanganinya.
Menurut saya lingkungan pemodelan non-kausal juga sangat mirip dengan sistem komputasi simbolik.
Karena pada dasarnya itu adalah sistem aljabar komputer terapan.
Dari sekadar melihat deskripsi landing page, sebagai orang yang bukan dari bidang ini, akan bagus jika ada contoh atau tautan ke contoh di layar pertama.
Saya mengklik-klik sekitar 30 detik, tetapi tidak menemukan sesuatu yang menarik.
Misalnya hukum gas ideal PV = nRT memiliki 5 identifier.
Di kebanyakan bahasa pemrograman, harus ada satu variabel saja di sisi kiri assignment, jadi ditulis seperti T=PV/nR; untuk mencari variabel lain, perlu membuat set persamaan serupa secara terpisah.
Di Modelica, Anda bisa menulis persamaan yang sama persis dengan notasi matematika yang natural, lalu mencari nilai tak diketahui berdasarkan nilai-nilai yang sudah diketahui.
https://mbe.modelica.university/behavior/equations/electrical/
Lebih dari itu saya tidak tahu banyak.
Tampaknya seperti framework yang disederhanakan untuk menulis simulasi sistem fisik dan elektrik.
https://mbe.modelica.university/
Saya mengklik sekitar 5 detik dan sampai ke bagian berikut:
Saya menemukannya dalam kurang dari 5 detik.
Saya tidak paham ini apa
Di landing page tidak ada satu pun contoh, dan di tautan utama mana pun di landing page juga tidak ada contoh sama sekali
Sebagai gantinya ada toko merchandise tempat kita bisa membeli mug dan hoodie, serta logo-logo perusahaan besar yang disebut “organizational members”
Kalau sudah membuat sesuatu, seharusnya tunjukkan apa yang dibuat
Kalau saya belum tahu bahwa saya memang membutuhkannya, rasanya saya tidak akan menghabiskan lebih dari 30 detik untuk mencari tahu ini apa
Kenapa dibuat sesulit ini?
Saya harus mengeklik beberapa kali untuk sampai ke sini
https://mbe.modelica.university/behavior/equations/first_order/
Coba bandingkan dengan konsorsium USB
https://www.usb.org
atau PCI-SIG:
https://pcisig.com
Mungkin bahasa desainnya justru terlalu modern
Jangan-jangan orang mengiranya sebagai proyek startup, bukan standar industri yang sudah berusia lebih dari 25 tahun?
Menarik untuk dipikirkan bahwa tampilan yang terlalu modern bisa berdampak buruk pada persepsi dan ekspektasi
Bagaimana kira-kira reaksinya kalau desain situsnya sekitar tahun 2018?
http://web.archive.org/web/20180214180117/https://www.modelica.org/
Ini untuk orang-orang yang perlu mensimulasikan sistem multidisiplin yang kompleks, serta membutuhkan cara untuk mendeskripsikan, mengemas, dan mempertukarkan perilaku sistem
Itu secara harfiah kalimat pertamanya
Di tempat kerja saya sekarang, kami menggunakan Modelica bersama OpenModelica untuk mendeskripsikan sistem elektromagnetik; bahasanya bagus, dan antarmuka pengguna grafis OpenModelica juga luar biasa
Kadang saya menganggapnya seperti SPICE untuk sistem multifisika
Library Modelica cukup matang dan lengkap, dan solver numerik yang disertakan di OpenModelica juga solid serta berkinerja baik
Butuh waktu untuk mempelajarinya, tetapi sekarang mulai terasa hasilnya
Selain itu, karena Modelica adalah standar yang diimplementasikan oleh banyak vendor dan ada juga aplikasi open-source, ini bagus untuk menghindari vendor lock-in
Menurut saya ini teknologi yang aman untuk diinvestasikan, baik bagi engineer maupun perusahaan
Fakta bahwa ekspor FMU menurut standar FMI menjadi fitur kelas satu juga sangat bernilai, terutama bagi integrator sistem
Kita bisa menyerahkan model sistem yang sudah diobfuskasi secara wajar kepada pihak yang tidak tepercaya, sambil tetap memungkinkan mereka memperoleh manfaat penuh dari model sistem tersebut
Dalam hal ini, OpenModelica berada di depan para pesaingnya, termasuk ModelingToolkit.jl yang open-source dan library terkait FMIExport.jl
https://openmodelica.org/doc/OpenModelicaUsersGuide/v1.11.0/fmi.html
https://docs.sciml.ai/ModelingToolkit/stable/
https://github.com/ThummeTo/FMIExport.jl
Dibandingkan API perangkat lunak engineering yang tua dan kaku, itu merupakan standar yang cukup bagus
Saya lulus dari universitas 4 tahun lalu, dan baru sekarang masuk ke lubang kelinci pemodelan bond graph, belajar sendiri dari catatan kuliah MIT Henry M. Paynter, sambil di tempat kerja memodelkan sistem kendaraan dengan Simscape
Saya memahami Modelica dan Simscape memakai bond graph sebagai mekanisme dasarnya, tapi entah apakah itu benar
Akan bagus kalau ada pakar di bidang ini yang bisa memberi arahan
Saat ini saya percaya bahwa jika memahami teori bond graph, saya akan bisa memahami secara intuitif hampir semua sistem yang saya tangani
Menarik juga bahwa bidang ini ternyata cukup niche
Sebagian besar rekan di sekitar saya tidak terlalu memedulikannya, tetapi ketika saya mengetahuinya, ini terlihat seperti peluru ajaib untuk semua masalah saya
https://dirac.ruc.dk/~heine/paynter/analysis_and_design_of_engineering_systems_henry_m_paynter.pdf
Sebenarnya komunitas Modelica dan komunitas bond graph punya sedikit sisi yang saling berseberangan
Posisi saya dalam cerita ini ada di [1] dan [2]
Saya juga tidak setuju dengan gagasan bahwa bond graph akan membuat kita memahami hampir semua sistem secara intuitif
Yang bisa didapat adalah apresiasi terhadap keanggunan formalisasi bond graph
Namun berdasarkan 30 tahun pengalaman pemodelan industri, analogi yang ditarik dari situ sangat dangkal
Begitu melewati elemen pasif dan linear, semua analoginya runtuh
Misalnya muncul pertanyaan seperti mengapa sistem termal tidak punya momentum, apa yang terjadi jika ada fluida kompresibel, atau apa padanan kopling dalam sistem listrik
Bond graph juga sebenarnya tidak benar-benar non-kausal; ia hanyalah formalisasi kausal lain yang lebih dekat ke fisika
Para penggemar bond graph jelas tidak akan setuju, tetapi saya hanya berbagi pandangan pribadi dan subjektif
https://www.linkedin.com/feed/update/urn:li:ugcPost:7272516319944589312?commentUrn=urn%3Ali%3Acomment%3A%28ugcPost%3A7272516319944589312%2C7272661328605900801%29&dashCommentUrn=urn%3Ali%3Afsd_comment%3A%287272661328605900801%2Curn%3Ali%3AugcPost%3A7272516319944589312%29
https://mbe.modelica.university/components/connectors/simple_domains/
Tulisan terkait:
All about Modelica: An equation-based language for modeling physical systems - https://news.ycombinator.com/item?id=23690788 - Juni 2020, 44 komentar
Modelica - https://news.ycombinator.com/item?id=16013179 - Desember 2017, 12 komentar
+1 untuk ModelingToolkit.jl
Ia mengambil hal-hal yang dipelajari dari Modelica, dan menyenangkan untuk digunakan
Sejauh pemahaman saya, ini adalah bahasa untuk mendeskripsikan “sistem” dengan cara yang cukup umum, dan sistem dapat dimodelkan dengan persamaan diferensial atau persamaan diskret (if/then/else)
Kalau memang cukup umum, itu sangat bagus
Namun bagian yang lebih menarik adalah metodologi umum untuk benar-benar menjalankan simulasi berbasis waktu dari sistem semacam itu
Terutama bukan integrasi atau sampling bergaya Monte Carlo brute-force, apalagi jika kita bisa mendeskripsikan persamaan diferensial yang kompleks secara arbitrer
OpenModelica, implementasi open-source berbasis bahasa Modelica, juga tidak boleh dilewatkan
Saya belum mencobanya, tetapi saya berencana melihat beberapa fiturnya pada liburan ini
https://openmodelica.org/
Kalau Anda berniat melihat OpenModelica, ModelingToolkit.jl mungkin juga akan menarik bagi Anda
https://docs.sciml.ai/ModelingToolkit/dev/
Ada juga proyek dari Hilding Elmqvist, yang dulu mengerjakan Dymola, implementasi komersial terkemuka Modelica, di Dassault
Proyeknya adalah Modia.jl
https://github.com/ModiaSim/Modia.jl
Secara pribadi, saya merasa komunitas Julia berkumpul di sekitar MTK, tetapi pada tahap awal simulasi sistem dinamis di Julia, Modia lebih dulu unggul, dan saya melihat MTK banyak terinspirasi dari Modia maupun Modelica
Modia sedikit lebih nyaman digunakan, mengintegrasikan hal-hal seperti viewer 3D dan paket multibody lengkap beberapa tahun lebih awal, dan Julia Computing baru sekarang mulai mengejar
MTK punya dukungan solver backend yang lebih baik dan punya peluang besar untuk melampaui Modia
Terutama karena laju rilis Modia tampaknya melambat
https://github.com/JuliaComputing/Multibody.jl
Dari sudut pandang saya yang pernah memakainya di tempat kerja, ulasan singkat saya tentang versi berbayar adalah: jauhi, larilah
Tidak banyak yang bisa dilakukannya dibanding SPICE gratis, lisensinya rumit, dan penuh bug
Rasanya seperti LabVIEW-nya dunia simulasi
Saya belum mencoba versi gratisnya
Bersama rekan-rekan, saya telah mengembangkan NESTML, bahasa pemodelan sistem dinamis untuk sistem dinamika hibrida
Yang dimaksud sistem dinamika hibrida di sini adalah sistem yang mencakup baik dinamika waktu kontinu yang dinyatakan dengan persamaan diferensial biasa, maupun pengiriman dan penerimaan event diskret yang terjadi seketika dalam waktu
Kami berusaha meminimalkan sintaks sehingga model bisa ditulis dengan sangat ringkas
Contohnya:
model lorenz_attractor:
state:
x real = 1
y real = 1
z real = 1
equations:
x' = sigma * (y - x) / s
y' = (x * (rho - z) - y) / s
z' = (x * y - beta * z) / s
update:
integrate_odes()
parameters:
sigma real = 10
beta real = 8/3
rho real = 28
Untuk event, ada sintaks seperti "onReceive(in_port_name)" dan "emit_spike()"
Tata penamaannya cukup dipengaruhi oleh domain aplikasi neurosains
Ini masih dalam pengerjaan, tetapi sudah ada aplikasi keren seperti spiking neural network yang memutar ulang sequence setelah belajar
https://nestml.readthedocs.io/en/latest/tutorials/sequence_learning/sequence_learning.html
Sejujurnya saya terkejut bahwa hal seperti ini belum ada ketika kami mulai mengembangkan NESTML
Modelica mirip, tetapi tampaknya tidak mendukung event diskret
Saya tahu ini promosi terang-terangan, tetapi sebenarnya kami sangat menyambut komentar dan umpan balik
Semua pengembangan dilakukan secara terbuka di GitHub dan berlisensi GPL
Kalau ada yang tahu bahasa domain-specific serupa, saya ingin membaca komentarnya