תכנות לא ליניארי הוא שיטה לפיה אופטימיזציה של פונקציה אובייקטיבית היא על ידי מקסום או מזעור. זאת, תוך התחשבות במגבלות שונות שניתנו. הוא מאופיין מכיוון שהפונקציה האובייקטיבית, או חלק מהמגבלות, יכולות להיות לא לינאריות.
תכנות לא ליניארי הוא, אם כן, תהליך שבו הפונקציה שיש למקסם אותה, או כל אחת מההגבלות, שונה ממשוואה ליניארית או מדרגה ראשונה, בה המשתנים מורמים לכוח 1.
עלינו לזכור שמשוואה ליניארית היא שוויון מתמטי שיכול להיות בעל שם אחד או יותר. לפיכך, יש לו את הצורה הבסיסית הבאה, כאשר a ו- b הם הקבועים, בעוד ש- x ו- y הם המשתנים:
ax + b = y
יש להוסיף כי לא כל האלמנטים המרכיבים סוג זה של תכנות יתאימו למאפיין זה. לדוגמה, יכול להיות שהפונקציה האובייקטיבית היא משוואה של המעלה השנייה ואחד המשתנים בריבוע, וממלא את הצורה הבאה:
y = גרזן2+ bx + c
כעת, באמצעות תכנות לא ליניארי, ניתן למטב פונקציה זו ולמצוא את הערך המקסימלי או המינימלי של y. זאת, בהתחשב בכך ש- x כפופה למגבלות מסוימות.
אלמנטים של תכנות לא לינארי
המרכיבים העיקריים בתכנות לא לינאריות הם אלה:
- פונקציה אובייקטיבית: הפונקציה היא שעברה אופטימיזציה, בין אם על ידי מקסימום או מזעור התוצאה שלה.
- מגבלות: אלה התנאים שיש לעמוד בהם בעת אופטימיזציה של הפונקציה האובייקטיבית. זה יכול להיות משוואות או אי-שוויון אלגברי.
תרגיל תכנות לא לינארי
בואו נראה, לסיום, תרגיל תכנות לא לינארי.
נניח שיש לנו את הפונקציה הבאה:
y = 25 + 10x-x2
יש לנו גם את המגבלה הבאה:
y = 50-3x
כפי שניתן לראות בגרף, הפונקציה האובייקטיבית וההגבלה מצטלבים בשתי נקודות, אך כאשר y מוגדל הוא כאשר x = 2.3, כאשר y = 43 (עשרוניות משוערות).
ניתן למצוא את נקודות החיתוך על ידי השוואת שתי המשוואות:
25 + 10x-x2= 50-3x
0 = x2-13x + 25
ואז למשוואה הריבועית שלעיל יש שני פתרונות או שורשים שניתן למצוא עם הנוסחאות הבאות, כאשר a = 1, b = -13 ו- c = 25.
לפיכך, אנו מגלים ש- x1 = 2.3467 (y = 43) ו- x2 = 10.653 (y = 18).
עלינו להזהיר כי סוג זה של תכנות מורכב יותר מאשר ליניארי, ואין כל כך הרבה כלים זמינים ברשת לפתרון אופטימיזציה מסוג זה. הדוגמה המוצגת היא מקרה מאוד פשוט.