בקרה אופטימלית

מתוך ויקיפדיה, האנציקלופדיה החופשית
קפיצה אל: ניווט, חיפוש
Math.svg יש לפשט ערך זה: הערך מנוסח באופן טכני מדי, וקשה להבנה לקהל הרחב.
יש להוסיף מבוא אינטואיטיבי שיסביר את הרעיונות והמושגים בצורה פשוטה יותר, רצוי בליווי דוגמאות. אם אתם סבורים כי הערך אינו ברור דיו או שיש נקודה שאינכם מבינים בו, ציינו זאת בדף השיחה שלו. יש לציין כי ערכים מדעיים רבים מצריכים רקע מוקדם.

בקרה אופטימלית היא ענף בתורת הבקרה, המבקש למצוא חוקי בקרה, שביצועיהם מביאים למקסימום או מינימום אינדקס ביצועים כלשהו.

הגדרת הבעיה[עריכת קוד מקור | עריכה]

נתונה מערכת דינמית מאחד מהסוגים הבאים:

\ \dot{x}=f(x,u),\ x(t_0)=x_0 או:
\ \dot{x}=Ax+Bu,\ x(t_0)=x_0

כאשר במערכת הזאת:

  • x - וקטור המצב של המערכת.
  • u - וקטור הבקרה, המנסה להביא את אינדקס הביצועים למקסימום או מינימום. וקטור הבקרה מקיים \ u \in U

וקטור המצב של המערכת תחום במרחב המצב, המושפע מתנאי ההתחלה של המערכת ומהמרחב המותר למאמץ הבקרה u.
אינדקס הביצועים הוא פונקציונל, כלומר מיפוי של פונקציות אל הציר הממשי:
\ J:(U,X(U)) \rightarrow R^1

הבעיה הבסיסית, לפיכך, היא למצוא את חוק הבקרה האופטימלי: \ u^*[t_0,t_f] \in U,\ u*=arg min(J)
הצמד \ u^*[t_0,t_f],\ x^*[t_0,t_f] נקרא מסלול אופטימלי.

ברוב המקרים, לבעיה יש סט של אילוצים, היכולים להיות מהסוגים הבאים:

  • מצב סופי קבוע נדרש: \ x(t_f)=x_f
  • מניפה סופית: \ x(t_f)^Tx(t_f)=r_f^2
  • אילוצים קשיחים על המצב. למשל, חסימה של וקטור המצב שלא יברח מחוץ לגבול מסוים.
  • מצב התחלתי חופשי.
  • מניפה התחלתית: \ x(t_0)^Tx(t_0)=r^2_0
  • זמן סופי חופשי.

פתרון בעיות אופטימיזציה[עריכת קוד מקור | עריכה]

תנאי לנקודת קיצון[עריכת קוד מקור | עריכה]

שינוי אינפיניטסימלי ב-x, שיסומן ב- \ \delta x יגרום לשינוי קטן בערך הפונקציה f, שיסומן ב-\ \delta f. כדי להגיע לנקודת קיצון, אנחנו רוצים ש- \ \delta f=0. תנאי זה מתקיים, במקרים בהם מוגדר אילוץ מהסוג \ g(x)=0 אם ורק אם:

  • g(x)=0 בנקודה כלשהי x0.
  • \ f_x=-\lambda g_x בנקודה x0. תנאי זה מחייב קולינאריות של הגרדיאנט של f והקו המשיק לאילוץ בנקודה x0.

דרך אחרת להשתמש בכלל זה הוא השימוש בכופלי לגראנז', כלומר להגדיר לגראנז'יאן: \ L(x,\lambda)=f(x)+\lambda g(x) ואז לדרוש שהוא יהיה סטציונרי בנקודה x0 ביחס ל-x וביחס לכופלי הלגראנז'. אם יש מספר אילוצים, משתמשים בוקטור של כופלי לגראנז'.

תנאי הניצבות[עריכת קוד מקור | עריכה]

משתמשים בחשבון וריאציות בשביל לבחון את הבעיה הבאה: \ \min_{x \in X}=\int ^{t_f}_{t_0} \Phi (x,\dot{x},t)dt
ניתן להוכיח שישנם שני תנאים המבטיחים את השגת המינימום:

ניסוח ההמילטוניאן[עריכת קוד מקור | עריכה]

נגדיר את הבעיה הבאה: מעוניינים למזער את הערך של אינדקס הביצועים הבא: \ min J=\int ^{t_f}_{t_0} \phi(x,u,t)dt + \Theta[x(t_f),t_f] תחת האילוצים של משוואת המצב: \ \dot{x}=f(x,u,t)
מגדירים לגראנז'יאן כזה: \ L=J + \int ^{t_f}_{t_0} \lambda^T(t)(f-\dot{x})dt
כמו כן מגדירים המילטוניאן כך: \ H=\Phi+\lambda ^T f
וניתן להוכיח שהמשוואות הבאות פותרות את בעיית האופטימיזציה שתוארה קודם לכן:
\ H_x=-\dot{\lambda}
\ H_{\lambda}=\dot{x}
\ H_u=0 יחד עם תנאי הקצה:

  • \ \lambda ^T(t_0)\delta x(t_0) - תנאי התחלה.
  • \ [\Theta _x-\lambda(t_f)]^T\delta x(t_f) - תנאי הסיום.
  • \ [H+\Theta_{t_f}]_{t_f}\delta t_f - במקרים בהם יש זמן חופשי.

