ผลต่างระหว่างรุ่นของ "204512-53/lecture12"

จาก Theory Wiki
ไปยังการนำทาง ไปยังการค้นหา
 
(ไม่แสดง 1 รุ่นระหว่างกลางโดยผู้ใช้คนเดียวกัน)
แถว 7: แถว 7:
 
โดยที่มีตัวแปร 2 แบบคือ
 
โดยที่มีตัวแปร 2 แบบคือ
  
 +
[[ไฟล์:Lecture12.1.gif]]
 +
 +
และเงื่อนไข อยู่ในรูป General Form
 +
 +
[[ไฟล์:Lecture12.2.gif]]
 +
 +
[[ไฟล์:Lecture12.3.gif]]
 +
 +
แปลงเป็น Minimum โดยการแปลงค่า <math>\sum_i{c_ix_i}</math> โดยการคูณเครื่องหมายลบเข้าไปจะทำให้เปลี่ยนเครื่องหมายของอสมการเปลี่ยนไปในทางตรงข้าม
 +
 +
การคิดคำนวณด้วยวิธีการ Simplex ต้องเปลี่ยนระบบอสมการในโมเดลคณิตศาสตร์เชิงเส้นให้อยู่ในรูปของสมการเพื่อความง่ายต่อการคำนวณ โดยเพิ่มตัวแปรสมมติขึ้น รูปแบบของสมการจะขยายเพิ่มเติมขึ้นเราเรียกรูปแบบนี้ว่า “Slack Form”
 +
 +
[[ไฟล์:Lecture12.4.gif]]
 +
 +
[[ไฟล์:Algorhw1.gif]]
 +
 +
หลักการเพิ่มตัวแปรใน Slack Form
 +
1. ในอสมการเดิมที่อยู่ในรูปเครื่องหมายน้อยกว่าหรือเท่ากับ เราจะเปลี่ยนเป็นเครื่องหมายเท่ากับ ดังนั้น จึงต้องเพิ่มส่วนที่เหลือโดยการเพิ่มค่าเข้าไปอีก โดยตัวแปรที่เพิ่มค่าจึงมีเครื่องหมาย + นำหน้า เพื่อให้เหมือนกับว่าเพิ่มค่าให้ได้เท่ากับ
 +
2. ในกรณีของอสมการในโมเดลคณิตศาสตร์เดิมอยู่ในรูปเครื่องหมายมากกว่าหรือเท่ากับ เปรียบว่าฝั่งซ้ายมากกว่าฝั่งขวา ดังนั้นการเปลี่ยนอสมการให้เป็นสมการจึงต้องลดลง ในที่นี้ต้องเติมตัวแปร Slack โดยมีเครื่องหมายลบนำหน้า แต่จากหลักการคำนวณทางแมทริกซ์ ตัวแปรที่ให้ผลลัพธ์แต่ละครั้งที่คำนวณหา จะมีสัมประสิทธิ์เท่ากับ + 1 ซึ่งเกิดเป็นแมทริกซ์ของสัมประสิทธิ์ของตัวแปรที่เป็นตัวแปรพื้นฐาน (basic variable) ตามข้อกำหนดของวิธีซิมเพล็กซ์ กำหนดว่า ผลลัพธ์เบื้องต้นที่เป็นไปได้จะมีค่าตัวแปรที่เป็นตัวแปรพื้นฐานมากกว่าหรือเท่ากับศูนย์ ดังนั้น จึงต้องเติมตัวแปรอีกตัวหนึ่งที่มีสัมประสิทธิ์เป็นบวก
 +
3. ในกรณีที่เป็นสมการที่มีเครื่องหมาย เท่ากับ = อยู่แล้ว ให้เพิ่มตัวแปรได้เลย
 +
 +
ปัญหา  เทพวิตามิน คนต้องการ
 +
<math> v_A</math> 100 มก.
 +
<math> v_B 70</math> มก.
 +
<math> v_C</math> 500 มก.
 +
 +
[[ไฟล์:Lecture12.5.gif]]
 +
 +
[[ไฟล์:Lecture12.6.gif]]
 +
 +
[[ไฟล์:Lecture12.7.gif]]
 +
 +
[[ไฟล์:Lecture12.8.gif]]
 +
 +
แปลงให้อยู่ในรูป Matrix
 +
 +
[[ไฟล์:Algorhw2.gif]]
 +
 +
ใน Case นี้ให้ <math> x_4=0</math>
 +
 +
[[ไฟล์:Algorhw3.gif]]
 +
 +
<math>x_1=  235/36  ,x_2=  96/72  ,  x_3=  5/42</math>
 +
 +
สังเกตุที่ <math>x_3</math> เพิ่ม<math> x_4</math> ไปแล้ว <math>x_3</math> มีค่าเพิ่มขึ้นเรื่อยๆ ซึ่งไม่มีผลอะไรเพราะมีค่ามากกว่าเท่ากับ  0 อยู่แล้ว
 +
 +
จากโจทย์ถ้าเพิ่ม <math>x_4</math> จะมีผลกับ ส<math> _2</math> (-1) และ ส<math>_3</math> (-100)
 +
 +
