1 poin oleh GN⁺ 2024-12-18 | 1 komentar | Bagikan ke WhatsApp
  • 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

1 komentar

 
GN⁺ 2024-12-18
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/

  • 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.

    • Pendekatan ini tampak sangat menarik, jadi kami mencoba memakainya untuk memodelkan sistem fluida yang cukup kompleks dengan pipa, katup, tangki, dan sebagainya.
      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.
    • Sepenuhnya setuju, dan sepertinya Anda mungkin sedang mengerjakan sesuatu yang menarik.
      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.

    • Sebagai orang luar yang penasaran dengan Modelica, beberapa tahun lalu saya tertarik setelah tahu bahwa bahasa ini bisa menuliskan persamaan secara lebih langsung daripada kebanyakan bahasa pemrograman.
      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.
    • Contohnya ada di sini.
      Tampaknya seperti framework yang disederhanakan untuk menulis simulasi sistem fisik dan elektrik.
      https://mbe.modelica.university/
    • Di tautan pertama “Modelica Language” ada tutorial dan contoh.
      Saya mengklik sekitar 5 detik dan sampai ke bagian berikut:

      Mari pertimbangkan sebuah persamaan diferensial yang sangat sederhana:
      x = (1-X)
      Jika melihat persamaan ini, hanya ada satu variabel, x.
      Persamaan ini dapat dinyatakan dalam Modelica seperti berikut:
      model FirstOrder
      Real x;
      equation
      der(x) = 1-x;
      end FirstOrder;
      Kode ini dimulai dengan kata kunci model yang menandai awal definisi model.
      Setelah kata kunci model, ada nama model FirstOrder, lalu diikuti deklarasi semua variabel yang diminati.
      dan seterusnya

    • Modelica Language -> Modelica By Example -> https://mbe.modelica.university/
      Saya menemukannya dalam kurang dari 5 detik.
    • Sepertinya mereka menjual merchandise bermerek sendiri
  • 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?

    • Setuju
      Saya harus mengeklik beberapa kali untuk sampai ke sini
      https://mbe.modelica.university/behavior/equations/first_order/
    • Sebenarnya menurut saya situsnya cukup modern
      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/
    • Karena ini bukan untuk Anda
      Ini untuk orang-orang yang perlu mensimulasikan sistem multidisiplin yang kompleks, serta membutuhkan cara untuk mendeskripsikan, mengemas, dan mempertukarkan perilaku sistem
    • “Modelica is an object oriented language to model cyber-physical systems.”
      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

    • Modelica adalah cara yang sangat baik untuk menjalankan simulasi seperti ini
      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
    • Saat bekerja sebagai mahasiswa di Siemens, saya ingat pernah mengekspor neural network ke ONNX, menempelkan DLL ONNX Runtime ke sebuah FMU, mengujinya dengan OpenModelica, lalu menghubungkannya ke Simcenter Amesim
      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

  • 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

    • Solusi numerik untuk persamaan diferensial biasa dan persamaan diferensial-aljabar adalah bidang dengan banyak metode yang sangat baik
  • 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