ฉันตัดสินใจที่จะแก้ไขคำตอบอย่างรุนแรงตามความคิดเห็นบางส่วน
ฉันไม่ได้ใช้ TAO จากการอ่านเอกสารดูเหมือนว่าวิธีเดียวที่ TAO สามารถจัดการปัญหาการเพิ่มประสิทธิภาพแบบ จำกัด (ไม่รวมกรณีพิเศษของข้อ จำกัด เฉพาะกล่องเท่านั้น) คือการแปลงปัญหาเป็นความไม่เท่าเทียมกันของตัวแปรโดยใช้เงื่อนไขKarush-Kuhn-Tucker (KKT)ซึ่ง มีความจำเป็นภายใต้คุณสมบัติของข้อ จำกัด (ประเภทที่ฉันมักจะเห็นคือเงื่อนไขจุดตำหนิ ) และเพียงพอภายใต้การนูนของวัตถุประสงค์และข้อ จำกัด (โดยทั่วไปแล้วประเภท 1 invexity) ถ้าfnonconvex สูตรความไม่เท่าเทียมของตัวแปรที่ใช้เงื่อนไข KKT นั้นไม่เทียบเท่ากับปัญหาการปรับให้เหมาะสมดั้งเดิมดังนั้นถ้าคุณต้องการให้โลกเหมาะสมที่สุดสำหรับปัญหาการปรับให้เหมาะสมคุณไม่ควรแสดงว่ามันไม่เท่าเทียมกัน มันจะเป็นการยากที่จะหาค่าที่เหมาะสมระดับโลกต่อไปสำหรับการปรับให้เหมาะสมแบบ จำกัด PDE (ดูด้านล่าง) ดังนั้นอาจเพิกเฉยต่อรายละเอียดนี้ได้ เมื่อพูดถึง Wolfgang ฉันจะไม่เชื่อเรื่องการใช้ TAO ฉันสงสัยอยู่แล้วเพราะมันไม่ได้ใช้วิธีการในการแก้โปรแกรมที่ไม่เชิงเส้น (NLPs) เป็น NLP แทนที่จะเป็นความไม่เท่าเทียมกันของความแปรปรวน
ฉันไม่ใช่ผู้เชี่ยวชาญในการปรับให้เหมาะสมแบบ จำกัด PDE; เพื่อนร่วมงานและเพื่อนร่วมงานของฉันทำงานเกี่ยวกับปัญหาการปรับให้เหมาะสมแบบ ODE ฉันรู้ว่าสำหรับสูตรที่ล่วงล้ำ Larry Biegler (และคนอื่น ๆ ) จะใช้วิธีการจัดวางเพื่อแยก PDE ออกและทำให้มันมีขนาดใหญ่มากกระจัดกระจาย NLP แล้วเขาจะแก้ปัญหาโดยใช้วิธีการจุดภายใน ในการแก้ปัญหาให้เกิดประโยชน์สูงสุดในระดับโลกคุณจะต้องสร้างการผ่อนคลายแบบนูน แต่เท่าที่ฉันรู้วิธีนี้ไม่ได้ถูกนำมาใช้เนื่องจากปัญหาการเพิ่มประสิทธิภาพที่มีข้อ จำกัด ของ PDE นำไปสู่ NLP ขนาดใหญ่เช่นนั้น การมองโลกในแง่ดี ฉันพูดถึงรายละเอียดเหล่านี้เท่านั้นเนื่องจากการกำหนดปัญหามีอิทธิพลอย่างมากต่อแพ็คเกจตัวเลือกการแก้ปัญหา สำหรับสูตรที่ไม่เป็นอันตราย PDE ที่ซ้ำ ๆ จะแก้ไขข้อมูลการไล่ระดับสีสำหรับอัลกอริทึมการเพิ่มประสิทธิภาพ
บางคนที่ศึกษาปัญหาการปรับให้เหมาะสมแบบ จำกัด ODE ใช้วิธีการที่คล้ายกันในการแยกแยะปัญหาโดยใช้การจัดระเบียบและวิธีการเชิงตัวเลข วิธีอื่นในการเพิ่มประสิทธิภาพที่ จำกัด โดย ODE คือการผ่อนคลายปัญหาและแยกส่วน ODE ออกซึ่งเป็นวิธีการที่ใช้ในห้องปฏิบัติการของฉัน อาจเป็นไปได้ที่จะผ่อนคลายบางคลาสของปัญหาการปรับให้เหมาะสมแบบ จำกัด PDE แต่ฉันไม่ทราบว่ามีงานที่ทำเกินกว่าที่ทำกับปัญหานั้น (มันเป็นโครงการที่มีศักยภาพในห้องปฏิบัติการของฉัน ณ จุดหนึ่ง)
ในที่สุดสิ่งที่สำคัญก็คือความแตกต่างไม่ได้ของ PDE ดั้งเดิม แต่ความแตกต่างของความสามารถในการแยกส่วนที่เกี่ยวกับตัวแปรการตัดสินใจ
หากปัญหาที่ discretized มีความแตกต่างสองเท่าเกี่ยวกับตัวแปรการตัดสินใจแพ็คเกจต่อไปนี้จะคำนวณโซลูชันท้องถิ่น:
- IPOPTเป็นเครื่องมือแก้จุดภายในแบบโอเพ่นซอร์สที่พัฒนาโดย Andreas Wächterที่ IBM มันเป็นรหัสที่มีคุณภาพสูงมาก ในฐานะที่เป็นนักแก้จุดภายในมันจะดีกว่าสำหรับฟังก์ชั่นวัตถุประสงค์ที่มีเมทริกซ์จาโคเบียนขนาดใหญ่ที่กระจัดกระจายและจะเป็นประโยชน์สำหรับการเพิ่มประสิทธิภาพที่ จำกัด PDE
- SNOPTเป็นตัวแก้ปัญหาการเขียนโปรแกรมกำลังสองเชิงพาณิชย์ที่เป็นรหัสคุณภาพสูงอีกตัวหนึ่ง มันจะดีกว่าสำหรับฟังก์ชั่นวัตถุประสงค์ที่มีเมทริกซ์จาโคเบียนขนาดเล็กที่มีความหนาแน่นสูงดังนั้นฉันจะไม่คาดหวังว่ามันจะมีประโยชน์สำหรับการเพิ่มประสิทธิภาพที่ จำกัด PDE แต่คุณสามารถลองได้
- NLoptเป็นโค้ดโอเพ่นซอร์สขนาดเล็กที่เขียนโดย Steven Johnson ที่ MIT ซึ่งมีการใช้งานขั้นพื้นฐานของอัลกอริธึมการปรับให้เหมาะสมแบบไม่เชิงเส้นจำนวนหนึ่ง อัลกอริธึมทั้งหมดควรเพียงพอสำหรับการแก้ปัญหาข้อ จำกัด
fmincon
ใน Matlab ใช้อัลกอริธึมจำนวนหนึ่ง (รวมถึงจุดภายในและการเขียนโปรแกรมกำลังสองต่อเนื่อง) สำหรับการปรับให้เหมาะสมแบบไม่เชิงเส้น
- GAMSและAMPLเป็นทั้งภาษาการสร้างแบบจำลองเชิงพาณิชย์ที่ใช้เพื่อกำหนดปัญหาการปรับให้เหมาะสมและมีส่วนต่อประสานกับตัวแก้ปัญหาการเขียนโปรแกรมแบบไม่เชิงเส้นจำนวนมาก ฉันรู้ว่า GAMS มีรุ่นทดลองที่สามารถใช้สำหรับปัญหาที่มีขนาดเล็กลงและอินสแตนซ์ของปัญหาสามารถส่งไปยังเซิร์ฟเวอร์ NEOSเพื่อหาวิธีแก้ไขได้เช่นกัน
อย่างไรก็ตามอาจเป็นไปได้ว่าการแยกส่วนนั้นทำได้เพียงครั้งเดียวเท่านั้นที่แตกต่างกันไปตามตัวแปรการตัดสินใจซึ่งในกรณีนี้คุณควรใช้โคตรที่สูงชันที่คาดการณ์ไว้หรือวิธีการเพิ่มประสิทธิภาพลำดับแรกอื่น ๆ เมื่อทำการคำนวณโซลูชันท้องถิ่น เนื่องจากการศึกษาจำนวนมากมุ่งเน้นไปที่ปัญหาที่สามารถใช้วิธีการอันดับที่สอง (และเมื่อคุณสามารถใช้งานได้คุณสมบัติการบรรจบกันอันยอดเยี่ยมของพวกเขาทำให้พวกเขาเป็นทางเลือกที่ดีกว่า) ฉันจึงไม่สามารถหาการใช้งาน ปัญหาการบ้าน ห้องสมุด GNU วิทยาศาสตร์มีการดำเนินการ แต่เป็นเพียงสำหรับการสาธิต คุณอาจต้องเขียนโค้ดการใช้งานของคุณเอง
หากปัญหาต่อเนื่องเฉพาะกับตัวแปรการตัดสินใจคุณสามารถใช้วิธีการโดยตรงเพื่อแก้ปัญหาในพื้นที่ มีการสำรวจที่ยอดเยี่ยมเกี่ยวกับวิธีการโดยตรงโดยเป็นKolda ลูอิสและ Torczon ส่วนใหญ่ที่รู้จักกันอย่างแพร่หลายของวิธีการเหล่านี้เป็นNelder-มธุรสเริมอัลกอริทึม ไม่รับประกันว่าจะมาบรรจบกันกับค่าต่ำสุดในหลายมิติ แต่พบว่ามีการใช้งานจริงอย่างมาก
ทางเลือกของแพ็คเกจขึ้นอยู่กับภาษาที่คุณต้องการใช้ในการแก้ปัญหาหากการแก้ปัญหาที่ถูกผูกไว้เป็นเพียงส่วนหนึ่งของอัลกอริทึมที่คุณต้องการนำไปใช้ (หรือถ้าเป็นขั้นตอนเดียวในอัลกอริทึมของคุณ เป็นไปได้มากขึ้นสำหรับรหัสการผลิต) ประเภทและขนาดของปัญหาและหากคุณต้องการความเท่าเทียมใด ๆ