คำถามติดแท็ก nonlinear-programming

17
มีตัวแก้ปัญหาการเขียนโปรแกรมแบบไม่เชิงเส้นคุณภาพสูงสำหรับ Python หรือไม่?
ฉันมีปัญหาการเพิ่มประสิทธิภาพทั่วโลกที่ไม่ท้าทายเพื่อแก้ปัญหา ปัจจุบันผมใช้กล่องเครื่องมือเพิ่มประสิทธิภาพของ MATLAB (โดยเฉพาะfmincon()กับอัลกอริทึม = 'sqp') ซึ่งมีประสิทธิภาพมาก อย่างไรก็ตามรหัสของฉันส่วนใหญ่อยู่ใน Python และฉันก็ชอบที่จะเพิ่มประสิทธิภาพใน Python ด้วยเช่นกัน มีตัวแก้ NLP ที่มีการผูก Python ที่สามารถแข่งขันได้fmincon()หรือไม่ มันจะต้อง สามารถรับมือกับความไม่เสมอภาคและความไม่เท่าเทียมกันได้ ไม่ต้องการให้ผู้ใช้จัดหายาโคบ ไม่เป็นไรหากไม่รับประกันว่าจะมีประสิทธิภาพระดับโลก ( fmincon()ไม่) fmincon()ฉันกำลังมองหาบางสิ่งบางอย่างที่ทนทานลู่ไปยังท้องถิ่นที่เหมาะสมแม้สำหรับความท้าทายปัญหาและแม้ว่ามันจะช้ากว่าเล็กน้อย ฉันได้พยายามแก้หลายที่ให้บริการผ่าน OpenOpt และพบว่าพวกเขาจะด้อยกว่าของ fmincon/sqpMATLAB เพียงเพื่อเน้นฉันมีสูตรเวิ้งว้างและแก้ปัญหาที่ดี เป้าหมายของฉันคือการเปลี่ยนภาษาเพื่อให้เวิร์กโฟลว์มีความคล่องตัวมากขึ้น เจฟฟ์ชี้ให้เห็นว่าคุณลักษณะบางอย่างของปัญหาอาจเกี่ยวข้องกัน พวกเขาคือ: 10-400 ตัวแปรการตัดสินใจ 4-100 ข้อ จำกัด ความเท่าเทียมกันของพหุนาม (ดีกรีพหุนามมีช่วงตั้งแต่ 1 ถึงประมาณ 8) จำนวนข้อ จำกัด ของความไม่เท่าเทียมกันที่มีเหตุผลเท่ากับจำนวนตัวแปรการตัดสินใจประมาณสองเท่า ฟังก์ชั่นวัตถุประสงค์เป็นหนึ่งในตัวแปรการตัดสินใจ ชาวจาโคเบียนแห่งข้อ จำกัด ความเท่าเทียมมีความหนาแน่นสูงเช่นเดียวกับชาวจาโคเบียนแห่งข้อ จำกัด …

8
แพคเกจซอฟต์แวร์สำหรับการเพิ่มประสิทธิภาพที่ จำกัด ?
ฉันกำลังมองหาที่จะแก้ปัญหาการเพิ่มประสิทธิภาพข้อ จำกัด ที่ฉันรู้ขอบเขตของตัวแปรบางตัว (โดยเฉพาะข้อ จำกัด แบบกล่อง) argminuf(u,x)arg⁡minuf(u,x) \arg \min_u f(u,x) ภายใต้ a ≤ d ( u , x ) ≤ bc(u,x)=0c(u,x)=0 c(u,x) = 0 a≤d(u,x)≤ba≤d(u,x)≤b a \le d(u,x) \le b โดยที่ยูuuคือเวกเตอร์ของตัวแปรการออกแบบxxxเป็นเวกเตอร์ของตัวแปรสถานะและc ( u , x )c(u,x)c(u,x)เป็นข้อ จำกัด ด้านความเท่าเทียมกัน (โดยทั่วไปคือ PDE) ข้อ จำกัด ด้านล่างและด้านบนaaaและขbbอาจเป็นตัวแปรเชิงพื้นที่ แพคเกจใดสามารถจัดการระบบของฟอร์มนี้