[[ไฟล์:Algorhw5.gif]]
 +
 +
แก้สมการเมตริกซ์จะได้
 
<math>
 
<math>
\[X\ge0\;\\sum{\in\}V^+\]
+
d_1=  (-131)/72  ,d_2=  (-7)/144  ,  d_3=  83/144</math>
  </math>
+
 
 +
เพิ่ม <math>x_4</math> ไป <math>235/36  ×  72/131=3.588</math>      ซึ่งจะทำให้ค่า  <math>x_1</math> เป็น 0
 +
เพิ่ม <math>x_4</math> ไป <math>95/72  ×  144/7=27.14</math>    ซึ่งจะทำให้ค่า <math> x_2</math> เป็น 0
 +
 
 +
กำหนด x1, x2, x3 ซึ่งเรียกว่า Basic Solution ที่เป็น matrix
 +
Max C’x
 +
Subject to
 +
Ax = b
 +
x ≥ 0
 +
เลือก B = {1,2,3}
 +
 
 +
[[ไฟล์:Lecture12.9.gif]]
 +
 
 +
โดยที่ C’ = เวกเตอร์แนวนอน, X = เวกเตอร์แนวตั้ง, A = คือ matrix มี ‘ เป็นแถวเวกเตอร์ ไม่มี ‘ เป็นหลักเวกเตอร์ , <math>A_B</math> = Matrix A ที่หยิบมาเฉพาะหลักในเซต B , <math>X_B</math> = เอาเฉพาะตัวแปรใน index B
 +
 
 +
[[ไฟล์:Algorhw4.gif]]
 +
 
 +
เริ่มจาก basic feasible solution XB มี B เป็นเซตของ basis
 +
<math>A_BX_B = b</math>
 +
 
 +
[[ไฟล์:Algorhw6.gif]]
 +
 
 +
[[ไฟล์:Lecture12.10.gif]]
 +
 
 +
 
 +
ถ้า <math> C_j+ C'_B y_B^i≤0</math> แสดงว่าปรับแล้วค่าไม่ดีขึ้น หยิบ field ไหนก็ได้ < 0
 +
พิจารณา x ใดๆ ที่เป็น Basis Feasible Solution
 +
 
 +
Ax = b
 +
x ≥ 0
 +
 
 +
[[ไฟล์:Lecture12.11.gif]]
 +
 
 +
พิจารณา x’b ใดๆ ที่เป็น Basis Physical Solution
 +
Ax = b
 +
x ≥ 0
 +
 
 +
[[ไฟล์:Algorhw8.gif]]
 +
 
 +
เกมส์วิตามิน (ต่อ) : ในกรณีที่ต้องการกินวิตามินให้ได้ครบ
 +
 
 +
[[ไฟล์:Lecture12.12.gif]]
 +
 
 +
มองในแง่คนขาย ถ้าต้องการขายวิตามินให้ได้ราคาดีที่สุด
 +
 
 +
[[ไฟล์:lecture12.13.gif]]
 +
 
 +
เป็นการแปลงจากแถวเป็นหลักและทำให้ Objective เปลี่ยนไปซึ่งคุณสมบัตินี้เราเรียกว่า Dual Linear Programing
 +
 
 +
นฤดล ขจรวุฒิตระกูล 5214550154
 +
รัตนพงษ์ ชัยรักษ์วัฒนา 5214550243
 +
ศักดา เอื้อจิรกาล 5214550286
 +
สยาม ชุณห์วิจิตรา 5214550294
 +
สุเกติองค์ ภู่พัฒน์ 5214550316

รุ่นแก้ไขปัจจุบันเมื่อ 16:21, 31 ตุลาคม 2553

Linear Programming

กำหนดการเชิงเส้น จะอยู่ในรูปแบบทางคณิตศาสตร์ของสมการเชิงเส้นและอสมการเชิงเส้น แล้วหาค่าสูงสุด ต่ำสุดของฟังก์ชันที่สอดคล้องกับสมการ (และอสมการ) ที่กำหนด ตัวแบบคณิตศาสตร์

การหาค่าสูงสุด : Maximize

โดยที่มีตัวแปร 2 แบบคือ

Lecture12.1.gif

และเงื่อนไข อยู่ในรูป General Form

Lecture12.2.gif

Lecture12.3.gif

แปลงเป็น Minimum โดยการแปลงค่า โดยการคูณเครื่องหมายลบเข้าไปจะทำให้เปลี่ยนเครื่องหมายของอสมการเปลี่ยนไปในทางตรงข้าม

การคิดคำนวณด้วยวิธีการ Simplex ต้องเปลี่ยนระบบอสมการในโมเดลคณิตศาสตร์เชิงเส้นให้อยู่ในรูปของสมการเพื่อความง่ายต่อการคำนวณ โดยเพิ่มตัวแปรสมมติขึ้น รูปแบบของสมการจะขยายเพิ่มเติมขึ้นเราเรียกรูปแบบนี้ว่า “Slack Form”

Lecture12.4.gif

Algorhw1.gif

