תכנות לינארי נכתב ע" י אדם שפר הרחבות ועדכונים ע" י רון שמיר, יוני2013 , מאי2014 מקור עיקרי: CLRS פרק29
תכנות לינארי
שפרי אדם "נכתב ע
2014מאי , 2013יוני , י רון שמיר"הרחבות ועדכונים ע
29פרק CLRS: מקור עיקרי
?מה עושים היום
היום נלמד על:
(.LPאו Linear Programming) לינאריבעיות תכנות ◦
.הסימפלקסאלגוריתם ◦
2
נתונים –בעיית תכנות לינארי
מורכבת מבעית תכנות לינארי:
,𝑥1: משתנים 𝑛קבוצה של ◦ … , 𝑥𝑛.
לינאריים (≤,=,≥)אי שוויונים 𝑚קבוצה של ◦ :לדוגמא. במשתנים
𝑥1 + 𝑥2 + 4𝑥𝑛 ≤ 6 𝑥12 + 4𝑥4 − 2𝑥17 + 𝑥1 = 22
… 2𝑥4 + 𝑥𝑛−2 − 12𝑥2 ≥ −20
להביא למינימום או למקסימום –פונקציית מטרה ◦: לדוגמא. פוקנציה לינארית במשתנים
𝑚𝑖𝑛𝑖𝑚𝑖𝑧𝑒 3𝑥1 + 5𝑥2 +⋯− 𝑥𝑛/12 3
פתרונות אפשריים
max 𝑥1 + 2𝑥2 4𝑥1 − 𝑥2 ≤ 3 2𝑥1 + 2𝑥2 ≥ −100
4
1 22.5, 10x x
פתרון אופטימלי
הינו פתרון אפשרי אשר מביא פתרון אופטימלי . מינימום/את פונקציית המטרה למקסימום
עבור התוכנית, למשל
.הפתרון האופימלי הינו 𝑥1= 𝑥2 = במקרה 3/4,הערך של פונקציית המטרה הינו , הזה וכל 9/4
.פתרון אפשרי אחר יביא לערך נמוך יותר
max 𝑥1 + 2𝑥2 4𝑥1 ≤ 3
2𝑥1 − 2𝑥2 ≥ 0
5
שלוש תוצאות אפשריות לבעיה
3
5
maximize
xy
x
yx
3
5
maximize
xy
xy
yx
3
5
maximize
xy
x
yx
קיים פתרון (.13)אופטימלי
לא קיים .אף פתרון
הבעיה אינה חסומה נוכל לקבל פתרון גדול)
(.ככל שנרצה6
Feasible
Region
Example in 2D
optimum
basic
constraints
max x1 + 8x2
subject to:
(1) x1 3
(2) x2 2
(3) –3x1 + 4x2 14
(4) 4x1 – 3x2 25
(5) x1 + x2 15
x2
x1
(1)
(2)
(4)
(5)
(3)
(5)
(3)
x1 = 46/7
x2 = 59/7
Source: Andy Mirzayan, York Univ. 7
Example in 3D
subject to:
maximize z
Optimum
(x,y,z)=(0,0,3)
x
y
z
0
0
0
2
3
z
y
x
y
zyx
Source: Andy Mirzayan, York Univ. 8
הלוואות בבנק – #1שאלה
בנק למשכנתאוילר מציע ארבע סוגי הלוואותה: תרגיל :משכנתא שניה , (שנתית)ריבית 14%-משכנתא ראשונה ב
, ריבית 20%-הלוואה לשיפוץ הבית ב, ריבית 20%-ב . ריבית 10%-והלוואה למימון לימודים ב
אך , הבנק רוצה למקסם את רווחיו מהריבית השנתית האחוזים הינם )נתון תחת הגבלות המדיניות הבאות
(:ביחס לסכומי ההלוואות ולא למספרן
.מיליון שקל בשנה 250לבנק מותר להלוות עד ◦
מסך 55%משכנתאות ראשונות צריכות להיות לפחות ◦ .מסך מכלל ההלוואות 25%המשכנתאות ולפחות
.מכלל ההלוואות 25%משכנתאות שניות יכולות להיות עד ◦
.15%-הריבית הממוצעת אינה יכולה לעלות מעל ל◦9
פתרון
מהם המשתנים שלנו?
.אחוז הלוואות משכנתא ראשונה
.אחוז הלוואות משכנתא שניה
.אחוז הלוואות לשיפוץ
.אחוז הלוואות ללימודים
מהי פונציית המטרה?
1x
2x
3x
4x
)1.02.02.014.0250( maximize 4321 xxxx
10
, ריבית 14%-משכנתא ראשונה ב
,ריבית 20%-ב שניהמשכנתא
,ריבית 20%-הלוואה לשיפוץ הבית ב
. ריבית 10%-הלוואה למימון לימודים ב
פתרון (המשך)
מהם האילוצים?
055.045.0 55.0 21211 xxxxx
25.02 x25.01 x
15.01.02.02.014.0 4321 xxxx
14321 xxxx 0,,, 4321 xxxx11
.מיליון שקל בשנה 250לבנק מותר להלוות עד
מסך 55%משכנתאות ראשונות צריכות להיות לפחות
.מסך מכלל ההלוואות 25%המשכנתאות ולפחות
.מכלל ההלוואות 25%השניות יכולות להיות עד המשכנתאות
.15%-הריבית הממוצעת אינה יכולה לעלות מעל ל
סיכום הפתרון
קיבלנו את התוכנית הבאה:
max 250 0.14 ⋅ 𝑥1 +0.2 ⋅ 𝑥2 + 0.2 ⋅ 𝑥3 + 0.1 ⋅ 𝑥4
0.45 ⋅ 𝑥1 − 0.55 ⋅ 𝑥2 ≥ 0
𝑥1 ≥ 0.25 𝑥2 ≤ 0.25
0.14 ⋅ 𝑥1 +0.2 ⋅ 𝑥2 + 0.2 ⋅ 𝑥3 + 0.1 ⋅ 𝑥4 ≤ 0.15
𝑥1 + 𝑥2 + 𝑥3 + 𝑥4 = 1
𝑥1, 𝑥2, 𝑥3, 𝑥4 ≥ 0
12
עוד שימושים
בעיות נוספות שנהוג לנסח כתכנות לינארי: השמת של עובדים למשמרות תחת אילוצים של הגבלת ◦
שעות שונות ביום דורשות כמות שונה של , שעות לעובד .'וכו, עובדים ותיקים 𝑥כל משמרת צריכה להכיל , עובדים
. שמספקת סחורה למגוון חנויותחברה עם הרבה מפעלים ◦לכל חנות צריך להחליט איזה מפעל מספק לה סחורה
.'וכו, כמויות יצור אפשריות, תחת אילוצי עלות משלוח
תכנון דיאטה שתביא לכמות מספקת של מרכיבי המזון ◦ .השונים במינימום עלות
...ועוד הרבה◦
אלגוריתם שפותר בעיות תכנות לינארי יוכל !לפתור את כל הבעיות הללו
13
זרימה ותכנות לינארי - #2שאלה
גרף מכוון –נתונה רשת זרימה :תרגיל𝐺 = 𝑉, 𝐸 , פונקציית קיבול𝑐: 𝐸 → ℝ , מקור𝑠 ∈ 𝑉 , ויעד. 𝑡 ∈ 𝑉 נסחו את בעיית מציאת
כבעיית תכנות 𝑡 -ל 𝑠 -הזרימה המקסימלית מ .לינארי
14
מה יהיו המשתנים?
𝑒לכל קשת ◦ = (𝑢, 𝑣) נחזיק משתנה𝑥𝑢𝑣 שיסמן .כמה זרימה עוברת דרך הקשת
כיצד נדאג שהזרימה שנכנסת לקודקוד שווה ?לזרימה היוצאת ממנו
𝑢לכל קודקוד ◦ ∈ 𝑉 ∖ 𝑠, 𝑡 נוסיף אילוץ
𝑥𝑣𝑢𝑣∈𝑉
= 𝑥𝑢𝑣𝑣∈𝑉
o נדרוש גם𝑥𝑢𝑣 ≥ לכל משתנה 0
תוכנית לינארית –זרימה
15
מה עדיין חסר בתוכנית?
פונקציית מטרה שתביא למקסימום את גודל ◦ :הזרימה
max{ xsv𝑣∈𝑉
− xvs𝑣∈𝑉
}
(המשך)תוכנית לינארית –זרימה
16
בתוכניתמה עוד חסר?
!עדיין לא התייחסנו לקיבולים◦
,𝑢עבור כל קשת ◦ 𝑣 ∈ 𝐸 ניצור אילוץ
𝑥𝑢𝑣 ≤ 𝑐 𝑢, 𝑣
(עוד המשך)תוכנית לינארית –זרימה
17
(הסוף)תוכנית לינארית –זרימה
max{ xsv𝑣∈𝑉
− xvs𝑣∈𝑉
}
𝑢 ∈ 𝑉 ∖ 𝑠, 𝑡 𝑥𝑣𝑢𝑣∈𝑉 = 𝑥𝑢𝑣𝑣∈𝑉
𝑢, 𝑣 ∈ 𝐸 𝑥𝑢𝑣 ≤ 𝑐 𝑢, 𝑣
𝑢, 𝑣 ∈ 𝐸 𝑥𝑢𝑣 ≥ 0
18
מינימליזרימה במחיר #3שאלה (Min cost flow)
בתוספת מחיר –אותם נתונים puv ליחידת (u,v) זרימה על כל קשת
שמחירה הכולל מקסימליתמחפשים זרימה מינימלי
נחשב את ערך הזרימה המקס ,T
לינאריתנכתוב תוכנית:
19
( , )
.
uv uvu v E
sv vsv V v V
Min p x
s t x x T
בים ותכנות לינארי"מק - #4שאלה
ב ממקור "תארו את בעיית מציאת מק: תרגיל . יחיד ליעד יחיד כבעיית תכנות לינארי
מכוון גרף נתונים : תזכורת -הגדרת הבעיה, 𝐺 = (𝑉, 𝐸) זוג קודקודים, 𝑠, 𝑡 ∈ 𝑉
.ופונקציית משקל 𝑤: 𝐸 → 𝑅 ידוע כי , בנוסףמצאו . אין מעגלים שליליים בגרף
𝑠ב מ"מק .𝑡אל −
20
פתרון
21
אלגבסיום :תזכורת Bellman –Ford , לכל dv du +w(u,v) :מתקיים(u,v) קשת
לכל קדקודv נגדיר משתנה d(v)
דוגמא
𝑑 𝑠 = 0.
𝑑 𝑎 ≤ 𝑑 𝑠 + 3.
𝑑 𝑏 ≤ 𝑑 𝑠 + 1.
𝑑 𝑎 ≤ 𝑑 𝑏 + 1.
𝑑 𝑡 ≤ 𝑑 𝑎 + 1.
𝑑 𝑡 ≤ 𝑑 𝑏 + 4.
𝑠
𝑎
𝑏
𝑡
1
1
1 3
4
𝑑 𝑏 ≤ 1
𝑑 𝑎 ≤ 2
𝑑 𝑡 ≤ 3 22
!זהירות
LP: פונקצית מטרה , לינארייםאילוצים ממשייםערכי פתרון , לינארית
לינאריתפונקצית מטרה , לינארייםאילוצים , Integer LP (ILP): שלמיםערכי פתרון
ספוילר:
◦LP : פולינומיאליתבעיה
◦ILP : פולינומיאליתלא ככל הנראה (NP-קשה)
לא להתבלבל בין LP ל-ILP!!
23
דנציג' ורג'ג –קצת היסטוריה
מספר בעיות נוסחו בצורת תוכניות 40-וה 30-בשנות האך אף אחד לא הכליל את זה לבעיה כללית , לינאריות
.אחת
כחלק מפרוייקט , 1947-בSCOOP של חייל האוויר, הציג את הרעיון של תכנות לינארי Danzig, האמריקני
.לפתרון הבעיה הסימפלקסואת אלגוריתם
Programming” "תכנון –40-בשנות ה ולא תכנות
24
אלגוריתם סימפלקס
אלגוריתם Simplex מקבל בעיות תכנות לינאריאו מודיע )ומוצא פתרון אופטימלי עבורן
(אינה פיזיבילית/ שהבעיה אינה חסומה
זמן הריצה של האלגוריתם אקספוננציאלי .במקרה הגרוע ביותר
זמן ( על נתונים אמיתיים)במקרה האופייניולכן זהו אלגוריתם נפוץ , הריצה טוב מאוד
.לבעיה
25
הסגר על ברלין –קצת היסטוריה
גרמניה , לאחר מלחמת העולם השניהשהייתה , ברלין. חולקה לארבעה חלקים
.חולקה גם היא, בתוך החלק הסובייטי
הסובייטים , עם התפתחות המלחמה הקרה .החליטו לערוך מצור על ברלין
לצורך העברת אספקה לתושבי העיר , .האמריקנים יזמו רכבת אווירית
אך בזמן , המשבר נמשך פחות משנה וחצי !טיסות לברלין 276,926הזה התבצעו
26
הסגר על ברלין ותכנות לינארי
תפעול יעיל של הרכבת האווירית היה מבצע :מסובך ביותר
כל סוג . מטוסים ממספר סוגים 𝑥נתונים ◦ .יכול להעביר כמות שונה של אספקה
מטוסים שונים זקוקים למספר שונה של ◦ .אנשי צוות
וישנו תקציב , לכל טיסה יש עלות שונה◦ .שבועי שמותר להשתמש בו
...ועוד הרבה פרמטרים נוספים◦
לצורך פתרון הבעיה השתמשו בשיטות .התכנות הלינארי של דנציג
27
LPצורה סטנדרטית של בעיית
צורהכל בעיית תכנות לינארי ניתן להמיר ל :טענה .סטנדרטית
n
j
jj xc1
maximize
mibxa i
n
j
jij ,...,2,1for 1
nixi ,...,2,1for 0
28
: המרה לצורה סטנדרטית פונקציית מטרה
פונקציית המטרה היא מינימום: בעיה.
פתרון:
n
j
jj
n
j
jj xdxc11
maximize minimize
njcd jj ,...,2,1for
29
:המרה לצורה סטנדרטית משתנים
למשתנה יכול להיות ערך שלילי: בעיה.
פתרון:
לדוגמא:
x
0'','
'''
xx
xxx
שני משתנים חדשים יחליפו
.𝑥את
84''2'2
84)'''(2
842
zyxx
zyxx
zyx
30
:המרה לצורה סטנדרטית שוויונים
המערכת מכילה שוויון: בעיה.
נחליף את השוויון בשני אי שוויונים: פתרון.
bxan
j
jj 1
bxan
j
jj 1
bxan
j
jj 1
31
:המרה לצורה סטנדרטית שוויונים-אי
כיוון לא נכון של אי שוויון: בעיה .
פתרון:
bxan
j
jj 1
bxan
j
jj 1
niaa jj ,...,2,1for
bb
32
המרה לצורה סטנדרטית: דוגמא
(1)
(2)
(3)
(4)
(5)
33
סיכום –המרה לצורה סטנדרטית
ראינו שכל בעיית תכנות לינארי ניתן להמיר .לצורה סטנדרטית
אם במקור היו𝑛 משתנים ו𝑚 . אילוצים −בצורה הסטדנרטית שמתקבלת ישנם לכל היותר
2𝑛 2 -משתנים ו𝑛 + 2𝑚 אילוצים.
34
Slack Form
צורת ה-slack הינה דרך נוספת ליצג את בעיית .התכנות לינארי
𝑥𝑗אילוצי אי שליליות לכל המשתנים ◦ ≥ 0.
כל שאר האילוצים הם שוויונות◦
.בהמשך –דרישות נוספות ◦
35
slack (1) מעבר מצורה סטנדרטית לצורת
n
j
jj xc1
maximize
i
n
j
jij bxa 1
0ix
n
j
jijiin xabx1
-
גם לכל המשתנים
.החדשים
האילוץ .i-ה
𝑚 משתני עודף(slack) :חדשים
𝑥𝑛+1 , … , 𝑥𝑛+𝑚 36
התחלתית slackהמרה לצורת : דוגמא
37
slackמעבר מצורה סטנדרטית לצורת (2)סופית
n
j
jj xc1
vmaximize
0,...,
-
1
1
mn
n
j
jijiin
xx
xabx
𝑚 משתני בסיס: 𝑥𝑛+1 , … , 𝑥𝑛+𝑚
38
𝑛 משתנים לא בסיסיים: 𝑥1 , … , 𝑥𝑛
𝑩 קבוצת האינדקסים : :של משתני הבסיס{𝑛 + 1,… ,𝑚 + 𝑛}
𝑵 קבוצת האינדקסים של המשתנים…,1} :לא בסיסיים , 𝑛}
, 𝑥1הצגת פונקצית המטרה במונחי המשתנים … , 𝑥𝑛
: Slack Formסיכום
משתנים בסיסיים -משתנים לא בסיסיים ו.
פונקציית מטרה שמכילה ◦ .רק משתנים לא בסיסיים
𝑥𝑗אילוצי אי שליליות לכל המשתנים ◦ ≥ 0.
לכל משתנה בסיסי קיים שיוויון מהצורה◦
Nj jj xcvmax
- Nj
jijik xabx
nm
.משתנה בסיסי .משתנים לא בסיסיים
39
שקולות slackישנן הרבה צורות
פונקציית .המטרה
40
slackהפתרון המתאים לצורת
לכל צורתslack באופן הבאנתאים פתרון:
ואז , 0כל המשתנים הלא בסיסיים יקבלו ערך ◦ . האילוצים יקבעו את הערכים של המשתנים הבסיסיים
מהו הערך של הפתרון?
מתי הפתרון אפשרי?
.הקבוע בפונקציית המטרה
כאשר הקבועים בכל .שליליים-האילוצים הינם אי
41
Pivot -פיבוט
פיבוטצעד של אלגוריתם סימפלקס נקרא.
כל מה שעושים בצעד כזה הוא לעבור בין שתי .שקולות slackצורות
אלגוריתם סימפלקס בקצרה:
.שהפתרון המתאים לה אפשרי slackמצא צורת ◦
אחרת slackעבור לצורת , כל עוד לא הגענו לפתרון◦שהערך של הפתרון המתאים לה גדול או שווה לערך
.של הפתרון הנוכחי
42
ביצוע צעד פיבוט
צריך לבחור את זוג המשתנים שמחליפים ביניהם.
בוחרים משתנה לא בסיסי עם מקדם חיובי בפונקציית ◦ .המטרה
בוחרים אילוץ שמביא למינימום את היחס בין הקבוע ◦ .שבאילוץ לבין מינוס המקדם של המשתנה הלא בסיסי
18)2/1/(9
4.8)2/5/(21
5.14/6
43
(המשך)ביצוע צעד פיבוט
אנו רוצים להחליף את עם
נשתמש במשוואה הזו על מנת להחליף בין .המשתנים בפונקציית המטרה ובשאר האילוצים
3x5.x
4/22
36 6
52
3
xx
xx
44
(עוד המשך)ביצוע צעד פיבוט
כיוון שלקחנו את המשוואה עם היחס הקטן .כל הקבועים ישארו אי שליליים, ביותר
45
דרך אחרת להסתכל על הצעד
כיוון , 1.5-רצינו להעלות את הערך של העלינו אותו ב שערך גדול יותר היה מפר את האילוץ
0.75 = 1.5/2 -הפתרון גדל ב.
בעצם עברנו לצורת ה-slack שמתאימה לפתרון החדש . בפתרון החדש
3.x0. 5 x
5.1 0. 35 xx46
:אחרי הצעד :לפני הצעד
עוד שאלה
דנציג לבין מאט ' ורג'מה הקשר בין ג. שאלה ?דיימון
בסרט .פתרוןgood will hunting בכיכובו שליש אירוע ( שגם נכתב על ידיו)מאט דיימון
(.ההסבר המלא בשיעור)שמבוסס על דנציג
47
הגדרה פורמלית –פיבוט
𝑧 =𝑣 + 𝑐𝑗𝑥𝑗𝑗∈𝑁
𝑥𝑖 = 𝑏𝑖 − 𝑎𝑖𝑗𝑥𝑗𝑗∈𝑁 𝑖 ∈ 𝐵
𝑥𝑗 ≥ 0 𝑗 ∈ 𝐵 ∪ 𝑁
𝐵 – basic variables. 𝑁 – non-basic variables.
נבחר משתנה לא בסיסי𝑥𝑙 כך ש𝑐𝑙 > 0 −.
נבחר משתנה בסיסי𝑥𝑘 כך שמתקיים . 𝑏𝑘/𝑎𝑘𝑙 = min
𝑖 (𝑏𝑖/𝑎𝑖𝑙 )
נחלק את שני צידי המשוואה של𝑥𝑘 ב, 𝑎𝑘𝑙 נעביר − .לצד ימין 𝑥𝑘ואת , לצד שמאל 𝑥𝑙את
נשתמש במשוואה שהתקבלה כדי להעלים את𝑥𝑙 .משאר האילוצים ומפונקציית המטרה
48
49
𝑧 =𝑣 + 𝑐𝑗𝑥𝑗𝑗∈𝑁
𝑥𝑖 = 𝑏𝑖 − 𝑎𝑖𝑗𝑥𝑗𝑗∈𝑁 𝑖 ∈ 𝐵
𝑥𝑗 ≥ 0 𝑗 ∈ 𝐵 ∪ 𝑁
1
𝑎𝑘𝑙𝑥𝑘 =
1
𝑎𝑘𝑙(𝑏𝑘 − 𝑎𝑘𝑗𝑥𝑗𝑗∈𝑁−{𝑙} − 𝑎𝑘𝑙𝑥𝑙 )
𝑥𝑙 =𝑏𝑘
𝑎𝑘𝑙−
𝑎𝑘𝑗
𝑎𝑘𝑙𝑥𝑗𝑗∈𝑁−{𝑙} −
1
𝑎𝑘𝑙𝑥𝑘
𝑧 =𝑣 + 𝑐𝑗𝑥𝑗 + 𝑐𝑙𝑥𝑙𝑗∈𝑁−{𝑙}
=
𝑣 + 𝑐𝑙𝑏𝑘
𝑎𝑘𝑙+ (𝑐𝑗 −𝑐𝑙
𝑎𝑘𝑗
𝑎𝑘𝑙)𝑥𝑗 −𝑗∈𝑁−{𝑙}
𝐶𝑙
𝑎𝑘𝑙𝑥𝑘
𝑥𝑘 יוצא מהבסיס,
𝑥𝑙 נכנס
50
𝑧 =𝑣 + 𝑐𝑗𝑥𝑗𝑗∈𝑁
𝑥𝑖 = 𝑏𝑖 − 𝑎𝑖𝑗𝑥𝑗𝑗∈𝑁 𝑖 ∈ 𝐵
𝑥𝑗 ≥ 0 𝑗 ∈ 𝐵 ∪ 𝑁
𝑥𝑙 =𝑏𝑘
𝑎𝑘𝑙−
𝑎𝑘𝑗
𝑎𝑘𝑙𝑥𝑗𝑗∈𝑁−{𝑙} −
1
𝑎𝑘𝑙𝑥𝑘
𝑥𝑖 = 𝑏𝑘 − 𝑎𝑖𝑗𝑥𝑗𝑗∈𝑁− 𝑙 − 𝑎𝑖𝑙𝑥𝑙 = 𝑖 ∈ 𝐵 –{𝑙}
= 𝑏𝑘 − 𝑎𝑖𝑗𝑥𝑗𝑗∈𝑁− 𝑙
− 𝑎𝑖𝑙𝑏𝑘𝑎𝑘𝑙−
𝑎𝑘𝑗
𝑎𝑘𝑙𝑥𝑗
𝑗∈𝑁− 𝑙
−1
𝑎𝑘𝑙𝑥𝑘
= 𝑏𝑘 − 𝑎𝑖𝑙𝑏𝑘𝑎𝑘𝑙− (𝑎𝑖𝑗 −𝑎𝑖𝑙
𝑎𝑘𝑗
𝑎𝑘𝑙)𝑥𝑗
𝑗∈𝑁− 𝑙
−𝑎𝑖𝑙𝑎𝑘𝑙𝑥𝑘
𝑥𝑘 יוצא מהבסיס,
𝑥𝑙 נכנס
פתרונות אפשריים
נניח שביצענו צעד פיבוט על צורת . טענהslack slack-צורת ה. המתאימה לפתרון אפשרי
.שתתקבל תתאים גם היא לפתרון אפשרי
הוכחה.
𝑏𝑖-נסמן ב◦ . את הקבועים באילוצים החדשים ′
:𝑖∀מספיק להראות שמתקיים ◦ 𝑏𝑖′ ≥ 0.
◦. 𝑏𝑖′= 𝑏𝑖 − 𝑏𝑘
𝑎𝑖𝑙
𝑎𝑘𝑙≥ 0
𝑏𝑘/𝑎𝑘𝑙 = min𝑖 (𝑏𝑖/𝑎𝑖𝑙) 𝑏𝑘/𝑎𝑘𝑙 ≤ 𝑏𝑖/𝑎𝑖𝑙
𝑥𝑙 = 𝑏𝑘 − 𝑥𝑘 + 𝑎𝑘𝑗𝑥𝑗𝑗∈𝑁 /𝑎𝑘𝑙 51
ערך הפתרון החדש
על צורת צעד פיבוט נניח שהרצנו . טענהslack slack-צורת ה. 𝜈שערכו המתאימה לפתרון
.שתתקבל תתאים לפתרון שערכו לפחות 𝜈
הוכחה.
.החדשה slack-את הקבוע בצורת ה ′𝜈-נסמן ב◦
𝜈נרצה להראות שמתקיים ◦ ≤ 𝜈′.
◦𝜈′ = 𝜈 + 𝑐𝑙𝑏𝑘/𝑎𝑘𝑙
𝑎𝑘𝑙 -הטענה מתקיימת כיוון ש◦ , 𝑏𝑘 , 𝑐𝑙 ≥ 0.
𝑥𝑙 = 𝑏𝑘 − 𝑥𝑘 + 𝑎𝑘𝑗𝑥𝑗𝑗∈𝑁 /𝑎𝑘𝑙 52
?מתי האלגוריתם מסתיים
מתי נפסיק לבצע צעדי פיבוט ונעצור את ?האלגוריתם
כאשר כל המקדמים בפונקציית המטרה שליליים או ◦ .ולכן לא ניתן לבצע צעד שיגדיל את ערך הפתרון, 0
אופטימליהפתרון –בתנאי העצירה :עוד לא הראינו◦
53
שאלה
מה קורה אם כל המקדמים𝑎𝑖𝑙 חיוביים ?
.הבעיה אינה חסומה◦
. ככל שנרצה בלי להפר אף אילוץ 𝑥𝑙נוכל להגדיל את ◦
54
?האם האלגוריתם יכול להתקע
ראינו שהעדכון בערך של הפתרון המתאים
.הינו slack-לצורת ה 𝑣′= 𝑣 + 𝑐𝑗𝑏𝑘/𝑎𝑘𝑗
אם𝑏𝑘 = . הצעד לא יגדיל את ערך הפתרון, 0
מתקדם ' ייתכן שנכנס ללולאה בה האלג, לכן .במעגל בין מספר פתרונות בעלי אותו הערך
55
(המשך)? האם האלגוריתם יכול להתקע
אם בכל צעד נבחר את המשתנה הלא : טענה, בסיסי בעל האינדקס הנמוך ביותר שניתן
.לא יחזור על אותו פתרון פעמיים' האלג
בכל צעד נבחר את המשתנה הראשון , כלומר◦ .בפונקציית המטרה שהמקדם שלו חיובי
לא נוכיח את הטענה.
56
סיכום האלגוריתם
אלגוריתם סימפלקס:
המתאימה לפתרון slackמתחיל במציאת צורת ◦ .אפשרי
כל . מבצע סדרת צעדי פיבוט המשנים את הפתרון◦צעד מוביל לפתרון שערכו גדול או שווה לערך
.הפתרון הקודם
ניתן לבצע את האלגוריתם כך שלא יחזור על פתרון ◦ .שכבר היינו בו
57
פיבוט –זמן ריצה
אנו מבצעים, במהלך צעד פיבוט:
.𝑥𝑙בחירת משתנה לא בסיסי ◦
.𝑥𝑘מציאת המשתנה הבסיסי המתאים ◦
𝑥𝑙החלפה בין ◦ , 𝑥𝑘 באילוץ המתאים ל-𝑥𝑘.
.בשאר האילוצים ובפונקציית המטרה 𝑥𝑙החלפת ◦
זמן הריצה של צעד הינו, כ"סה
𝑂 𝑛 𝑂 𝑚 𝑂 𝑛
𝑂 𝑛𝑚
𝑂 𝑛𝑚
58
?כמה צעדי פיבוט האלגוריתם יבצע
כמה צורותslack שקולות יכולות להיות לבעיה?
𝑚-משתנים לא בסיסיים ו 𝑛מכילה slackכל צורת ◦ . משתנים בסיסיים
חסם עליון טריוויאלי הוא◦
𝑚 + 𝑛𝑚< 2𝑚+𝑛
מספר הדרכים לבחור את קבוצת המשתנים הבסיסיים
.slack-של צורת ה59
סימפלקס –זמן ריצה
זמן ריצה:
:פיבוטסיבוכיות צעד ◦
מבצע הינו ' מספר הצעדים שהאלג◦
: כ"סה◦
𝑂 𝑛𝑚 𝑂 2𝑚+𝑛
𝑂 𝑛𝑚 ⋅ 2𝑚+𝑛
60
הצעדים האם יש מקרים בהם מספר . עליוןחסם זהו ?מעריכי
-התשובה תלויה בכלל בחירת המשתנה הנכנס לבסיס .כלל הפיבוט
לכללים רבים הראו זמן מעריכי
LPהסיבוכיות של בעיית
שיטת הסימפלקס לפתרון בעייתLP
מעריכית עבור כללי פיבוט רבים◦
לא הוכחה כפולינומיאלית לשום כלל◦
יעילה מאוד באופן מעשי◦
האם קיים אלגוריתם פולינומיאלי כלשהו (?שלמה-NPהיא LPהאם : כלומר) ?LPלבעיית
הספוטניק של "עד -בעייה פתוחה מרכזית1979"
61
The New York Times, November 7, 1979
Continued on next slide.
Source: Andy Mirzayan, York Univ.
עוד קצת היסטוריה
שיטת האליפסואיד:
Leonid Khachiyan על ידי 1979-התגלתה ב◦
.אך בפועל מאוד לא יעילה, פולינומיאלית◦
שיטתInterior point
Narendra Karmarkarי "ע 1984-הוצעה ב◦
פולינומיאלית ויעילה◦
עדיין תחום מחקר תוסס
64
...עדיין לא סיימנו עם סימפלקס
נראה בשיעור הבא:
.אפשרית התחלתית slackכיצד למצוא צורת ◦
.כיצד להוכיח את נכונות האלגוריתם◦
65