จากประสบการณ์ส่วนตัวของฉันฉันจะบอกว่าวิธี 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)