1 puan yazan GN⁺ 2024-12-18 | 1 yorum | WhatsApp'ta paylaş
  • Modelica, karmaşık siber-fiziksel sistemleri daha verimli modellemek için kullanılan nesne yönelimli bir dildir
  • Yeniden kullanılabilir bileşenler nedensel olmayan bağlantılar ile birleştirilebilir ve matematiksel denklemlere dayalı modeller kurulabilir
  • Birinci ilkeler (first principles) tabanlı modellemeyi kolaylaştırmak için tasarlanmıştır; fiziksel sistemlerin yapısını ve davranışını doğrudan ifade etmeye odaklanır
  • Resmi site, Modelica dili, kütüphaneler, araçlar ve Modelica Association bilgilerini tek yerde sunar
  • Association ile ilgili kaynaklar, kurumsal üyeler, merchandising mağazası ve e-posta·bülten iletişim kanalları da birlikte görülebilir

Modelica dilinin modelleme yaklaşımı

  • Modelica, siber-fiziksel sistemleri modellemek için kullanılan nesne yönelimli bir dildir
  • Yeniden kullanılabilir bileşenler nedensel olmayan bağlantı yöntemiyle birleştirilebilir
  • Bileşenler, matematiksel denklemler tarafından belirlenen modeller olarak ifade edilir
  • Bu yapı, birinci ilkeler tabanlı modellemeyi kolaylaştırmaya yönelik bir tasarıma yakındır

Resmi sitede sunulan kaynaklar

