อะไรคือข้อดี / ข้อเสียของวิธีการจุดภายในด้วยวิธี Simplex สำหรับการเพิ่มประสิทธิภาพเชิงเส้น?


14

ดังที่ฉันเข้าใจเนื่องจากการแก้ปัญหาของโปรแกรมเชิงเส้นเกิดขึ้นเสมอที่จุดสุดยอดของชุด polyhedral ที่เป็นไปได้ (หากมีวิธีการแก้ปัญหาและค่าฟังก์ชันวัตถุประสงค์ที่เหมาะสมที่สุดถูก จำกัด ขอบเขตจากด้านล่างสมมติว่าเป็นปัญหาการย่อขนาด ภายในของภูมิภาคที่เป็นไปได้จะดีกว่าไหม มันมาบรรจบกันเร็วขึ้นไหม? ภายใต้สถานการณ์ใดจะเป็นประโยชน์ที่จะใช้วิธี simplex เหนือวิธีจุดภายใน? จะง่ายกว่าที่จะใช้ในรหัสกว่าอีกหรือไม่


minx[1,1]x2x=0

มันจะเหมาะสมกว่าที่จะพูดว่า "การเพิ่มประสิทธิภาพเชิงเส้น" แทน "การเพิ่มประสิทธิภาพนูน" หรือไม่
พอล

ใช่แล้วคำสั่งของคุณถูกต้อง ขอบคุณสำหรับการแก้ไขคำถามของคุณ
Geoff Oxberry

ปัญหาของวิธีการแบบง่ายคือไม่สามารถสรุปปัญหาที่ไม่เป็นเชิงเส้นได้เช่นปัญหาส่วนใหญ่ในโลกแห่งความเป็นจริง

คำตอบ:


17

จากประสบการณ์ส่วนตัวของฉันฉันจะบอกว่าวิธี simplex ง่ายกว่าเล็กน้อยที่จะเข้าใจวิธีการใช้งานมากกว่าวิธีการจุดภายในขึ้นอยู่กับประสบการณ์ส่วนตัวจากการใช้ทั้ง primal simplex และวิธีการจุดภายในพื้นฐานใน MATLAB เป็นส่วนหนึ่งของการเรียนรู้เชิงเส้น . อุปสรรคหลักใน primal simplex ทำให้แน่ใจว่าคุณใช้เฟส I และเฟส II อย่างถูกต้องและคุณใช้กฎ anticycling อย่างถูกต้อง อุปสรรคหลักในการใช้วิธีการจุดภายในสำหรับการเขียนโปรแกรมเชิงเส้นมีแนวโน้มที่จะเพิ่มเติมเกี่ยวกับการใช้วิธีการวนซ้ำอย่างถูกต้องและการปรับพารามิเตอร์อุปสรรคตาม

คุณสามารถหาคำอธิบายข้อดีข้อเสียของแต่ละอัลกอริทึมได้อย่างสมบูรณ์ยิ่งขึ้นในหนังสือเรียนเกี่ยวกับการเขียนโปรแกรมเชิงเส้นเช่นIntroduction to Linear Optimizationโดย Bertsimas และ Tsitsiklis ( ข้อจำกัดความรับผิดชอบ:ฉันเรียนรู้การเขียนโปรแกรมเชิงเส้นจากหนังสือเล่มนี้และรับการเขียนโปรแกรมเชิงเส้นที่ MIT จากภรรยาของ Bertsimas) นี่คือพื้นฐานบางประการ:

ข้อดีของเริม:

  • ได้รับตัวแปรการตัดสินใจมักจะลู่ในO ( n )การดำเนินการกับO ( n ) pivotsnO(n)O(n)
  • ใช้ประโยชน์จากรูปทรงเรขาคณิตของปัญหา: เยี่ยมชมจุดยอดของชุดที่เป็นไปได้และตรวจสอบจุดสุดยอดที่เข้าเยี่ยมชมแต่ละจุดเพื่อดูความดีที่สุด (ในเบื้องต้นง่าย ๆ ลดต้นทุนสามารถใช้สำหรับการตรวจสอบนี้)
  • ดีสำหรับปัญหาเล็ก ๆ

ข้อเสียของเริม:

  • nO(2n)
  • ไม่ค่อยดีนักสำหรับปัญหาใหญ่เพราะการหมุนเหวี่ยงมีราคาแพง อัลกอริธึมการตัดระนาบหรืออัลกอริธึมการสร้างคอลัมน์ที่ล่าช้าเช่น Dantzig-Wolfe บางครั้งสามารถชดเชยข้อบกพร่องนี้ได้

ข้อดีของวิธีการจุดภายใน:

  • O(n3.5L2logLloglogL)L
  • ดีกว่าสำหรับปัญหาที่มีขนาดใหญ่และกระจัดกระจายเนื่องจากพีชคณิตเชิงเส้นที่จำเป็นสำหรับอัลกอริทึมนั้นเร็วกว่า

ข้อเสียของวิธีการจุดภายใน:

  • มันไม่ได้เป็นที่น่าพอใจเพราะคุณพูดถูกวิธีการเหล่านี้ไม่ได้ไปที่จุดยอด พวกเขาเดินเตร่ไปทั่วภูมิภาคภายในบรรจบกับการแก้ปัญหาเมื่อประสบความสำเร็จ
  • สำหรับปัญหาเล็ก ๆ เริมจะง่ายขึ้น (คุณสามารถสร้างกรณีทางพยาธิวิทยาเช่นก้อน Klee-Minty)

2
สรุปที่ดี Klee-มิ้นต์ในความเป็นจริงดูเหมือนว่าจะถูกออกแบบมาเพื่อทำลายวิธี LP เริม ...
JM

@JM ใช่นั่นคือจุดประสงค์ของมัน - มันเป็นโครงสร้างที่ชัดเจนเพื่อแสดงให้เห็นว่าวิธีการแบบซิมเพล็กซ์ไม่ได้เป็นพหุนาม
Christian Clason

ขอบคุณสำหรับการโพสต์ข้อมูลนี้ ฉันสงสัยว่ามีตัวแปรกี่ตัวที่ทำให้เกิดปัญหาใหญ่? หลายสิบ? ร้อย? พัน?
KjMag

5DAx

3

คำตอบนั้นง่าย พวกเขาทั้งสอง (วิธี simplex และจุดภายใน) เป็นเขตข้อมูลที่ผู้ใหญ่จากมุมมองอัลกอริทึม พวกเขาทั้งสองทำงานได้ดีในทางปฏิบัติ ชื่อเสียงที่ดีของ IPM (วิธีการจุดภายใน) เกิดจากความซับซ้อนของพหุนามในกรณีที่เลวร้ายที่สุด นั่นไม่ใช่กรณีของซิมเพล็กซ์ที่มีความซับซ้อนเชิงผสม อย่างไรก็ตามโปรแกรมเชิงเส้นเชิงผสมแทบไม่เคยเกิดขึ้นในทางปฏิบัติ สำหรับปัญหาที่มีขนาดใหญ่มาก IP ดูเหมือนจะเร็วขึ้นเล็กน้อย แต่ไม่จำเป็นต้องมีกฎ ในความคิดของฉัน IP สามารถเข้าใจและนำไปใช้ได้ง่าย แต่แน่นอนว่าบางคนสามารถไม่เห็นด้วยและนั่นก็เป็นเรื่องปกติ ตอนนี้ใน LP หากโซลูชันไม่ซ้ำกันมันจะอยู่ในจุดสุดยอดแน่นอน (ทั้ง IP และ Simplex ทำได้ดีที่นี่เช่นกัน) วิธีการแก้ปัญหายังสามารถเผชิญกับรูปทรงหลายเหลี่ยมหรือบนขอบซึ่งในกรณีนี้ จุดสุดยอดที่อยู่ติดกันคือ (หรือจุดยอด) นอกจากนี้ยังแก้ปัญหา (อีกครั้งทั้ง IP และเริมทำได้ดี) ดังนั้นพวกเขาจึงเหมือนกันมาก


ฉันตระหนักถึงตัวอย่างที่ฉันให้ไม่ใช่โปรแกรมเชิงเส้น หากคุณดูที่ประวัติการแก้ไขรุ่นก่อนหน้าของคำถามนี้ขอให้เปรียบเทียบวิธีการที่ง่ายและวิธีการจุดภายในสำหรับปัญหาการเพิ่มประสิทธิภาพนูน ฉันยกตัวอย่างให้เหตุผลการแก้ไขที่ฉันทำและสนับสนุนให้ผู้โพสต์ดั้งเดิมแก้ไขคำถามของเขาซึ่งเขาทำ
Geoff Oxberry
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.