بروبت

يُعد برنامج PROPT [ 1 ] MATLAB Optimal Control Software منصة من الجيل الجديد لحل مشاكل التحكم الأمثل التطبيقي (مع صياغة ODE أو DAE ) ومشاكل تقدير المعلمات .

تم تطوير المنصة بواسطة الفائز في مسابقة برمجة MATLAB، بير روتكويست في عام 2008. ويدعم الإصدار الأحدث المتغيرات الثنائية والأعداد الصحيحة بالإضافة إلى وحدة تحجيم تلقائية.

وصف

PROPT هو محرك متكامل للنمذجة والتجميع والحل، مبني على فئة النمذجة TomSym ، لتوليد مسائل التحكم الأمثل شديدة التعقيد. يستخدم PROPT طريقة التجميع الطيفي الزائف (مع نقاط غاوس أو تشيبيشيف) لحل مسائل التحكم الأمثل. هذا يعني أن الحل يأخذ شكل متعدد الحدود ، ويحقق هذا المتعدد الحدود معادلة التفاضل الجبرية وقيود المسار عند نقاط التجميع.

بشكل عام، يحتوي PROPT على الوظائف الرئيسية التالية:

  • حساب المصفوفات الثابتة المستخدمة في التفاضل والتكامل لكثيرات الحدود المستخدمة لتقريب حل مشكلة تحسين المسار .
  • تحويل المصدر لتحويل التعبيرات التي يقدمها المستخدم إلى كود MATLAB لدالة التكلفةو{\displaystyle f}ووظيفة القيدج{\displaystyle c}والتي يتم تمريرها إلى محلل البرمجة غير الخطية في برنامج TOMLAB . تقوم حزمة تحويل المصدر TomSym تلقائيًا بإنشاء المشتقات من الرتبة الأولى والثانية.
  • وظائف لرسم وحساب مجموعة متنوعة من المعلومات لحل المشكلة.
  • الكشف التلقائي عن ما يلي:
    • الهدف الخطي والتربيعي.
    • حدود بسيطة، وقيود خطية وغير خطية.
    • تعبيرات غير مُحسَّنة.
  • دعم متكامل لمشاكل التحكم الأمثل غير السلسة [ 2 ] (الهجينة).
  • وحدة نمطية للتحجيم التلقائي للمشاكل المعقدة المتعلقة بالمساحة.
  • دعم المتغيرات الثنائية والأعداد الصحيحة، وعناصر التحكم أو الحالات.

النمذجة

يستخدم نظام PROPT محرك تحويل المصدر الرمزي TomSym لنمذجة مسائل التحكم الأمثل. ومن الممكن تعريف المتغيرات المستقلة ، والدوال التابعة، والكميات العددية، والمعاملات الثابتة.

toms tf toms t p = tomPhase ( 'p' , t , 0 , tf , 30 ); x0 = { tf == 20 }; cbox = { 10 <= tf <= 40 };تومز z1 cbox = { cbox ; 0 <= z1 <= 500 }; س0 = { س0 ; z1 == 0 };ki0 = [ 1e3 ; 1e7 ; 10 ; 1e-3 ];

الولايات والضوابط

لا تختلف الحالات والضوابط إلا في أن الحالات يجب أن تكون مستمرة بين المراحل.

tomStates x1 x0 = { icollocate ({ x1 == 0 })};TomControls u1 cbox = { - 2 <= رصف ( u1 ) <= 1 }; س0 = { س0 ; تجميع ( u1 == - 0.01 )});

القيود الحدودية والمسارية والحدثية والتكاملية

يتم عرض مجموعة متنوعة من القيود المتعلقة بالحدود والمسارات والأحداث والتكاملات أدناه:

cbnd = initial ( x1 == 1 ); % نقطة البداية لـ x1 cbnd = final ( x1 == 1 ); % نقطة النهاية لـ x1 cbnd = final ( x2 == 2 ); % نقطة النهاية لـ x2 pathc = collocate ( x3 >= 0.5 ); % قيد المسار لـ x3 intc = { integrate ( x2 ) == 1 }; % قيد التكامل لـ x2 cbnd = final ( x3 >= 0.5 ); % قيد الحدث النهائي لـ x3 cbnd = initial ( x1 <= 2.0 ); % قيد الحدث الابتدائي x1

مثال على التحكم الأمثل أحادي الطور

