- การโปรแกรมเชิงเส้นจำนวนเต็ม (MILP) ได้กลายเป็นเครื่องมือหลักในหลายอุตสาหกรรม
- ด้วยการพัฒนาด้าน ประสิทธิภาพการคำนวณของตัวแก้ปัญหารุ่นใหม่ ทำให้ปัญหาที่เคยแก้ได้ยากในอดีตสามารถหาคำตอบเหมาะที่สุดได้อย่างรวดเร็ว
- บทความนี้อธิบายโดยเน้นที่ พัฒนาการเชิงปฏิบัติระยะหลังของวิธีแก้ MILP และการปรับปรุงด้านสมรรถนะการประมวลผล
- ระเบียบวิธีหลักที่นำเสนอ ได้แก่ branch-and-cut, Dantzig-Wolfe decomposition, Benders decomposition
- มีการสรุปความท้าทายต่อเนื่องในสาขา MILP และโอกาสสำหรับงานวิจัยในอนาคต
บทนำ
- การโปรแกรมเชิงเส้นจำนวนเต็มผสม (MILP) เป็นเครื่องมือสำคัญในงานวิจัยดำเนินงาน และถูกนำไปใช้ได้สำเร็จในหลายภาคอุตสาหกรรม
- ตัวแก้ปัญหา MILP รุ่นใหม่ สามารถค้นหาคำตอบเหมาะที่สุดของปัญหาขนาดใหญ่ที่ในอดีตเคยเป็นไปไม่ได้ ได้ภายในเวลาเพียงไม่กี่วินาที
- ด้วยเหตุนี้ การประยุกต์ใช้ MILP จึงขยายตัวไปสู่หลายสาขา เช่น การขนส่ง, ซัพพลายเชน, การบริหารรายได้, การเงิน, โทรคมนาคม, การผลิต
- อย่างไรก็ตาม ยังมี ปัญหาที่ไม่ถูกแก้และความท้าทายใหม่ ๆ หลงเหลืออยู่ ทำให้งานวิจัย MILP ยังเดินหน้าอย่างต่อเนื่องและคึกคัก
ภาพรวมเนื้อหาหลัก
- บทความนี้วิเคราะห์ พัฒนาการล่าสุดของวิธีแก้ MILP และการปรับปรุงสมรรถนะเชิงปฏิบัติ โดยมุ่งดูว่าแต่ละเทคนิคช่วยเพิ่มประสิทธิภาพการประมวลผลจริงอย่างไร
- จากวรรณกรรมจำนวนมาก บทความให้ความสำคัญเป็นพิเศษกับ งานวิจัยที่อ้างอิงจากการทดลองเชิงคำนวณจริง
- การอภิปรายถูกจัดออกเป็นสามด้านหลักของวิธีแก้ MILP
- วิธี Branch-and-Cut: แนวทางแก้ MILP แบบตัวแทนที่ผสานเทคนิคการแบ่งโหนดและเทคนิค cutting plane เข้าด้วยกัน
- Dantzig-Wolfe decomposition: แนวทางแบบ decomposition ที่แบ่งปัญหาขนาดใหญ่ออกเป็นปัญหาย่อยขนาดเล็กเพื่อจัดการได้อย่างมีประสิทธิภาพ
- Benders decomposition: วิธีที่แยกตัวแปรและข้อจำกัดออกจากกัน แล้วแก้ซ้ำแบบวนรอบเพื่อลดภาระการคำนวณในโครงสร้างที่ซับซ้อน
บทสรุป: ความท้าทายและแนวโน้มอนาคต
- ช่วงท้ายของบทความมองไปยัง ความท้าทายของ MILP ที่ยังคงอยู่ และ โอกาสการวิจัยในอนาคต
- ปัญหาอุตสาหกรรมจริงที่ซับซ้อนมากขึ้น การขยายตัวของข้อมูล และข้อจำกัดด้านสมรรถนะของตัวแก้ปัญหา จะเป็นหัวข้อวิจัยสำคัญต่อจากนี้
- ในอนาคต สาขา MILP มีแนวโน้มจะเติบโตต่อเนื่องไปพร้อมกับ ความก้าวหน้าของอัลกอริทึม, การพัฒนาฮาร์ดแวร์, และการขยายตัวของโดเมนการประยุกต์ใช้ใหม่ ๆ
1 ความคิดเห็น
ความคิดเห็นจาก Hacker News
มีคนสงสัยว่าใครช่วยอธิบายได้ไหมว่าทำไม ILP solver เชิงพาณิชย์อย่าง Gurobi ถึงเหนือกว่า solver ฟรี/โอเพนซอร์สแบบมาก ๆ เป็นเพราะความยากโดยเนื้อแท้ของ ILP หรือเพราะ solver ที่ดีที่สุดคือชุดฮิวริสติกจำนวนมหาศาลสำหรับปัญหาย่อยบางประเภท ทำให้กลยุทธ์ที่โดยทั่วไปถือว่า "ดี" ยังไม่อยู่ในสาธารณสมบัติหรือไม่
มีการบอกว่า solver เชิงพาณิชย์ส่วนใหญ่ทำงานใกล้ชิดกับลูกค้าเพื่อทำเทคนิคเร่งความเร็วที่เจาะจงกับปัญหา และมีองค์ความรู้ที่สั่งสมมา 10~20 ปี ในสาย MILP ฮิวริสติกที่ดีมาก ๆ ถูกใช้สำหรับการเลือกจุดเริ่มต้นของ branch-and-bound และการตัดกิ่งของ tree อย่างมีประสิทธิภาพ รวมถึง custom cuts เพื่อคัดทิ้งคำตอบบางส่วนได้อย่างมีประสิทธิภาพ อีกทั้งนักวิจัย OR ที่เลือกปัญหาด้วยตัวเองแล้วเขียน custom cuts และฮิวริสติกเฉพาะทางก็มักทำได้ดีกว่า solver เชิงพาณิชย์ด้วยซ้ำ แต่บริษัท solver จ้างทีมนักวิจัยระดับปริญญาเอกเพื่อทำสิ่งเหล่านี้ให้เกิดขึ้นอย่างสม่ำเสมอ และติดตามการปรับปรุงจากข้อมูลปัญหาจริงของลูกค้าจำนวนมาก
solver เชิงพาณิชย์สามารถทุ่มเวลาและทรัพยากรจำนวนมากเพื่อจูนประสิทธิภาพการแก้ปัญหาได้ เพราะมีลูกค้าจริงที่สนใจและพร้อมช่วย นอกเหนือจากฮิวริสติกแล้ว ยังรวมถึงการตรวจจับปัญหาย่อยที่แก้ได้ง่ายหรือปัญหาแบบประมาณค่า แล้วส่งผลลัพธ์กลับไปยังปัญหาหลักด้วย ส่วน solver โอเพนซอร์สมีข้อจำกัดเพราะ (1) กำแพงการเข้าสู่การพัฒนา optimizer สมัยใหม่สูงมาก ทั้งด้านคณิตศาสตร์และการเขียนโค้ดที่มีคนเชี่ยวชาญพร้อมกันน้อย, (2) ถ้ามีทักษะระดับนั้นก็มักไปทำสายงานที่รายได้ดีกว่า, และ (3) ด้วยธรรมชาติของโอเพนซอร์ส ลูกค้ามักไม่ค่อยส่งเคสปรับปรุง ข้อมูลประสิทธิภาพ หรือโปรไฟล์การทำงานกลับมา ทำให้เห็นข้อจำกัดได้ชัดเจน ข้อยกเว้นมีอย่าง SNOPT ที่แม้เป็นเชิงพาณิชย์แต่พัฒนาในรูปแบบที่ไม่ดั้งเดิม และ solver จากภาควิชาการก็มักโฟกัสกับโดเมนการใช้งานเฉพาะจนไม่ค่อยเป็นแบบทั่วไป ในบางสาขา บริษัทใหญ่อย่าง Google อาจเข้าซื้อหรือสนับสนุนเพื่อขยาย ecosystem แต่ในวงการ solver ต้นทุนการลงทุนเพื่อสร้างสแตกครบทั้งระบบตั้งแต่ต้นสูงเกินไป
solver เชิงพาณิชย์มีลูกเล่นและกลไกตรวจจับแพตเทิร์นจำนวนมากจริง ๆ เพื่อดูว่ากลเม็ดไหนจะได้ผลกับปัญหาแบบใด ถ้ารู้โครงสร้างของปัญหาดี คุณอาจทำให้เร็วกว่า solver เชิงพาณิชย์ได้ แต่ถ้าเป็นปัญหาแบบสุ่ม ๆ ก็แทบไม่มีโอกาสชนะ
มีข้อสังเกตว่าคำกล่าวที่ว่า "solver = ชุดฮิวริสติกหลากหลายสำหรับปัญหาย่อยเฉพาะทาง" แทบใช้ได้กับปัญหา NP-Hard เกือบทั้งหมด โดย ILP สมมูลกับ SAT จึงใช้เหตุผลแบบเดียวกันได้
ยังมีเรื่องของสเกลเชิงพาณิชย์และความเร็วด้วย บริษัท quant trading ส่วนใหญ่มักรันปัญหา optimization ขนาดใหญ่มากให้บ่อยที่สุดเท่าที่ทำได้ ซึ่ง solver โอเพนซอร์สบางครั้งแก้ไม่ได้เลยหรือถึงขั้นหน่วยความจำไม่พอ ช่องว่างจึงมีอยู่มาก
มีคนเล่าย้อนถึงตอนสร้างเครื่องมือจัดสรรทรัพยากรด้วย ILOG MILP library ของ IBM ว่าถ้าแก้ปัญหาเดียวกันเมื่อ 20 ปีก่อน สิ่งที่วันนี้ใช้เวลา 5 นาที เมื่อก่อนอาจยังแก้ไม่เสร็จเลย คอมพิวเตอร์เร็วขึ้นพันเท่า และอัลกอริทึมก็ดีขึ้นพันเท่า รวมแล้วดีขึ้นล้านเท่า เป็นเรื่องที่ควรนำไปคิดเวลาเราคาดการณ์อนาคต โดย "ทรัพยากร" ในที่นี้คือเพชร
มีคำถามว่าสุดท้ายแล้วมันถูกใช้งานจริงอย่างไร เพราะ numerical optimization ก็มีข้อจำกัดทั่วไปแบบระบบอิงข้อมูล เช่น ความน่าเชื่อถือและปัญหาข้อมูล จนท้ายที่สุดคนสำคัญอาจยังตัดสินใจด้วย "เซนส์" อยู่ดีหรือไม่
มีคนบอกว่าบริษัทของตนใช้ solver ตลอดทั้งสแตก ตั้งแต่ optimization การจัดตารางแบตเตอรี่บ้านและ EV, การจัดตารางที่เหมาะที่สุดสำหรับพอร์ตบ้านหลายแสนหลัง, ไปจนถึงการซื้อขายพอร์ตดังกล่าวด้วย solver อีกทั้งราคาไฟฟ้า spot ของ EU ก็ถูกกำหนดโดยการรัน solver ขนาดยักษ์ตัวเดียวชื่อ Euphemia ด้วย โดยสรุปคือ ถ้าเป็นงานที่มีเป้าหมาย optimization ชัดเจนและผูกกับเงินจริง ๆ solver ถูกใช้กันอย่างแพร่หลาย
ยกตัวอย่างการใช้งานจริงในบริษัท FMCG ได้แก่ (1) วางแผนพนักงานขายและเส้นทางจัดส่ง, (2) จัดตารางเครื่องจักร บุคลากร และวัสดุสำหรับการผลิต, และ (3) กำหนดระดับสต๊อกที่เหมาะสมของคลังและศูนย์กระจายสินค้า แต่ยังไม่อัตโนมัติเต็มรูปแบบเพราะความยากของการพยากรณ์อุปสงค์
มีการแชร์ลิงก์กรณีศึกษาที่น่าอ้างอิง: กรณีศึกษา Gurobi, กรณีศึกษา CPLEX, กรณีศึกษา Hexaly (เดิม LocalSolver)
มีคนถามว่าเคยได้ยินว่า Gurobi แพงพอสมควร ใครพอแชร์ข้อมูลราคาได้ไหม
แม้ราคาที่แน่ชัดจะไม่เปิดเผย แต่ถ้าต้องการฝึก MIP ก็แนะนำว่าไม่จำเป็นต้องซื้อ solver เชิงพาณิชย์อย่าง XPRESS/Gurobi/CPLEX เพราะมีไลเซนส์นักศึกษาใช้ฟรี หรือจะใช้ MIP solver ฟรีแบบโอเพนซอร์สสำหรับงานไม่เชิงพาณิชย์ก็ได้ เช่น HiGHS, SCIP
เท่าที่ได้ยินมา การตั้งราคาเป็นแนว "โทรมาคุยต่อรอง" และดูว่าลูกค้าทำเงินได้มากแค่ไหนแล้วค่อยตั้งราคาให้เหมาะสม
มีการเน้นว่ามันถูกกว่าการตัดสินใจช้าและได้คำตอบกึ่งเหมาะสมมาก สำหรับปัญหาเล็ก solver ฟรีอย่าง GLPK ก็เพียงพอ แต่ในปัญหาใหญ่ระดับธุรกิจ การได้คำตอบให้ทันเวลามักแทบเป็นไปไม่ได้ ดังนั้น solver ระดับพรีเมียมจึงคุ้มราคา
มีคนจำได้ว่าประมาณ 10 ปีก่อน ค่าไลเซนส์สำหรับหลายเซิร์ฟเวอร์อยู่แถว ๆ 100,000 ดอลลาร์ แม้จะจำข้อจำกัดจำนวนผู้ใช้หรือจำนวนเซิร์ฟเวอร์ที่แน่ชัดไม่ได้ แต่ก็สะท้อนว่าอุตสาหกรรมยอมรับคุณค่านี้
Gurobi ยังมีบริการคลาวด์ที่คิดค่าบริการเป็นรายชั่วโมง และไลเซนส์ที่ไม่ใช่เชิงวิชาการมีราคาแพงมาก
มีคนเล่าว่าเคยลองเขียน Gomory cutting hyperplane เองในยุค 1990 และทึ่งว่าตลอดเวลานี้สาขานี้พัฒนาไปไกลแค่ไหน เมื่อก่อนการแก้ปัญหา LP ใช้เวลาสองเดือน ตอนนี้ 1 วินาทีก็พอ งานวิจัยของ Bixby รายงานว่าในช่วงปี 1990-2020 นั้น CPLEX และ Gurobi เร็วขึ้นเกือบ 4 ล้านเท่าโดยไม่เกี่ยวกับสมรรถนะของเครื่อง
ระหว่างปี 1988~2004 ฮาร์ดแวร์เร็วขึ้น 1600 เท่า และ LP solver เร็วขึ้น 3300 เท่า ซึ่งตอนนั้นก็สะสมเป็นการปรับปรุงความเร็วเกิน 5 ล้านเท่าแล้ว ขณะที่ commercial MILP solver ในช่วง 2001~2020 ก็เร็วขึ้นเกิน 1000 เท่าเช่นกัน (อัลกอริทึม 50, คอมพิวเตอร์ 20) มีคนสงสัยว่าน่าจะน่าสนใจหากรวบรวมข้อมูลการเพิ่มความเร็วในแต่ละสาขาแล้วแยกเป็นส่วนที่มาจากอัลกอริทึมกับคอมพิวเตอร์ เช่น ในวงการคอมไพเลอร์ก็มีผลลัพธ์อย่าง "กฎของ Proebsting" ที่บอกว่าทุก 18 ปี ความก้าวหน้าของคอมไพเลอร์ให้ผลเทียบเท่าพลังประมวลผลเพิ่ม 2 เท่า
มีความรู้สึกว่าแนวทาง ML/AI กลับถูกใช้กับปัญหาพวกนี้ไม่มากอย่างน่าประหลาด แม้จะมีงานที่ลองใช้ RL/GNN กับปัญหาขนาดเล็ก แต่สุดท้ายการซื้อไลเซนส์ Gurobi ดูจะเป็นตัวเลือกที่ดีที่สุด ช่วงหลังมีคนเห็นตัวอย่าง RL ใน optimization การจัดตารางด้วย แต่ประสิทธิภาพจริงยังไม่น่าพอใจ สำหรับปัญหาใหญ่ evolutionary algorithm ยังเหมาะกว่า และสุดท้ายถ้าตั้งสูตรปัญหาได้ดี วิธีแบบ OR ก็ดูมีประสิทธิภาพที่สุด
ทั้งนี้ก็ขึ้นอยู่กับชนิดของปัญหา เช่น การตัดสินใจเปิด/ปิดโรงไฟฟ้า (unit commitment) นั้นซับซ้อนมาก แต่ MILP solver สามารถค้นหาคำตอบ optimum ระดับ global ได้อย่างรวดเร็ว ขณะที่ genetic algorithm ไม่มีหลักประกันว่าจะหลุดจาก local minima ได้ และอาจช้าด้วย ส่วน neural network ก็ให้คำตอบที่ยังเป็น suboptimal เสมอ
SAT เป็นปัญหาแนว GOFAI แบบดั้งเดิม และคุณสามารถเขียน SAT solver ได้ในทุกภาษาตระกูล ML/AI ด้วยซ้ำ จึงอาจพูดได้ว่าแนวทาง "ML/AI" ก็ประยุกต์ใช้ได้มากพอสมควร
มีคอมเมนต์ว่าถ้าเพิ่มคำว่า pdf ไว้ในชื่อก็น่าจะดี
มีการชี้แจงว่าลิงก์นั้นไม่ได้ชี้ไปที่ pdf แต่ไปยังบทคัดย่อ (abstract)
และสามารถเพิ่มลิงก์อ้างอิง pdf ของงานวิจัยได้โดยตรง: https://inria.hal.science/hal-04776866v1/document
มีความเห็นว่า integer linear programming ดูไม่น่าซับซ้อนขนาดนั้น
มีคำอธิบายว่า graph vertex 3-coloring (G3C) เป็นทั้ง NP และ NP-Hard จึงเป็น NPC และมีผลลัพธ์ว่าถ้าแก้ ILP ทั่วไปได้ ก็แก้ G3C ได้ อีกทั้ง SAT ก็เป็น NP-Complete และถ้าแก้ SAT ได้ก็แก้ G3C ได้ ดังนั้นถ้าแก้ G3C ได้ก็ย่อมแก้ integer factorization (FAC) ได้ด้วย แม้ FAC จะไม่ใช่ NPC แต่ก็สำคัญมากในสภาพแวดล้อมการประมวลผลปัจจุบัน จึงพออนุมานได้ว่าถ้าแก้ ILP ทั่วไปได้ ก็อาจทำลายอัลกอริทึมเข้ารหัสหลัก ๆ ได้ แสดงให้เห็นว่า ILP เป็นปัญหาที่ยากมาก จุดที่หลายคนสับสนคือ ปัญหา NPC มักแก้อินสแตนซ์แบบสุ่มได้ค่อนข้างง่าย และสัดส่วนของอินสแตนซ์ที่ยากกลับยิ่งลดลงเมื่อขนาดปัญหาใหญ่ขึ้น
ปัญหาพนักงานขายเดินทาง (Travelling Salesperson Problem, TSP) ก็สามารถ encode เป็น ILP ได้เช่นกัน ซึ่งบ่งชี้ว่ามันยากพอสมควร
คุณต้องหาจำนวนเต็มที่ตรงกับเงื่อนไขได้ดีที่สุด ซึ่งแม้ดูคล้ายจำนวนจริง แต่โดยพื้นฐานต่างกันโดยสิ้นเชิง ไม่มีวิธีแก้แบบทั่วไป มีเพียงฮิวริสติกสำหรับกรณีเฉพาะทางที่ดีมาก ๆ เท่านั้น
มันยากกว่า linear programming
หรืออาจมองว่าเป็นปัญหาที่สมจริงมากก็ได้