- 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
-
Dil, kütüphaneler, araçlar
- Modelica Language: Modelica dili bilgileri
- Modelica Libraries: Modelica kütüphaneleri bilgileri
- Modelica Tools: Modelica araçları bilgileri
- Modelica Association: Modelica Association bilgileri
-
Association ve iletişim kanalları
- Modelica Association'ın kurumsal üyeleri vardır; sitede 21'den fazla ek üye görülebilir
- Modelica merchandising shop üzerinden merchandising mağazasına gidilebilir
- İletişim kanalları e-posta board@modelica.org ve Modelica Association Newsletterdir
1 yorum
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/
Julia dilinin arkasındaki ticari kuruluş, bu araçları geliştirmek için DARPA fonu aldı ve sayısal analiz araştırmacılarını, ölçeklenebilir hesaplamayı, elektrik ve mekanik gibi mühendislik sistemleri modelleme alan uzmanlarını bir araya getiriyor.
Simülasyonun geleceği bu tarafa gidecek gibi görünüyor.
https://juliahub.com/products/juliasim
https://news.ycombinator.com/item?id=26425659
https://docs.sciml.ai/DiffEqDocs/stable/
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.
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.
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.
Ö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.
Fiziksel ve elektriksel sistem simülasyonları yazmak için basitleştirilmiş bir çerçeve gibi görünüyor.
https://mbe.modelica.university/
Yaklaşık 5 saniye tıklayıp şuraya kadar geldim:
Bulmam 5 saniyeden az sürdü.
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?
Buraya gelmek için birkaç kez tıklamam gerekti
https://mbe.modelica.university/behavior/equations/first_order/
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/
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
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
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
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
Aslında Modelica topluluğu ile bond graph topluluğu arasında bir miktar karşıtlık var.
Bu konudaki duruşum [1] ve [2]’de yer alıyor.
Bond graph’ların neredeyse tüm sistemleri sezgisel olarak anlamayı sağlayacağı düşüncesine de katılmıyorum.
Elde edebileceğiniz şey, bond graph formalizminin zarafetine yönelik bir takdir.
Ancak 30 yıllık endüstriyel modelleme deneyimime göre buradan çıkarılan analojiler çok yüzeysel.
Pasif ve doğrusal elemanların ötesine geçtiğinizde analojilerin hepsi bozuluyor.
Örneğin ısıl sistemlerde neden momentum yok, sıkıştırılabilir akışkan olduğunda ne oluyor, elektrik sistemlerinde kavramanın karşılığı nedir gibi sorunlar ortaya çıkıyor.
Bond graph’lar gerçekten nedensel olmayan bir şey de değil; yalnızca fiziğe daha yakın, başka bir nedensel formalizm.
Bond graph hayranları kesinlikle buna katılmayacaktır, ama kişisel ve öznel görüşümü paylaşıyorum.
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/
İ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.
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