คำถามติดแท็ก convex-optimization

Convex Optimization เป็นกรณีพิเศษของการเพิ่มประสิทธิภาพทางคณิตศาสตร์ที่พื้นที่ที่เป็นไปได้จะนูนและมีวัตถุประสงค์เพื่อลดฟังก์ชันนูนหรือเพิ่มฟังก์ชันเว้าให้ใหญ่ที่สุด

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

3
ระยะทางแบบยุคลิดใน Octave
ฉันอยากรู้ว่ามีวิธีที่รวดเร็วในการคำนวณระยะทางแบบยุคลิดของเวกเตอร์สองตัวใน Octave หรือไม่ ดูเหมือนว่าไม่มีฟังก์ชั่นพิเศษสำหรับสิ่งนั้นดังนั้นฉันควรใช้สูตรด้วยsqrtหรือไม่

5
ลดผลรวมของส่วนเบี่ยงเบนสัมบูรณ์ ( ระยะทาง
ฉันมีชุดข้อมูลx1,x2,…,xkx1,x2,…,xkx_{1}, x_{2}, \ldots, x_{k}และต้องการค้นหาพารามิเตอร์mmmเพื่อลดผลรวม∑i=1k∣∣m−xi∣∣.∑i=1k|m−xi|.\sum_{i=1}^{k}\big|m-x_i\big|. นั่นคือ minm∑i=1k∣∣m−xi∣∣.minm∑i=1k|m−xi|.\min_{m}\sum_{i=1}^{k}\big|m-x_i\big|.

2
อะไรคือข้อดี / ข้อเสียของวิธีการจุดภายในด้วยวิธี Simplex สำหรับการเพิ่มประสิทธิภาพเชิงเส้น?
ดังที่ฉันเข้าใจเนื่องจากการแก้ปัญหาของโปรแกรมเชิงเส้นเกิดขึ้นเสมอที่จุดสุดยอดของชุด polyhedral ที่เป็นไปได้ (หากมีวิธีการแก้ปัญหาและค่าฟังก์ชันวัตถุประสงค์ที่เหมาะสมที่สุดถูก จำกัด ขอบเขตจากด้านล่างสมมติว่าเป็นปัญหาการย่อขนาด ภายในของภูมิภาคที่เป็นไปได้จะดีกว่าไหม มันมาบรรจบกันเร็วขึ้นไหม? ภายใต้สถานการณ์ใดจะเป็นประโยชน์ที่จะใช้วิธี simplex เหนือวิธีจุดภายใน? จะง่ายกว่าที่จะใช้ในรหัสกว่าอีกหรือไม่

2
การแก้ปัญหากำลังสองน้อยที่สุดด้วยข้อ จำกัด เชิงเส้นใน Python
ฉันต้องการแก้ไข s.t.minx∥Ax−b∥22,∑ixi=1,xi≥0,∀i.minx‖Ax−b‖22,s.t.∑ixi=1,xi≥0,∀i.\begin{alignat}{1} & \min_{x}\|Ax - b\|^2_{2}, \\ \mathrm{s.t.} & \quad\sum_{i}x_{i} = 1, \\ & \quad x_{i} \geq 0, \quad \forall{i}. \end{alignat} ฉันคิดว่ามันเป็นปัญหากำลังสองซึ่งควรแก้ไขด้วยCVXOPTแต่ฉันไม่สามารถหาวิธีได้

2
CVXOPT VS OpenOpt
CVXOPT: http://abel.ee.ucla.edu/cvxopt/index.html OpenOpt: http://openopt.org/Welcome ความสัมพันธ์ระหว่างพวกเขาคืออะไร? อะไรคือข้อดี / ข้อเสียของพวกเขาตามลำดับ? BTW มีห้องสมุดทั่วไปที่มีคุณภาพสูงอื่น ๆ ที่มีจุดประสงค์ในการปรับให้เหมาะสมสำหรับ Python / C ++ หรือไม่?

3
พวกเขาใช้การเขียนโปรแกรม semidefinite ในอุตสาหกรรมหรือไม่
ฉันไม่เห็นพูดถึงเรื่องนี้ในรายการงาน ฉันเคยเห็นกล่าวถึงการเขียนโปรแกรมจำนวนเต็ม, MIP, การเขียนโปรแกรมแบบไม่เชิงเส้นจำนวนเต็ม, LP, การเขียนโปรแกรมแบบไดนามิก ฯลฯ แต่ไม่มี SDP มันเป็นเทรนด์ในสถาบันการศึกษามากกว่าในอุตสาหกรรมหรือไม่? จากการสัมผัสอย่าง จำกัด ของฉันต่อนักวิชาการและผู้เข้าร่วมอุตสาหกรรมในระบบพลังงานไฟฟ้าฉันคิดว่ามีโอกาสดีที่ SDP จะถูกนำไปใช้ในปัญหาการไหลของพลังงานที่ดีที่สุดโดยผู้ดำเนินการระบบอิสระ แต่ขึ้นอยู่กับขอบเขตที่หัวไข่สามารถขยาย ตั้งค่าแนวทางปัจจุบันเพื่อจัดการกับปัญหาที่ใหญ่กว่า

4
การเขียนโปรแกรมเชิงเส้นด้วยข้อ จำกัด เมทริกซ์
ฉันมีปัญหาการเพิ่มประสิทธิภาพที่มีลักษณะดังต่อไปนี้ minJ,Bs.t.∑ij|Jij|MJ+BY=XminJ,B∑ij|Jij|s.t.MJ+BY=X \begin{array}{rl} \min_{J,B} & \sum_{ij} |J_{ij}|\\ \textrm{s.t.} & MJ + BY =X \end{array} ที่นี่ตัวแปรของฉันคือเมทริกซ์ และBแต่ปัญหาทั้งหมดยังคงเป็นโปรแกรมเชิงเส้น ตัวแปรที่เหลือถูกแก้ไขJJJBBB เมื่อฉันพยายามที่จะเข้าสู่โปรแกรมนี้ในเครื่องมือการเขียนโปรแกรมเชิงเส้นที่ชื่นชอบฉันพบปัญหาบางอย่าง คือถ้าฉันเขียนสิ่งนี้ในรูปแบบโปรแกรมเชิงเส้น "มาตรฐาน" เมทริกซ์พารามิเตอร์MMMและYYYท้ายสุดจะได้รับซ้ำหลายครั้ง (หนึ่งครั้งสำหรับแต่ละคอลัมน์ของXXX ) มีอัลกอริทึมและ / หรือแพ็คเกจที่สามารถจัดการกับการเพิ่มประสิทธิภาพของแบบฟอร์มด้านบนได้หรือไม่? ตอนนี้ฉันมีหน่วยความจำไม่เพียงพอเพราะMMMและYYYต้องถูกคัดลอกหลายครั้ง!

2
การเขียนโปรแกรมเชิงเรขาคณิตต่างจากการตั้งโปรแกรมนูนอย่างไร
การเขียนโปรแกรมเชิงเรขาคณิต (ทั่วไป) แตกต่างจากการเขียนโปรแกรมนูนทั่วไปอย่างไร โปรแกรมเรขาคณิตสามารถแปลงเป็นโปรแกรมนูนและโดยทั่วไปแล้วจะได้รับการแก้ไขโดยวิธีการจุดภายใน แต่อะไรคือข้อได้เปรียบเหนือการกำหนดปัญหาโดยตรงในฐานะโปรแกรมนูนและแก้ปัญหาด้วยวิธีการจุดภายใน? คลาสของโปรแกรมทางเรขาคณิตประกอบด้วยเซตย่อยของคลาสของโปรแกรมนูนที่สามารถแก้ไขได้อย่างมีประสิทธิภาพโดยวิธีการจุดภายในหรือไม่? หรือเป็นข้อได้เปรียบง่ายๆที่โปรแกรมเรขาคณิตทั่วไปสามารถระบุได้ง่ายในรูปแบบที่คอมพิวเตอร์อ่านได้ ในทางกลับกันมีโปรแกรมนูนที่ไม่สามารถประมาณค่าได้ดีโดยโปรแกรมเรขาคณิตหรือไม่?

2
ความพยายามคำนวณของอัลกอริทึม
พิจารณาปัญหาการปรับให้เหมาะสมแบบไม่มีข้อ จำกัด อย่างเข้มงวด O:=minx∈Rnf(x).O:=minx∈Rnf(x).\mathcal{O} := \min_{x \in \mathbb{R}^n} f(x).ให้แทนค่า minima ที่ไม่ซ้ำกันและเป็นการประมาณค่าเริ่มต้นที่กำหนดให้กับเราจะเรียกเวกเตอร์วิธีการแก้ปัญหาอย่างใกล้ชิดของถ้า xoptxoptx_\text{opt}x0x0x_0xopt.xopt.x_\text{opt}.xxxϵ−ϵ−\epsilon-OO\mathcal{O}||x−xopt||2||x0−xopt||2≤ϵ.||x−xopt||2||x0−xopt||2≤ϵ.\begin{equation} \frac{||x - x_{\text{opt}}||_2}{||x_0 - x_\text{opt}||_2} \leq \epsilon. \end{equation} สมมติว่ามีสองอัลกอริธึมวนซ้ำA1A1\mathcal{A}_1และA2A2\mathcal{A}_2เพื่อค้นหาϵ−ϵ−\epsilon- close solution ของOO\mathcal{O}ด้วยคุณสมบัติต่อไปนี้: สำหรับการใด ๆϵ>0,ϵ>0,\epsilon > 0,คำนวณความพยายามทั้งหมดคือความพยายามที่จำเป็นต่อการทำซ้ำ××\timesจำนวนรวมของการทำซ้ำที่จะหาϵ−ϵ−\epsilon-ทางออกที่ใกล้จะเหมือนกันสำหรับทั้งขั้นตอนวิธี ความพยายามซ้ำสำหรับA1A1\mathcal{A}_1คือO(n),O(n),O(n),พูดในขณะที่A2A2\mathcal{A}_2คือO(n2).O(n2).O(n^2). มีสถานการณ์ที่หนึ่งจะชอบหนึ่งอัลกอริทึมมากกว่าอีก? ทำไม?

3
วิธีการ intellligently พยายามที่จะตัดออกจากนูน?
ฉันต้องการลดฟังก์ชั่นวัตถุประสงค์ที่ซับซ้อนให้น้อยที่สุดและฉันไม่แน่ใจว่ามันจะเป็นแบบนูนหรือไม่ มีอัลกอริทึมที่ดีที่พยายามจะพิสูจน์ว่ามันไม่นูนหรือไม่? แน่นอนว่าอัลกอริธึมอาจล้มเหลวในการพิสูจน์สิ่งนี้ซึ่งในกรณีนี้ฉันไม่รู้ว่ามันนูนหรือไม่และนี่ก็โอเค ฉันแค่อยากลองแยกแยะความนูนออกก่อนที่จะใช้เวลามากมายในการพยายามวิเคราะห์ว่าฟังก์ชันวัตถุประสงค์เป็นนูนหรือไม่เช่นโดยพยายามเขียนปัญหาใหม่ในรูปแบบมาตรฐานที่รู้จักกันว่าเป็นนูน หนึ่งการทดสอบอย่างรวดเร็วคือพยายามลดจุดเริ่มต้นที่หลากหลายและหากพบว่ามีจำนวนท้องถิ่นน้อยที่สุดในลักษณะนี้มันจะไม่นูน แต่ฉันสงสัยว่ามีอัลกอริทึมที่ดีกว่าที่ออกแบบมาโดยมีเป้าหมายอยู่ในใจหรือไม่
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.