שימושים בבקרה אופטימלית[עריכת קוד מקור | עריכה]

בקרה אופטימלית משמשת במגוון רחב של יישומים. להלן כמה יישומים אפשריים:

  • בקרת מסלול של חלליות.
  • הנחייה של טילים.
  • אמידה של פרמטרים ומשתני מצב של גופים.
  • פתרון בעיית הצריכה של פרט מייצג על פני זמן בכלכלה.

חסרונות בקרה אופטימלית ובעיות LQR[עריכת קוד מקור | עריכה]

המגבלות העיקריות של בקרה אופטימלית הן בעיקר העובדה שרוב הפתרונות מגדירים חוק בקרה התלוי בזמן ולא במשתני המצב של המערכת המבוקרת, כלומר בדרך כלל הפתרונות הם חוקי בקרה בחוג פתוח ולא בקרה בחוג סגור.

לעתים ניתן לקבל פתרונות שהם כן פתרונות בחוג סגור, בעיקר בבעיות ייחודיות המוגדרות כבעיות רגולטור לינארי ריבועי (Linear Quadratic Regulator, LQR). בבעיות אלה ההגדרה היא כזו: \ J=\frac{1}{2} \int ^{t_f}_{t_0}(x^TQx+u^TRu)dt+\frac{1}{2}x^T(t_f)Sx(t_f)
\ \dot{x}=Ax+Bu
\ x(t_0)=x_0

\ S\geq 0
\ Q\geq 0
\ R>0
הפתרון לבעיה זו נתון על ידי חוק הבקרה הבא: \ u^*=-R^{-1}B^TPx
כאשר: P הוא פתרון משוואת ריקאטי הדיפרנציאלית:
\ -\dot{P}=PA+A^TP-PBR^{-1}B^TP+Q
\ P(t_f)=S

שיטות חישוביות[עריכת קוד מקור | עריכה]

בבעיות שונות לא ניתן או קשה מאוד לבצע אופטימיזציה בשיטות אנליטיות. בבעיות אלה משתמשים במספר שיטות חישוביות כדי לבצע אופטימיזציה באמצעים חישוביים, תוך הסתמכות על כוחו של המחשב. סעיף זה יפרט את השיטות המקובלות בעולם:

שיטת Steepest Descent[עריכת קוד מקור | עריכה]

אפשר לתאר את אינדקס הביצועים כמשטח רב-ממדי, בו מטרת הבקרה האופטימלית היא למצוא את הערך הנמוך ביותר של אינדקס זה. כלומר, תאורטית, אם מתקדמים "כלפי מטה", כמו מים במורד הזרימה, מגיעים למקום או לערך הנמוך ביותר של משטח זה. שיטת Steepest Descent פועלת בכיוון של הגרדיאנט המרבי ובכך מקרבת אותנו בכל פעם לפתרון. האלגוריתם לפיכך הוא:

  • בחר נקודה x0.
  • חשב את הגרדיאנט של פונקציית המחיר f בנקודה זו.
  • חשב את הנקודה הבאה \ x_{n+1}=x_n-f_x(x_n)*s, כאשר s הוא גודל הצעד, שאותו בוחרים.
  • תנאי העצירה: כאשר ההפרש בין הערכים של הפונקציה בעקבות הצעד קטנים התכנסנו לנקודת המינימום.

תכנות דינמי דיסקרטי[עריכת קוד מקור | עריכה]

העיקרון בתכנות דינמי דיסקרטי הוא הליכה מתנאי הסיום של הבעיה אל תנאי ההתחלה, תוך התחשבות באילוצי הבעיה. אלגוריתם הפתרון הוא כזה:

  • חלק את מרחב הבעיה הרציף בדרך כלל לנקודות דיסקרטיות במרחקים קטנים כרצונך(כמובן שככל שהרזולוציה משתפרת גדל העומס החישובי של הבעיה).
  • צא מתנאי הסיום ועבור אל הנקודות שניתן להגיע אליהן לפי האילוצים וחשב את המחיר להגיע לנקודות אלה (דרך להגדיר אילוץ היא מחיר אינסופי) על פי המחיר לנקודה הקודמת + המחיר מהנקודה הקודמת לנקודה הנוכחית.
  • בחר את הערך הנמוך ביותר להגיע אל כל נקודה ושמור את המסלול הזה כמסלול האופטימלי.
  • חזור על הפעולות הקודמות עד שתגיע לתנאי ההתחלה של הבעיה.

כתוצאה מהאלגוריתם מתקבל באופן מיידי הערך המינימלי של המסלול והמסלול עצמו. המסלול מגדיר את מאמצי הבקרה הנדרשים לביצוע המסלול.