1 yorum

 
GN⁺ 2024-12-18
Hacker News yorumları
  • Web sitesindeki açıklamada belirtildiği gibi Modelica, matematiksel davranışı tanımlayan üst düzey bildirime dayalı bir dildir ve genellikle mühendislik sistemlerine uygulanır.
    HVAC sektöründe epey kullanılır; benim durumumda, bir kontrol mühendisi olarak optimizasyon çalışmaları için sistem mühendisinden çeşitli bileşenlerin FMU'larını isteyebiliyorum.
    FMU (Functional Mockup Unit), başka uygulamaların çalıştırabileceği dinamik bir sistemi temsil eden bağımsız çalıştırılabilir bir ikili dosyadır.
    Geçmişim pekiştirmeli öğrenme, model öngörülü kontrol ve Python tarafında; alana özgü bir dille yazılmış fizik tabanlı modelleri Python iş akışına gömebilmek kullanışlı.
    Modelica, Python/MATLAB gibi genel amaçlı imperatif programlamadan farklı bir bakış açısına sahip.
    Denklemleri, değişkenleri ve kısıtları sıradan bağımsız olarak tanımlarsınız; derleyici de önce hangi değişkenlerin çözüleceği gibi simülasyonun nasıl yürütüleceğine karar verir.
    OpenModelica, dil standardının açık kaynaklı bir uygulaması olarak çok gelişti, ancak endüstride Dymola gibi tescilli uygulamalar hâlâ üstün konumda.
    https://fmi-standard.org/
    https://fmpy.readthedocs.io/en/latest/
    https://openmodelica.org/

  • Oldukça niş bir nedensel olmayan dil ve motor sporlarında (F1, NASCAR) sürücü simülatörlerinin gerçek zamanlı simülasyonunda yaygın olarak kullanılıyor.
    Dil belirtimi açık kaynaklı, ancak birkaç ticari derleyici var; en bilineni Dymola.
    Bu dille çok kod yazıyorum ve nedensel olmaması çok güçlü bir özellik.
    Modelleri çok birleşebilir hâle getiriyor; mekanik sistemleri Lego blokları gibi birleştirince denklemler otomatik olarak ortaya çıkıyor.
    Modeli tersine çevirmek de kolayca mümkün.
    Programlama dünyasında en yakın benzetme Haskell.

    • Bu yaklaşım bana çok ilginç göründüğü için borular, vanalar, tanklar vb. içeren epey karmaşık bir akışkan sistemi modellemesinde kullanmayı denemiştim.
      Ancak sonunda üretilen denklemler yüzünden çözücü baş edemedi; hata ayıklanamaz bir kara kutu gibi göründüğü için vazgeçtik.
      Hatanın bizde mi olduğu, yoksa açık kaynak alternatiflerin henüz bunun altından kalkamayıp kalkamadığı belirsiz.
    • Tamamen katılıyorum ve muhtemelen ilginç işler yapıyorsunuzdur.
      Nedensel olmayan modelleme ortamları bana sembolik hesaplama sistemlerine de çok benziyor gibi geliyor.
      Çünkü aslında uygulanmış bilgisayar cebiri sistemleri sayılırlar.
  • Açılış sayfasındaki açıklamaya bakınca, bu alandan olmayan biri olarak ilk ekranda bir örnek ya da örnek bağlantısı olmasını isterdim.
    Yaklaşık 30 saniye tıkladım ama ilgimi çeken bir şey bulamadım.

    • Modelica'yı merak eden bir dış göz olarak, birkaç yıl önce bu dilin denklemleri çoğu programlama dilinden daha doğrudan yazmaya izin verdiğini öğrenince ilgimi çekmişti.
      Örneğin ideal gaz yasası PV = nRT'de 5 tanımlayıcı vardır.
      Çoğu programlama dilinde atamanın sol tarafında yalnızca tek bir değişken olması gerekir; bu yüzden T=PV/nR gibi yazarsınız, başka bir değişkeni bulmak için de benzer denklem kümelerini ayrıca oluşturmanız gerekir.
      Modelica'da aynı denklemi doğal matematik gösterimiyle yazarsınız; bilinen değerlere dayanarak bilinmeyen çözülebilir.
      https://mbe.modelica.university/behavior/equations/electrical/
      Bundan fazlasını pek bilmiyorum.
    • Örnekler burada.
      Fiziksel ve elektriksel sistem simülasyonları yazmak için basitleştirilmiş bir çerçeve gibi görünüyor.
      https://mbe.modelica.university/
    • “Modelica Language” ilk bağlantısında öğretici ve örnekler var.
      Yaklaşık 5 saniye tıklayıp şuraya kadar geldim:

      Çok basit bir diferansiyel denklem düşünelim:
      x = (1-X)
      Bu denkleme bakınca yalnızca bir değişken var: x
      Bu denklem Modelica'da şöyle ifade edilebilir:
      model FirstOrder
      Real x;
      equation
      der(x) = 1-x;
      end FirstOrder;
      Bu kod, model tanımının başlangıcını gösteren model anahtar sözcüğüyle başlar.
      model anahtar sözcüğünden sonra model adı FirstOrder gelir; ardından ilgilenilen tüm değişkenlerin bildirimleri gelir.
      vesaire

    • Modelica Language -> Modelica By Example -> https://mbe.modelica.university/
      Bulmam 5 saniyeden az sürdü.
    • Görünüşe göre kendi markalı ürünlerini satıyorlar.
  • Bunun ne olduğunu anlayamadım
    Açılış sayfasında tek bir örnek yok, açılış sayfasındaki ana bağlantıların hiçbirinde de tek bir örnek yok
    Bunun yerine kupa ve kapüşonlu satın alabileceğiniz bir ürün mağazası ve “organizational members” denen dev şirket logoları var
    Bir şey yaptıysanız, yaptığınız şeyi göstermelisiniz
    Zaten buna ihtiyacınız olduğunu bilmiyorsanız, ne olduğunu anlamaya 30 saniyeden fazla harcayacağımı sanmıyorum
    Neden bu kadar zorlaştırmışlar?

    • Katılıyorum
      Buraya gelmek için birkaç kez tıklamam gerekti
      https://mbe.modelica.university/behavior/equations/first_order/
    • Aslında bunun oldukça modern bir site olduğunu düşünüyorum
      USB Konsorsiyumu ile karşılaştırın
      https://www.usb.org
      Ya da PCI-SIG:
      https://pcisig.com
      Belki de tasarım dili fazla moderndi
      25 yılı aşmış bir endüstri standardı yerine bir startup projesi sandığınızdan olabilir mi?
      Fazla modern görünmenin algı ve beklentiler üzerinde olumsuz etkisi olabileceği düşünmeye değer, ilginç bir nokta
      Site tasarımı 2018 civarında olsaydı tepki nasıl olurdu?
      http://web.archive.org/web/20180214180117/https://www.modelica.org/
    • Çünkü size yönelik değil
      Karmaşık çok disiplinli sistemleri simüle eden ve sistemlerin davranışını tanımlamak, paketlemek ve değiş tokuş etmek için bir yola ihtiyaç duyan insanlara yönelik
    • “Modelica is an object oriented language to model cyber-physical systems.”
      Kelimenin tam anlamıyla ilk cümle bu
  • Şu anki işimde OpenModelica ile birlikte Modelica kullanarak elektromanyetik sistemleri tanımlıyorum; dil de harika, OpenModelica'nın grafik kullanıcı arayüzü de çok iyi
    Bazen bunu çoklu fizik sistemleri için SPICE gibi düşünüyorum
    Modelica kütüphanesi oldukça olgun ve eksiksiz; OpenModelica'ya dahil olan sayısal çözücüler de sağlam ve performanslı
    Öğrenmesi biraz zaman aldı ama artık karşılığını almaya başladım
    Ayrıca Modelica'nın birden fazla tedarikçi tarafından uygulanmış bir standart olması ve açık kaynak uygulamalarının da bulunması, satıcıya bağımlılıktan kaçınmak açısından iyi
    Mühendisler ve şirketler açısından yatırım yapması güvenli bir teknoloji olduğunu düşünüyorum

    • Modelica bu tür simülasyonları yapmak için harika bir yol
      FMI standardına göre FMU dışa aktarmanın birinci sınıf bir özellik olması da büyük değer taşıyor ve özellikle sistem entegratörleri için önemli
      Makul ölçüde gizlenmiş bir sistem modelini güvenilmeyen taraflara verebilirken, onların sistem modelinin faydalarından tam olarak yararlanmasını sağlayabiliyorsunuz
      Bu konuda OpenModelica, açık kaynak ModelingToolkit.jl ve ilgili kütüphane FMIExport.jl dahil rakiplerinin önünde
      https://openmodelica.org/doc/OpenModelicaUsersGuide/v1.11.0/fmi.html
      https://docs.sciml.ai/ModelingToolkit/stable/
      https://github.com/ThummeTo/FMIExport.jl
    • Siemens'te öğrenci olarak çalışırken, bir sinir ağını ONNX olarak çıkarıp ONNX runtime DLL'ini eklediğim bir FMUyu OpenModelica ile test ettikten sonra Simcenter Amesim'e bağladığımı hatırlıyorum
      Mühendislik yazılımlarının eski ve katı API'leriyle karşılaştırınca oldukça iyi bir standarttı
  • Üniversiteden 4 yıl önce mezun oldum; ancak şimdi bond graph modellemesi tavşan deliğine girip Henry M. Paynter’ın MIT ders notlarıyla kendi başıma çalışıyor, işte de Simscape ile araç sistemleri modelliyorum.
    Modelica ve Simscape’in temel mekanizma olarak bond graph’ları kullandığını anlıyorum; doğru mu emin değilim.
    Bu alandaki bir uzmanın bana biraz yön göstermesi iyi olurdu.
    Şu anda bond graph teorisini anlarsam uğraştığım neredeyse tüm sistemleri sezgisel olarak anlayabileceğime inanıyorum.
    Bu alanın şaşırtıcı derecede niş olması da ilginç.
    Çevremdeki meslektaşların çoğu buna pek önem vermemişti, ama ben öğrendiğimde tüm sorunlarım için sihirli mermi gibi görünmüştü.
    https://dirac.ruc.dk/~heine/paynter/analysis_and_design_of_engineering_systems_henry_m_paynter.pdf

  • İlgili yazılar:
    All about Modelica: An equation-based language for modeling physical systems - https://news.ycombinator.com/item?id=23690788 - Haziran 2020, 44 yorum
    Modelica - https://news.ycombinator.com/item?id=16013179 - Aralık 2017, 12 yorum

  • ModelingToolkit.jl için +1
    Modelica’dan öğrenilen şeyleri almış ve onunla çalışmak keyifli

  • Benim anladığım kadarıyla bu, “sistemleri” oldukça genel bir biçimde tanımlayan bir dil; sistemler diferansiyel denklemler ya da ayrık denklemlerle (if/then/else) modellenebiliyor.
    Yeterince genelse çok iyi.
    Ancak daha ilginç olan kısım, böyle sistemlerin zamana dayalı simülasyonunu gerçekten çalıştırmak için kullanılan genel metodoloji.
    Özellikle de kaba kuvvet Monte Carlo tarzı entegrasyon veya örnekleme yerine, keyfi karmaşıklıkta diferansiyel denklemler tanımlanabiliyorsa.

    • Adi diferansiyel denklemler ve diferansiyel-cebirsel denklemlerin sayısal çözümleri, çok sayıda mükemmel yöntemin bulunduğu bir alan
  • Modelica dili tabanlı açık kaynak bir uygulama olan OpenModelica da atlanmamalı
    Henüz kullanmadım ama bu tatilde birkaç özelliğine bakmayı planlıyorum
    https://openmodelica.org/

    • OpenModelica’ya bakmayı düşünüyorsanız ModelingToolkit.jl de hoşunuza gidebilir
      https://docs.sciml.ai/ModelingToolkit/dev/
      Modelica’nın önde gelen ticari uygulaması Dymola üzerinde Dassault’ta çalışmış olan Hilding Elmqvist’in de bir projesi var
      Onun projesi Modia.jl
      https://github.com/ModiaSim/Modia.jl
      Kişisel olarak Julia topluluğunun MTK etrafında toplandığı izlenimindeyim; ancak Julia’da dinamik sistem simülasyonunun ilk dönemlerinde Modia öndeydi ve MTK’nın hem Modia’dan hem de Modelica’dan çokça ilham aldığını düşünüyorum
      Modia’nın kullanımı biraz daha iyi; 3D görüntüleyici ve eksiksiz bir çok cisimli sistem paketi gibi şeyleri birkaç yıl önce entegre etmişti, Julia Computing ise ancak şimdi yetişiyor
      MTK’nın arka uç çözücü desteği daha iyi ve Modia’yı geride bırakma olasılığı yüksek
      Özellikle Modia’nın sürüm çıkarma hızının yavaşlamış gibi görünmesi nedeniyle bu daha da geçerli
      https://github.com/JuliaComputing/Multibody.jl

    • İş yerinde kullanmış biri olarak ücretli sürüm hakkındaki kısa değerlendirmem: uzak durun, kaçın
      Ücretsiz SPICE’a kıyasla yapabildiği pek fazla şey yok; lisanslama karmaşık ve çok hatalı
      Simülasyon dünyasının LabVIEW’i gibi
      Ücretsiz sürümü kullanmadım

    • Meslektaşlarımla birlikte hibrit dinamik sistemler için bir dinamik sistem modelleme dili olan NESTML’i geliştiriyoruz
      Burada hibrit dinamik sistem, sıradan diferansiyel denklemlerle ifade edilen sürekli zaman dinamiklerini ve zamanda anlık gerçekleşen ayrık olayların gönderilip alınmasını birlikte içeren sistem anlamına geliyor
      Sözdizimini en aza indirmeye çalıştığımız için modeller çok özlü yazılabiliyor
      Örneğin:
      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

      Olaylar için "onReceive(in_port_name)" ve "emit_spike()" gibi yapılar var
      Adlandırma, sinirbilim uygulama alanından epey etkilenmiş durumda
      Hâlâ geliştirme aşamasında, ancak öğrendikten sonra dizileri yeniden oynatan spiking sinir ağları gibi şimdiden güzel uygulamaları var
      https://nestml.readthedocs.io/en/latest/tutorials/sequence_learning/sequence_learning.html
      NESTML’i geliştirmeye başladığımızda böyle bir şeyin zaten var olmamasına açıkçası şaşırmıştım
      Modelica benzer, ama ayrık olay desteği yok gibi görünüyor
      Bunun bariz bir tanıtım olduğunun farkındayım; ama aslında yorum ve geri bildirimleri gerçekten memnuniyetle karşılarız
      Tüm geliştirme GitHub’da açık şekilde yürütülüyor ve GPL lisanslı
      Benzer alan-özgü diller bilen biri varsa yorumlarını okumak isterim