วิธีซิมเพล็กซ์ (Simplex Method)

การแก้ปัญหาโปรแกรมเชิงเส้น สำหรับโมเดลคณิตศาสตร์ที่กำหนดให้ การมีตัวแปรไม่มาก เช่น จำนวนตัวแปรเพียงสองตัว เพราะสามารถเขียนแทนบนแกนได้ง่าย แต่หากตัวแปรมีมากขึ้น รูปแบบวิธีการคัดจำเป็นต้องใช้วิธีอื่น วิธีซิมเพล็กซ์เป็นวิธีการหนึ่งที่ให้ผลดี และเข้าใจได้ง่าย

วิธีซิมเพล็กซ์ เป็นวิธีทางพีชคณิต ที่อาศัยหลักการของแมทริกซ์เข้าช่วย ช่วยให้สังเกตุการเปลี่ยนแปลงของตัวแปรได้ง่าย และสามารถเข้าใจแนวทางในการเปลี่ยนแปลงตัวแปรอย่างมีเหตุผล วิธีการเริ่มจากการเปลี่ยนตัวแปร โดยดูให้มีผลต่อจุดมุ่งหมาย โดยเน้นให้เข้าสู่เป้าหมายได้เร็วที่สุด ผลลัพธ์ที่ได้จึงเป็นผลลัพธ์ที่เป็นไปได้ (feasible)

วิธีการซิมเพล็กซ์ มีหลักการที่เกี่ยวข้องกับหลักความสัมพันธ์ต่าง ๆ ดังนี้

1. ปัญหาที่มีจุดมุ่งหมาย หรือสมการเป้าหมาย ที่ต้องการได้ค่าสูงสุด (Maximization) มีความสัมพันธ์กับสมการการได้ค่าต่ำสุด (Minimization) ดังนี้
Max Z = c1x1 + c2x2 + ....
มีผลเท่ากับ Min W   =   -- Max Z   =   -- ( c1x1 + c2x2 + ....)

2. ในอสมการใด ๆ ถ้าคูณเครื่องหมายลบเข้าไป จะทำให้เปลี่ยนเครื่องหมายอสมการไปในทางตรงข้าม เช่น
a1x1 + a2x2   >   b
มีผลเท่ากับ -- a1x1 -- a2x2   <   -- b

3. สมการใด ๆ อาจแทนได้ด้วยอสมการสองอสมการที่มีเครื่องหมายทั้งมากกว่าและน้อยกว่า ดังตัวอย่าง
สมการ a1x1 + a2x2  =   b
สามารถเขียนแทนได้ใหม่เป็น a1x1 + a2x2< b และ a1x1 + a2x2>b
หรือเขียนได้เป็น a1x1 + a2x2<b และ -- a1x1 -- a2x2<b
(โดยการใช้เครื่องหมายลบคูณในสมการหลัง)

4. ในบางครั้ง อสมการมีค่าสมบูรณ์ (Absolute value) เราจะเปลี่ยนเป็นอสมการ สองสมการได้เช่นเดียวกัน ดังตัวอย่าง
| a1x1 + a2x2 | <b
เขียนใหม่ได้
a1x1 + a2x2> -- b และ a1x1 + a2x2<b

การคิดคำนวณด้วยวิธีการซิมเพล็กซ์จึงต้องเปลี่ยนระบบอสมการในโมเดลคณิตศาสตร์เชิงเส้นนี้ให้อยู่ในรูปของสมการ โดยอาจมีการเพิ่มตัวแปรสมมติ (dummy variable) ขึ้น รูปแบบของสมการจะขยายเพิ่มเติมขึ้น ดังตัวอย่าง
Max   Z = c1x1 + c2x2 +........ + cnxn
a11x1 + a12x2 +........ + a1nxn<b1 ........(1)
a21x1 + a22x2 +........ + a2nxn>b2 ........(2)
.
.
.
am1x1 + am2x2 +........ + amnxn= bm ........(m)

รูปแบบที่เขียนใหม่สำหรับสมการจะเป็น
Max   Z = c1x1 + c2x2 +........cnxn
a11x1 + a12x2 +........ + a1nxn+ xn+1 = b1 ........(1)
a21x1 + a22x2 +........ + a2nxn- xn+2 + xn+3= b2 ........(2)
.
.
.
am1x1 + am2x2 +........ + amnxn+ xn+k = bm ........(m)

ตัวแปรที่เพิ่มเข้ามาในโมเดลเรียกว่า ตัวแปรสแล็ก (slack variable)

หลักการเพิ่มตัวแปรสแล็ก (slack variable)


1. ในอสมการเดิมที่อยู่ในรูปเครื่องหมายน้อยกว่าหรือเท่ากับ เราจะเปลี่ยนเป็นเครื่องหมายเท่ากับ ดังนั้น จึงต้องเพิ่มส่วนที่เหลือโดยการเพิ่มค่าเข้าไปอีก โดยตัวแปรที่เพิ่มค่าจึงมีเครื่องหมาย + นำหน้า เพื่อให้เหมือนกับว่าเพิ่มค่าให้ได้เท่ากับ

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

3. ในกรณีที่เป็นสมการที่มีเครื่องหมาย เท่ากับ = อยู่แล้ว ให้เพิ่มตัวแปรได้เลย


โดยสรุป สามารถเขียนได้เป็น

>ให้เพิ่ม + ตัวแปร
<ให้เพิ่ม -- ตัวแปร   + ตัวแปร
=ให้เพิ่ม + ตัวแปร


===> ลำดับขั้นตอนการแก้ปัญหาด้วยวิธีซิมเพล็กซ์ <===





ที่มา: รศ. ยืน ภู่วรวรรณ, สำนักบริการคอมพิวเตอร์ มหาวิทยาลัยเกษตรศาสตร์