อ่าน 5 นาที
ตัวแก้ปัญหาการเพิ่มประสิทธิภาพ HiGHS
HiGHS เป็นซอฟต์แวร์โอเพนซอร์สสำหรับแก้ปัญหา การเขียนโปรแกรมเชิงเส้น (LP) การเขียนโปรแกรมจำนวนเต็มแบบผสม (MIP) และ การเขียนโปรแกรมกำลังสองแบบ นูน (QP) [ 1 ] [ 2 ]
ตัวแก้ปัญหาการเพิ่มประสิทธิภาพ HiGHS
| สำนักงานใหญ่ | เอดินบะระ |
|---|---|
| ที่ตั้ง |
|
ผู้อำนวยการ | จูเลียน ฮอลล์ |
บุคคลสำคัญ |
|
| พนักงาน | 8 |
| เว็บไซต์ | www.highs.dev |
| ไฮเอชเอส | |
|---|---|
| เวอร์ชันเสถียร | ดูบันทึกการเผยแพร่ |
| เขียนเป็น | ซี++ |
| พิมพ์ | ชุดเครื่องมือแก้ปัญหาการหาค่าเหมาะสมที่สุด |
| ใบอนุญาต | เอ็มไอที |
| เว็บไซต์ | www.highs.dev |
| ที่เก็บข้อมูล |
|
HiGHSเป็นซอฟต์แวร์โอเพนซอร์สสำหรับแก้ปัญหาการเขียนโปรแกรมเชิงเส้น (LP) การเขียนโปรแกรมจำนวนเต็มแบบผสม (MIP) และการเขียนโปรแกรมกำลังสองแบบ นูน (QP) [ 1 ] [ 2 ]
HiGHS เขียนด้วยภาษาC++และเผยแพร่ภายใต้ ใบอนุญาต MIT โดยมีอินเทอร์เฟซการเขียนโปรแกรมสำหรับ C , Python , Julia , Rust , R , JavaScript , FortranและC#ไม่มีการพึ่งพาภายนอก ใดๆ มี wrapper ขนาดเล็กที่สะดวกสำหรับ Python ให้ใช้งานได้ผ่าน แพ็คเกจ highspyบน PyPI นอกจาก นี้ HiGHS ยังสามารถเรียกใช้งานได้ผ่านNuGet [ 3 ]
แม้ว่าโดยทั่วไปจะเป็นแบบเธรดเดียว แต่ส่วนประกอบตัวแก้ปัญหาบางส่วนสามารถใช้สถาปัตยกรรมมัลติคอร์ได้ และตั้งแต่เวอร์ชัน 1.10.0 เป็นต้นไปสามารถเรียกใช้ตัวแก้ปัญหา LP อันดับแรกบน GPU ของ NVIDIA ได้ HiGHS ได้รับการออกแบบมาเพื่อแก้ปัญหาโมเดลขนาดใหญ่และใช้ประโยชน์จากความเบาบางของปัญหาประสิทธิภาพของมันเมื่อเทียบกับซอฟต์แวร์เชิงพาณิชย์และซอฟต์แวร์โอเพนซอร์สอื่นๆ จะได้รับการตรวจสอบเป็นระยะโดยใช้เกณฑ์ มาตรฐาน อุตสาหกรรม[ 4 ]
คำว่าHiGHSอาจหมายถึงทั้งโครงการพื้นฐานและทีมขนาดเล็กที่รับผิดชอบการพัฒนาซอฟต์แวร์ด้วยเช่นกัน
ประวัติศาสตร์
HiGHS สร้างขึ้นจากตัวแก้ปัญหาที่เขียนโดยนักศึกษาปริญญาเอกจากกลุ่มวิจัยการเพิ่มประสิทธิภาพและการดำเนินงาน [ 5 ]ในคณะคณิตศาสตร์ มหาวิทยาลัยเอดินบะระต้นกำเนิดของมันสามารถสืบย้อนไปได้ถึงปลายปี 2016 เมื่อ Ivet Galabova ได้รวม LP presolve ของเธอเข้ากับขั้นตอน simplex crash ของ Julian Hall และตัวแก้ปัญหา dual simplex ของ Huangfu Qi เพื่อแก้ปัญหา LP ในอุตสาหกรรมประเภทหนึ่งได้เร็วกว่าตัวแก้ปัญหาโอเพนซอร์สที่ดีที่สุดในเวลานั้น[ 6 ] ตั้งแต่นั้นมา API C++ และอินเทอร์เฟซภาษาอื่นๆ ได้รับการพัฒนาขึ้น และยูทิลิตี้การสร้างแบบจำลองและตัวแก้ปัญหาประเภทอื่นๆ ก็ได้ถูกเพิ่มเข้ามา
ในช่วงต้นปี 2022 โครงการสร้างแบบจำลองระบบพลังงานแบบเปิด GenXและPyPSAได้รับรองการขอรับทุนสำหรับตัวแก้ปัญหา HiGHS เพื่อลดการพึ่งพาไลบรารีที่เป็นกรรมสิทธิ์ ของ ชุมชน[ 7 ]
ผู้แก้ปัญหา
ซิมเพล็กซ์
HiGHS มีการใช้งานวิธีซิมเพล็กซ์แบบปรับปรุง ทั้งแบบดั้งเดิมและแบบคู่ สำหรับการแก้ปัญหา LP โดยอิงตามเทคนิคที่อธิบายโดย Hall และ McKinnon (2005) [ 8 ]และ Huangfu และ Hall (2015, 2018) [ 9 ] [ 1 ]ซึ่งรวมถึงการใช้ประโยชน์จากความเบาบางเป็นพิเศษเมื่อแก้ระบบเชิงเส้นในการใช้งานซิมเพล็กซ์ และสำหรับการแก้ซิมเพล็กซ์แบบคู่ การใช้ประโยชน์จากมัลติเธรดดิ้ง ประสิทธิภาพของตัวแก้ซิมเพล็กซ์เมื่อเทียบกับซอฟต์แวร์เชิงพาณิชย์และซอฟต์แวร์โอเพนซอร์สอื่นๆ ได้รับการรายงานเป็นประจำโดยใช้เกณฑ์มาตรฐานอุตสาหกรรม[ 10 ]
จุดภายใน
HiGHS มี การนำ วิธีการจุดภายในมาใช้ในการแก้ปัญหา LP โดยอิงตามเทคนิคที่อธิบายโดย Schork และ Gondzio (2020) [ 11 ]โดดเด่นตรงที่สามารถแก้ระบบนิวตันแบบวนซ้ำโดยใช้ วิธี การไล่ระดับคอนจูเกตแบบปรับสภาพล่วงหน้าแทนที่จะแก้โดยตรงผ่าน การแยกส่วน LDL*ประสิทธิภาพของตัวแก้จุดภายในเมื่อเทียบกับซอฟต์แวร์เชิงพาณิชย์และซอฟต์แวร์โอเพนซอร์สอื่นๆ ได้รับการรายงานเป็นประจำโดยใช้เกณฑ์มาตรฐานอุตสาหกรรม[ 12 ]
เวอร์ชัน 1.12 ได้มีการนำวิธีการจุดภายในมาใช้ในการแก้ปัญหา LP โดยอิงตามเทคนิคที่อธิบายโดย Zanetti และ Gondzio (2025) [ 13 ]คุณสมบัติเสริมนี้มีชื่อว่า HiPO และขึ้นอยู่กับไลบรารีBLAS [ 14 ]
การเขียนโปรแกรมจำนวนเต็มแบบผสม
HiGHS มี ตัวแก้ปัญหา แบบ branch-and-cutสำหรับปัญหา MIP ประสิทธิภาพของมันเมื่อเทียบกับซอฟต์แวร์เชิงพาณิชย์และซอฟต์แวร์โอเพนซอร์สอื่นๆ ได้รับการรายงานเป็นประจำโดยใช้เกณฑ์มาตรฐานอุตสาหกรรม[ 15 ]
การเขียนโปรแกรมเชิงกำลังสอง
HiGHS มีตัวแก้ปัญหาเซตแบบแอคทีฟสำหรับปัญหา การเขียนโปรแกรมเชิงควาดราติก แบบนูน (QP)
แอปพลิเคชันที่ใช้ HiGHS
HiGHS สามารถใช้เป็นไลบรารีแก้ปัญหาแบบสแตนด์อะโลนในแอปพลิเคชันเฉพาะทางได้ แต่สภาพแวดล้อมการคำนวณเชิงตัวเลข แพ็คเกจการเขียนโปรแกรมเพื่อเพิ่มประสิทธิภาพ และโครงการวิเคราะห์เชิงตัวเลขเฉพาะด้านก็เริ่มนำซอฟต์แวร์นี้ไปรวมไว้ในระบบของตนด้วยเช่นกัน
การสนับสนุนการคำนวณเชิงตัวเลข
เนื่องจาก HiGHS เป็นซอฟต์แวร์โอเพนซอร์สที่มีประสิทธิภาพและอยู่ระหว่างการพัฒนาอย่างต่อเนื่อง จึงถูกนำไปใช้ในโครงการซอฟต์แวร์แอปพลิเคชันที่ให้การสนับสนุนการวิเคราะห์เชิงตัวเลขมากขึ้นเรื่อยๆตัวอย่างเช่นไลบรารีวิทยาศาสตร์ SciPy ใช้ HiGHS เป็นตัวแก้ปัญหา LP [ 16 ] ตั้งแต่เวอร์ชัน 1.6.0 [ 17 ]และตัวแก้ปัญหา MIP ของ HiGHS สำหรับการเพิ่มประสิทธิภาพแบบไม่ต่อเนื่องตั้งแต่เวอร์ชัน 1.9.0 [ 18 ]นอกจากจะมีอินเทอร์เฟซสำหรับ HiGHS แล้ว ภาษาการสร้างแบบจำลอง JuMPสำหรับJulia [ 19 ]ยังอธิบายการใช้งาน HiGHS โดยเฉพาะในเอกสารประกอบการใช้งานอีกด้วย[ 20 ]ตัวแก้ปัญหา MIP ใน ไลบรารี NAGใช้ HiGHS เป็นพื้นฐาน[ 21 ]และ HiGHS เป็นตัวแก้ปัญหา LP และ MIP เริ่มต้นในMathWorks Optimization Toolbox [ 22 ]
แบบจำลองระบบพลังงานแบบเปิด
ปัจจุบัน HiGHS ยังถูกใช้โดยแอปพลิเคชันเฉพาะโดเมนบางส่วน รวมถึง สภาพแวดล้อม การสร้างแบบจำลองระบบพลังงานแบบเปิด หนึ่ง แห่ง เวอร์ชันบนเว็บของ แบบจำลองหลายภาคส่วนของยุโรป PyPSAใช้ตัวแก้ปัญหา HiGHS เป็นค่าเริ่มต้นตั้งแต่เดือนกุมภาพันธ์ 2022 [ 23 ] [ 24 ] โครงการ GridCal ซึ่งพัฒนาซอฟต์แวร์ระบบไฟฟ้าที่เน้นการวิจัย ได้เพิ่มการสนับสนุน HiGHS เป็นตัวเลือกในเดือนกุมภาพันธ์ 2022 [ 25 ] ในช่วงต้นปี 2026 Open Energy Transition ได้ดำเนินการเปรียบเทียบประสิทธิภาพเฉพาะโดเมนบางส่วน[ 26 ]
ดูเพิ่มเติม
- รายชื่อซอฟต์แวร์เพิ่มประสิทธิภาพ
- การเพิ่มประสิทธิภาพทางคณิตศาสตร์
- การเปรียบเทียบเชิงตัวเลข
- วิธีซิมเพล็กซ์
ลิงก์ภายนอก
- คลังเก็บข้อมูล GitHub
- เอกสารประกอบซอฟต์แวร์
สรุปเนื้อหา
ข้อมูลสำคัญจากบทความ
ข้อมูลสำคัญเกี่ยวกับ ตัวแก้ปัญหาการเพิ่มประสิทธิภาพ HiGHS
HiGHS เป็นซอฟต์แวร์โอเพนซอร์สสำหรับแก้ปัญหา การเขียนโปรแกรมเชิงเส้น (LP) การเขียนโปรแกรมจำนวนเต็มแบบผสม (MIP) และ การเขียนโปรแกรมกำลังสองแบบ นูน (QP) [ 1 ] [ 2 ]
ประวัติศาสตร์
HiGHS สร้างขึ้นจากตัวแก้ปัญหาที่เขียนโดยนักศึกษาปริญญาเอกจากกลุ่มวิจัยการเพิ่มประสิทธิภาพและการดำเนินงาน [ 5 ] ในคณะคณิตศาสตร์ มหาวิทยาลัย เอดินบะระ ต้นกำเนิดของมันสามารถสืบย้อนไปได้ถึงปลายปี 2016 เมื่อ Ivet Galabova ได้รวม LP presolve ของเธอเข้ากับขั้นตอน...
ซิมเพล็กซ์
HiGHS มีการใช้งาน วิธีซิมเพล็กซ์แบบปรับปรุง ทั้งแบบดั้งเดิมและแบบคู่ สำหรับการแก้ปัญหา LP โดยอิงตามเทคนิคที่อธิบายโดย Hall และ McKinnon (2005) [ 8 ] และ Huangfu และ Hall (2015, 2018) [ 9 ] [ 1 ]...
จุดภายใน
HiGHS มี การนำ วิธีการจุดภายใน มาใช้ในการแก้ปัญหา LP โดยอิงตามเทคนิคที่อธิบายโดย Schork และ Gondzio (2020) [ 11 ] โดดเด่นตรงที่สามารถแก้ระบบนิวตันแบบวนซ้ำโดยใช้ วิธี การไล่ระดับคอนจูเกตแบบปรับสภาพล่วงหน้า แทนที่จะแก้โดยตรงผ่าน การแยกส่วน LDL*...