Sorumun özü şudur: İki ODE sistemim var. Birinin başlangıç değeri kısıtlaması, diğerinin son değeri kısıtlaması vardır. Bu, bazı değişkenler üzerinde başlangıç değeri kısıtlaması ve diğerleri üzerinde son değer kısıtlaması olan tek bir sistem olarak düşünülebilir.
Detaylar burada:
Doğrusal bir dinamik sistem sürmek için sürekli-zaman sonlu-ufuk LQR kontrolörü kullanmaya çalışıyorum. Python ekosistemini kullanmaya devam etmek istiyorum.
Sistem x ( 0 ) = x 0'a tabi olarak biçimindedir.
LQR çözeltisi , x ( t ) cinsinden lineer optimal kontrol girişi u (t) u ( t ) = K ( t ) x ( t ) olacak şekilde bir matrisi üretir .
burada
ve sürekli bir zaman Riccati diferansiyel denkleminin çözümüdür (bu P ( t ) ' nin bir matris olduğuna dikkat edin )
,P(tf)=Q'ya tabi
, B , x 0 , S , S f , R, , t f tüm verilmektedir.
İngilizce: durumunda başlayan bir dinamik sisteminiz var . LQR kontrol saat arasındaki kullanmak için bir geri besleme matrisi oluşturur 0 ve t f ( t f yaygın sorun zaman ufku olarak adlandırılır)
İki ODE'nin sadece bir yönde bağlandığını unutmayın - çözüm x ( t )' ye bağlı değildir . Bu nedenle, sorunu çözmenin bir yolu, nihai değer problemini bir başlangıç-değer problemine dönüştürmek ve standart bir ODE entegratörü kullanarak 0 ve t f arasında sayısal bir çözüm bulmak için Riccati denklemini tersine çevirmektir . Daha sonra bu sayısal çözümü x ( t ) bulmak için kullanabilirim. Bu beni ilgilendiriyor, çünkü x (t) için sayısal ODE çözücü, ODE'yi sayısal çözümdeki zamanlarla aynı anda $ P (t) olarak örneklemeyecektir. Belki de bunu uygulamaya koymanın akıllıca bir yolu vardır.
Sorunu çözmeyi öngördüğüm diğer yol, sistemi birlikte çözmektir, ancak başlangıç değeri ve son değer kısıtlarının karışımıyla nasıl başa çıkılacağını bilmiyorum. Bu sorunları hesaplamak için ağır mı? SciPy / Python'da yapabilir miyim?