หลักการเพิ่มตัวแปรใน Slack Form 1. ในอสมการเดิมที่อยู่ในรูปเครื่องหมายน้อยกว่าหรือเท่ากับ เราจะเปลี่ยนเป็นเครื่องหมายเท่ากับ ดังนั้น จึงต้องเพิ่มส่วนที่เหลือโดยการเพิ่มค่าเข้าไปอีก โดยตัวแปรที่เพิ่มค่าจึงมีเครื่องหมาย + นำหน้า เพื่อให้เหมือนกับว่าเพิ่มค่าให้ได้เท่ากับ 2. ในกรณีของอสมการในโมเดลคณิตศาสตร์เดิมอยู่ในรูปเครื่องหมายมากกว่าหรือเท่ากับ เปรียบว่าฝั่งซ้ายมากกว่าฝั่งขวา ดังนั้นการเปลี่ยนอสมการให้เป็นสมการจึงต้องลดลง ในที่นี้ต้องเติมตัวแปร Slack โดยมีเครื่องหมายลบนำหน้า แต่จากหลักการคำนวณทางแมทริกซ์ ตัวแปรที่ให้ผลลัพธ์แต่ละครั้งที่คำนวณหา จะมีสัมประสิทธิ์เท่ากับ + 1 ซึ่งเกิดเป็นแมทริกซ์ของสัมประสิทธิ์ของตัวแปรที่เป็นตัวแปรพื้นฐาน (basic variable) ตามข้อกำหนดของวิธีซิมเพล็กซ์ กำหนดว่า ผลลัพธ์เบื้องต้นที่เป็นไปได้จะมีค่าตัวแปรที่เป็นตัวแปรพื้นฐานมากกว่าหรือเท่ากับศูนย์ ดังนั้น จึงต้องเติมตัวแปรอีกตัวหนึ่งที่มีสัมประสิทธิ์เป็นบวก 3. ในกรณีที่เป็นสมการที่มีเครื่องหมาย เท่ากับ = อยู่แล้ว ให้เพิ่มตัวแปรได้เลย

ปัญหา เทพวิตามิน คนต้องการ

Error

Too many requests (f061ab2)

100 มก. มก. 500 มก.

Lecture12.5.gif

Lecture12.6.gif

Lecture12.7.gif

Lecture12.8.gif

แปลงให้อยู่ในรูป Matrix

Algorhw2.gif

ใน Case นี้ให้

Algorhw3.gif

สังเกตุที่

Error

Too many requests (f061ab2)

เพิ่ม ไปแล้ว มีค่าเพิ่มขึ้นเรื่อยๆ ซึ่งไม่มีผลอะไรเพราะมีค่ามากกว่าเท่ากับ 0 อยู่แล้ว

จากโจทย์ถ้าเพิ่ม จะมีผลกับ ส

Error

Too many requests (f061ab2)

(-1) และ ส (-100)

Algorhw5.gif

แก้สมการเมตริกซ์จะได้

เพิ่ม

Error

Too many requests (f061ab2)

ไป ซึ่งจะทำให้ค่า เป็น 0 เพิ่ม ไป ซึ่งจะทำให้ค่า เป็น 0

กำหนด x1, x2, x3 ซึ่งเรียกว่า Basic Solution ที่เป็น matrix Max C’x Subject to Ax = b x ≥ 0 เลือก B = {1,2,3}

Lecture12.9.gif

โดยที่ C’ = เวกเตอร์แนวนอน, X = เวกเตอร์แนวตั้ง, A = คือ matrix มี ‘ เป็นแถวเวกเตอร์ ไม่มี ‘ เป็นหลักเวกเตอร์ , = Matrix A ที่หยิบมาเฉพาะหลักในเซต B ,

Error

Too many requests (f061ab2)

= เอาเฉพาะตัวแปรใน index B

Algorhw4.gif

เริ่มจาก basic feasible solution XB มี B เป็นเซตของ basis

Algorhw6.gif

Lecture12.10.gif


ถ้า แสดงว่าปรับแล้วค่าไม่ดีขึ้น หยิบ field ไหนก็ได้ < 0 พิจารณา x ใดๆ ที่เป็น Basis Feasible Solution

Ax = b x ≥ 0

Lecture12.11.gif

พิจารณา x’b ใดๆ ที่เป็น Basis Physical Solution Ax = b x ≥ 0

Algorhw8.gif

เกมส์วิตามิน (ต่อ) : ในกรณีที่ต้องการกินวิตามินให้ได้ครบ

Lecture12.12.gif

มองในแง่คนขาย ถ้าต้องการขายวิตามินให้ได้ราคาดีที่สุด

Lecture12.13.gif

เป็นการแปลงจากแถวเป็นหลักและทำให้ Objective เปลี่ยนไปซึ่งคุณสมบัตินี้เราเรียกว่า Dual Linear Programing

นฤดล ขจรวุฒิตระกูล 5214550154 รัตนพงษ์ ชัยรักษ์วัฒนา 5214550243 ศักดา เอื้อจิรกาล 5214550286 สยาม ชุณห์วิจิตรา 5214550294 สุเกติองค์ ภู่พัฒน์ 5214550316

รายการเลือกการนำทาง