1
แรงจูงใจที่ใช้งานง่ายสำหรับการอัพเดต BFGS
ฉันกำลังสอนชั้นสำรวจการวิเคราะห์เชิงตัวเลขและกำลังมองหาแรงจูงใจสำหรับวิธีการ BFGS สำหรับนักเรียนที่มีพื้นฐาน / สัญชาตญาณ จำกัด ในการเพิ่มประสิทธิภาพ! ในขณะที่ฉันไม่มีเวลาพิสูจน์อย่างจริงจังว่าทุกอย่างมาบรรจบกันฉันกำลังมองหาแรงจูงใจที่สมเหตุสมผลว่าทำไมการอัปเดตของ BFGS Hessian จึงอาจปรากฏขึ้น วิธีการค้นพบของ Broyden (การเขียนของฉันอยู่ที่นี่ ) สามารถกระตุ้นได้โดยขอให้การประมาณของคุณในปัจจุบันของ Jacobian ลดความแตกต่างกับ Jacobian เก่าภายใต้ข้อ จำกัด ที่คำนึงถึงเซคแคนต์ล่าสุด: J_k (\ vec x_k- \ vec x_ {k-1}) = f (\ vec x_k) -f (\ vec x_ {k-1 }) J k ( → x k - → x …

2
วิธีการสลายตัวสำหรับการแก้ปัญหาการเพิ่มประสิทธิภาพขนาดใหญ่
ฉันสงสัยว่าใครมีคำแนะนำสำหรับข้อความหรือบทความการสำรวจเกี่ยวกับวิธีการสลายตัว (เช่นแรก, คู่, Dantzig – Wolfe สลายตัว) สำหรับการแก้ปัญหาการเขียนโปรแกรมคณิตศาสตร์ขนาดใหญ่ ฉันชอบ"บันทึกย่อเกี่ยวกับวิธีการสลายตัว"ของสตีเฟ่นบอยด์และมันจะเป็นการดีมากถ้าจะหาตัวอย่างเช่นตำราเรียนที่ครอบคลุมหัวข้อนี้โดยละเอียด

2
เหตุใด SQP จึงดีกว่า Augmented Lagrangian สำหรับการโปรแกรมแบบไม่เชิงเส้น?
ในรายงานทางเทคนิคเกี่ยวกับกาลาฮัด [1] ผู้แต่งระบุในบริบทของปัญหาการเขียนโปรแกรมแบบไม่เชิงเส้นทั่วไป สำหรับจิตใจของเราไม่เคยสงสัยเลยว่าวิธีการ SQP [การเขียนโปรแกรมกำลังสองตามลำดับ] จะประสบความสำเร็จมากขึ้น [มากกว่าวิธี Augmented Lagrangian] ในระยะยาว ... อะไรคือพื้นฐานของความเชื่อนั้น เช่นมีผลทางทฤษฎีใด ๆ ที่แนะนำวิธี SQP ควรเร็วขึ้น / เชื่อถือได้มากกว่าวิธี Augmented Lagrangian หรือไม่? [1] Galahad ห้องสมุดของแพ็คเกจ Fortran 90 ที่ปลอดภัยสำหรับการเพิ่มประสิทธิภาพแบบไม่เชิงเส้นขนาดใหญ่โดย Gould, Orban และ Toint

2
ไลบรารี C ++ สำหรับการลดข้อ จำกัด แบบไม่เชิงเส้น
ขณะนี้ฉันกำลังพยายามแก้ไขปัญหาการลดข้อ จำกัด แบบไม่เชิงเส้นเนื่องจากมีการใช้งานในฟังก์ชัน "fmincon" ของ matlab ความคาดหวังของฉันคือลด (fun1, x0, uB, lB, fun2) โดยที่ x0 เป็นสถานะเริ่มต้น fun1 คือฟังก์ชั่นที่ต้องลดให้น้อยที่สุด uB เป็นขอบเขตด้านบน lB เป็นขอบเขตล่างและ fun2 เป็นฟังก์ชันที่ให้เวกเตอร์ / inequalities ตามที่อธิบายไว้ในhttp://www.mathworks.com/help/optim/ug/fmincon.htmlเป็นฟังก์ชั่น nonlcon เวกเตอร์เหล่านี้มีการเปลี่ยนแปลงผ่านการวนซ้ำเช่นกัน (พวกมันไม่ใช่เชิงเส้นขึ้นอยู่กับ x_n, การวนซ้ำ n-th ของเวกเตอร์การแก้ปัญหา) ในการนำ MATLAB มาใช้จะอยู่ในรูปแบบ c (x) <= 0 นี่เป็นรหัสชิ้นสุดท้ายที่จำเป็นต้องทำการย้ายจาก matlab ไปยัง c ++ และฉันพยายามอย่างมากในขณะที่พยายามค้นหาไลบรารี c ++ ที่เหมาะสมซึ่งมีอัลกอริธึมนี้ นี่คือเหตุผลที่ฉันขอความช่วยเหลือที่นี่และฉันจะขอบคุณมากถ้าคุณสามารถให้ความเชี่ยวชาญของคุณ …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.