13
Integer Linear Programming 4100053028 陳立其

Integer linear programming

  • Upload
    aldy120

  • View
    161

  • Download
    3

Embed Size (px)

Citation preview

Page 1: Integer linear programming

Integer Linear Programming4100053028陳立其

Page 2: Integer linear programming

Outline

• A simple example (Event-Holding problem)

• Generalized form for the problem

• Solve the simple problem

Page 3: Integer linear programming

2014跨年問題

•今有同學六人,分別為小明、小美、冠宇、建宏、淑芬、力宏

•同學之間彼此有難分難捨的心結,但是身為一個主辦人,遵循心存善念,盡力而為的初衷,要辦一個活動,即使同學彼此勾心鬥角,主辦人也必須盡量讓事情圓滿。

•主辦人分別詢問了六位同學是否參加跨年團的意願,而同學的回覆也都在主辦人的意料之內,意料之內的非常難以處理

•身為一個數學系的主辦人,突然想起,他曾經在作業研究這門課上學習到一些線性規劃技巧,說不定可以用到。

Page 4: Integer linear programming

同學們的回覆

• 小明• 好阿,隨便阿,都可以阿,多找幾個人吧,呵呵。

• 小美• 我想想,那如果小明同學去的話我再考慮,先這樣囉,掰掰。

• 冠宇• 如果小明跟小美都不去的話,就別找我了。

• 建宏• 如果小美不去或冠宇不去,那我也不去了。

• 淑芬• 如果冠宇跟建宏都去,那我偏偏不去。

• 力宏• 如果淑芬不去的話,我就不想去了

Page 5: Integer linear programming

推廣問題形式

•假設有同學𝑛人

•分別為𝑥1, … , 𝑥𝑖 , … , 𝑥𝑗 , … , 𝑥𝑛

• 𝑥𝑘列出了他不去的充分條件

• 𝑥𝑘 = 1• 表示𝑥𝑘會去

• 𝑥𝑘 = 0• 表示𝑥𝑘不會去

Page 6: Integer linear programming

𝑥𝑘不去的充分條件(若…,則𝑥𝑘不去)

•若 𝑥𝑖不去• 𝑥𝑘 ≤ 𝑥𝑖

•若 𝑥𝑖去• 𝑥𝑘 ≤ 1 − 𝑥𝑖

Page 7: Integer linear programming

𝑥𝑘不去的充分條件

• 若 𝑥𝑖不去且𝑥𝑗不去• 𝑥𝑘 ≤ 𝑥𝑖 + 𝑥𝑗

• 若𝑥𝑖去且𝑥𝑗去• 𝑥𝑘 ≤ 1 − 𝑥1 + (1 − 𝑥2)

• 若 𝑥𝑖不去或𝑥𝑗不去• 𝑥𝑘 ≤ 𝑥𝑖• 𝑥𝑘 ≤ 𝑥𝑗

• 若 𝑥𝑖去或𝑥𝑗去• 𝑥𝑘 ≤ 1 − 𝑥𝑖• 𝑥𝑘 ≤ 1 − 𝑥𝑗

Page 8: Integer linear programming

𝑥𝑘不去的充分條件

•若 𝑥𝑖去且𝑥𝑗不去• 𝑥𝑘 ≤ 1 − 𝑥𝑖 + 𝑥𝑗

•若 𝑥𝑖去或𝑥𝑗不去• 𝑥𝑘 ≤ 1 − 𝑥𝑖• 𝑥𝑘 ≤ 𝑥𝑗

•若 𝑥1去且𝑥2不去或 𝑥3不去且𝑥4去且𝑥5去• 𝑥𝑘 ≤ 1 − 𝑥1 + 𝑥2• 𝑥𝑘 ≤ 𝑥3 + 1 − 𝑥4 + (1 − 𝑥5)

Page 9: Integer linear programming

跨年問題

•假設六位同學分別為𝑥1, 𝑥2, 𝑥3, 𝑥4, 𝑥5, 𝑥6•小明

• 好阿,隨便阿,都可以阿,多找幾個人吧,呵呵。

• 𝑥1

•小美• 我想想,那如果小明同學去的話我再考慮去,先這樣囉,掰掰。

• 𝑥2 ≤ 𝑥1

•冠宇• 如果小明跟小美都不去的話,就別找我了。

• 𝑥3 ≤ 𝑥1 + 𝑥2

Page 10: Integer linear programming

跨年問題

•建宏• 如果小美不去或冠宇不去,那我也不去了。

• 𝑥4 ≤ 𝑥3• 𝑥4 ≤ 𝑥2

•淑芬• 如果冠宇跟建宏都去,那我偏偏不去。

• 𝑥5 ≤ 1 − 𝑥3 + 1 − 𝑥4

•力宏• 如果淑芬不去的話,我就不想去了

• 𝑥6 ≤ 𝑥5

Page 11: Integer linear programming

同學們的限制式

• 𝑥2 ≤ 𝑥1• 𝑥3 ≤ 𝑥1 + 𝑥2• 𝑥4 ≤ 𝑥3

• 𝑥4 ≤ 𝑥2• 𝑥5 ≤ (1 − 𝑥3) + (1 − 𝑥4)

• 𝑥6 ≤ 𝑥5

Page 12: Integer linear programming

矩陣式

• 𝐴 =

−1 1 0 0 0 0−1 −1 1 0 0 00 −1 0 1 0 00 0 −1 1 0 00 0 1 1 1 00 0 0 0 −1 1

, 𝑏 =

000020

• 0 ≤ 𝑥 ≤ 1

• 𝑥𝑖 𝑖𝑠 𝑖𝑛𝑡𝑒𝑔𝑒𝑟, ∀𝑖 ∈ 1,2,3,4,5,6

Page 13: Integer linear programming

Matlab

• Intlinprog(Optimization Toolbox)

• 𝑥 =

111011