مذبذب فان دير بول [ 3 ]

التقليل:

جx،ت=x3(تو){\displaystyle {\begin{matrix}J_{x,t}&=&x_{3}(t_{f})\\\end{matrix}}}

رهناً بما يلي:

{دx1دت=(1-x22)*x1-x2+uدx2دت=x1دx3دت=x12+x22+u2x(ت0)=[0 1 0]تو=5-0.3u1.0{\displaystyle {\begin{cases}{\frac {dx_{1}}{dt}}=(1-x_{2}^{2})*x_{1}-x_{2}+u\\{\frac {dx_{2}}{dt}}=x_{1}\\{\frac {dx_{3}}{dt}}=x_{1}^{2}+x_{2}^{2}+u^{2}\\x(t_{0})=[0\ 1\ 0]\\t_{f}=5\\-0.3\leq u\leq 1.0\\\end{cases}}}

لحل المشكلة باستخدام PROPT، يمكن استخدام الكود التالي (مع 60 نقطة تجميع):

toms t p = tomPhase ( 'p' , t , 0 , 5 , 60 ); setPhase ( p );tomStates x1 x2 x3 tomControls u٪ التخمين الأولي x0 = { icollocate ({ x1 == 0 ; x2 == 1 ; x3 == 0 }) colocate ( u == - 0.01 )};% قيود الصندوق cbox = { - 10 <= icollocate ( x1 ) <= 10 - 10 <= icollocate ( x2 ) <= 10 - 10 <= icollocate ( x3 ) <= 10 - 0.3 <= collocate ( u ) <= 1 };% قيود الحدود cbnd = initial ({ x1 == 0 ; x2 == 1 ; x3 == 0 });المعادلات التفاضلية العادية وقيود المسار ceq = collocate ({ dot ( x1 ) == ( 1 - x2 .^ 2 ) .* x1 - x2 + u dot ( x2 ) == x1 ; dot ( x3 ) == x1 .^ 2 + x2 .^ 2 + u .^ 2 });الهدف % الهدف = النهائي ( x3 );% حل المشكلة options = struct ; options . name = 'Van Der Pol' ; solution = ezsolve ( objective , { cbox , cbnd , ceq }, x0 , options );

مثال على التحكم الأمثل متعدد المراحل

صاروخ أحادي البعد [ 4 ] ذو زمن نهاية حر وانزياح طور غير محدد

التقليل:

جx،ت=تجuت{\displaystyle {\begin{matrix}J_{x,t}&=&tCut\\\end{matrix}}}

رهناً بما يلي:

{دx1دت=x2دx2دت=أ-ز (0<تتجuت)دx2دت=-ز (تجuت<ت<تو)x(ت0)=[0 0]ز=1أ=2x1(تو)=100{\displaystyle {\begin{cases}{\frac {dx_{1}}{dt}}=x_{2}\\{\frac {dx_{2}}{dt}}=a-g\ (0<t<=tCut)\\{\frac {dx_{2}}{dt}}=-g\ (tCut<t<t_{f})\\x(t_{0})=[0\ 0]\\g=1\\a=2\\x_{1}(t_{f})=100\\\end{cases}}}

يتم حل المشكلة باستخدام PROPT عن طريق إنشاء مرحلتين وربطهما:

toms t toms tCut tp2 p1 = tomPhase ( 'p1' , t , 0 , tCut , 20 ); p2 = tomPhase ( 'p2' , t , tCut , tp2 , 20 );tf = tCut + tp2 ;x1p1 = tomState ( p1 , 'x1p1' ); x2p1 = tomState ( p1 , 'x2p1' ); x1p2 = tomState ( p2 , 'x1p2' ); x2p2 = tomState ( p2 , 'x2p2' );% التخمين الأولي x0 = { tCut == 10 tf == 15 icollocate ( p1 ,{ x1p1 == 50 * tCut / 10 ; x2p1 == 0 ;}) icollocate ( p2 ,{ x1p2 == 50 + 50 * t / 100 ; x2p2 == 0 ;})};% قيود الصندوق cbox = { 1 <= tCut <= tf - 0.00001 tf <= 100 0 <= icollocate ( p1 , x1p1 ) 0 <= icollocate ( p1 , x2p1 ) 0 <= icollocate ( p2 , x1p2 ) 0 <= icollocate ( p2 , x2p2 )};% قيود الحدود cbnd = { initial ( p1 ,{ x1p1 == 0 ; x2p1 == 0 ;}) final ( p2 , x1p2 == 100 )};المعادلات التفاضلية العادية وقيود المسار a = 2 ; g = 1 ; ceq = { collocate ( p1 ,{ dot ( p1 , x1p1 ) == x2p1 dot ( p1 , x2p1 ) == a - g }) collocate ( p2 ,{ dot ( p2 , x1p2 ) == x2p2 dot ( p2 , x2p2 ) == - g })};الهدف % الهدف = tCut ؛% مرحلة الربط link = { final ( p1 , x1p1 ) == initial ( p2 , x1p2 ) final ( p1 , x2p1 ) == initial ( p2 , x2p2 )};%% حل المشكلة options = struct ; options . name = 'One Dim Rocket' ; constr = { cbox , cbnd , ceq , link }; solution = ezsolve ( objective , constr , x0 , options );

مثال على تقدير المعلمات

مشكلة تقدير المعلمات [ 5 ]

التقليل:

جص=أنا=1،2،3،5(x1(تأنا)-x1م(تأنا))2{\displaystyle {\begin{matrix}J_{p}&=&\sum _{i=1,2,3,5}{(x_{1}(t_{i})-x_{1}^{m}(t_{i}))^{2}}\\\end{matrix}}}

رهناً بما يلي:

{دx1دت=x2دx2دت=1-2*x2-x1x0=[ص1 ص2]تأنا=[1 2 3 5]x1م(تأنا)=[0.264 0.594 0.801 0.959]|ص1:2|1.5{\displaystyle {\begin{cases}{\frac {dx_{1}}{dt}}=x_{2}\\{\frac {dx_{2}}{dt}}=1-2*x_{2}-x_{1}\\x_{0}=[p_{1}\ p_{2}]\\t_{i}=[1\ 2\ 3\ 5]\\x_{1}^{m}(t_{i})=[0.264\ 0.594\ 0.801\ 0.959]\\|p_{1:2}|<=1.5\\\end{cases}}}

في الكود أدناه، تم حل المشكلة باستخدام شبكة دقيقة (10 نقاط تجميع). ثم تم تحسين هذا الحل باستخدام 40 نقطة تجميع.

toms t p1 p2 x1meas = [ 0.264 ; 0.594 ; 0.801 ; 0.959 ]; tmeas = [ 1 ; 2 ; 3 ; 5 ];% قيود الصندوق cbox = { - 1.5 <= p1 <= 1.5 - 1.5 <= p2 <= 1.5 };%% حل المسألة، باستخدام عدد متزايد من نقاط التجميع لـ n = [ 10 40 ] p = tomPhase ( 'p' , t , 0 , 6 , n ); setPhase ( p ); tomStates x1 x2% التخمين الأولي إذا كان n == 10 x0 = { p1 == 0 ; p2 == 0 }; وإلا x0 = { p1 == p1opt ; p2 == p2opt icollocate ({ x1 == x1opt ; x2 == x2opt })}; end% قيود الحدود cbnd = initial ({ x1 == p1 ; x2 == p2 });المعادلات التفاضلية العادية وقيود المسار : x1err = sum (( atPoints ( tmeas , x1 ) - x1meas ) .^ 2 ); ceq = collocate ({ dot ( x1 ) == x2 ; dot ( x2 ) == 1 - 2 * x2 - x1 });الهدف % الهدف = x1err ;%% حل المشكلة options = struct ; options . name = 'Parameter Estimation' ; options . solver = 'snopt' ; solution = ezsolve ( objective , { cbox , cbnd , ceq }, x0 , options );% القيم المثلى لـ x و p كنقطة بداية x1opt = subs ( x1 , solution ); x2opt = subs ( x2 , solution ); p1opt = subs ( p1 , solution ); p2opt = subs ( p2 , solution ); end

مشاكل التحكم الأمثل المدعومة

مراجع

  1. روتكويست، بير؛ إم إم إدفال (يونيو 2008). PROPT - برنامج التحكم الأمثل في ماتلاب (ملف PDF) . بولمان، واشنطن: شركة توملاب للتحسين.
  2. بانغا، جيه آر؛ بالسا-كانتو، إي؛ مولز، سي جي؛ ألونسو، إيه إيه (2003). "التحسين الديناميكي للعمليات الحيوية: استراتيجيات عددية فعالة وقوية". مجلة التكنولوجيا الحيوية.{{cite journal}}يتطلب الاستشهاد بالمجلة ( مساعدة )|journal=
  3. "مذبذب فان دير بول - حل ماتلاب"، الصفحة الرئيسية لـ PROPT ، يونيو 2008.
  4. "إطلاق صاروخ أحادي البعد (وقت فراغ 2)"، الصفحة الرئيسية لـ PROPT ، يونيو 2008.
  5. "تقدير المعلمات الديناميكية باستخدام PROPT في برنامج Matlab"، الصفحة الرئيسية لـ PROPT ، يونيو 2008.
  6. بيتس، ج. (2007). "إصدار SOCS 6.5.0". شركة بوينغ.{{cite journal}}يتطلب الاستشهاد بالمجلة ( مساعدة )|journal=
  7. ليانغ، جيه؛ مينغ، إم؛ تشين، واي؛ فولمر، آر. (2003). "حل مسائل التحكم الأمثل الصعبة بواسطة خادم التحسين المُمكّن بالشبكة (NEOS)". كلية الهندسة، جامعة ولاية يوتا، الولايات المتحدة الأمريكية، جامعة تشينين في هونغ كونغ، الصين.{{cite journal}}يتطلب الاستشهاد بالمجلة ( مساعدة )|journal=
  8. كاراسكو، إي إف؛ بانغا، جيه آر (سبتمبر 1998). "طريقة هجينة للتحكم الأمثل في العمليات الكيميائية". جامعة ويلز، سوانزي، المملكة المتحدة: المؤتمر الدولي للتحكم التابع لـ UKACC 98.{{cite journal}}يتطلب الاستشهاد بالمجلة ( مساعدة )|journal=
  9. فاسيلياديس، ف.س.؛ بانغا، ج.ر.؛ بالسا-كانتو، إ. (1999). "حساسيات الرتبة الثانية للأنظمة الديناميكية العامة مع تطبيق على مسائل التحكم الأمثل". مجلة علوم الهندسة الكيميائية . 54 (17): 3851-3860 . Bibcode : 1999ChEnS..54.3851V . doi : 10.1016/S0009-2509(98)00432-1 .
  10. لوس، ر. (2002). البرمجة الديناميكية التكرارية . تشابمان وهال/سي آر سي.
  11. فابيان، بي سي (1998). "تطبيق جافا لحل مسائل التحكم الأمثل". ستيفنز واي، صندوق بريد 352600 سياتل، واشنطن 98195، الولايات المتحدة الأمريكية: قسم الهندسة الميكانيكية، جامعة واشنطن.{{cite journal}}يتطلب Cite journal |journal=( مساعدة ) CS1 maint: location ( رابط )
  12. جينينغز، إل إس؛ فيشر، إم إي (2002). "MISER3: دليل مستخدم صندوق أدوات التحكم الأمثل، إصدار تجريبي من ماتلاب 2.0". نيدلاندز، غرب أستراليا 6907، أستراليا: قسم الرياضيات، جامعة غرب أستراليا.{{cite journal}}يتطلب Cite journal |journal=( مساعدة ) CS1 maint: location ( رابط )
  13. بانغا، جيه آر؛ سيدر، دبليو دي (1996). فلوداس، سي إيه؛ باردالوس، بي إم (محرران). التحسين الأمثل العالمي للعمليات الكيميائية باستخدام الخوارزميات العشوائية - أحدث ما توصل إليه العلم في التحسين الأمثل العالمي: الأساليب الحسابية والتطبيقات . دوردريخت، هولندا: دار كلوير الأكاديمية للنشر. الصفحات 563-583 . ISBN  0-7923-3838-3.
  14. دولان، إي دي؛ مور، جيه جيه (يناير 2001). "تقييم برامج التحسين باستخدام COPS". 9700 ساوث كاس أفينيو، أرغون، إلينوي 60439: مختبر أرغون الوطني.{{cite journal}}يتطلب Cite journal |journal=( مساعدة ) CS1 maint: location ( رابط )
  • TOMLAB - مطور وموزع البرنامج.
  • TomSym - محرك تحويل المصدر المستخدم في البرمجيات.
  • PROPT - الصفحة الرئيسية لـ PROPT.
  • SNOPT - المُحلِّل الافتراضي المستخدم في PROPT.