คำถามติดแท็ก operator-splitting

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

5
มีวิธีการแยกตัวดำเนินการสำหรับ PDE หลายตัวที่ทำให้เกิดการรวมลำดับสูงหรือไม่?
ได้รับวิวัฒนาการของ PDE ut=Au+Buut=Au+Buu_t = Au + Bu เมื่อเป็นตัวดำเนินการส่วนต่าง (อาจเป็นแบบไม่เชิงเส้น) ที่ไม่ต้องเดินทางวิธีการเชิงตัวเลขทั่วไปคือการสลับระหว่างการแก้A,BA,BA,B ut=Auut=Auu_t = Au และ ut=Bu.ut=Bu.u_t = Bu. การดำเนินการที่ง่ายที่สุดของเรื่องนี้เป็นที่รู้จักกันในชื่อ Godunov และมีความแม่นยำอันดับหนึ่ง วิธีที่รู้จักกันดีอีกวิธีหนึ่งคือ Strang splitting นั้นมีความแม่นยำอันดับสอง มีวิธีแยกตัวดำเนินการลำดับที่สูงขึ้น (หรือวิธีการแยกย่อยหลายวิธีแบบอื่น) อยู่หรือไม่?

1
การใช้งานที่ดีที่สุดของการแยก Strang (สำหรับสมการการกระจายปฏิกิริยา)
ฉันสังเกตอย่างประหลาดขณะคำนวณวิธีแก้ปัญหาไปยังสมการการแพร่กระจายปฏิกิริยา 1D แบบง่าย: ∂∂ta=∂2∂x2a−ab∂∂ta=∂2∂x2a−ab\frac{\partial}{\partial t}a=\frac{\partial^2}{\partial x^2}a-ab ∂∂tb=−ab∂∂tb=−ab\frac{\partial}{\partial t}b=-ab ∂∂tc=a∂∂tc=a\frac{\partial}{\partial t}c = a ค่าเริ่มต้นของคือค่าคงที่ ( ) และฉันสนใจอินทิกรัลมากกว่าตั้งแต่ถึง ( ) วัตถุประสงค์ของและสมการเป็นเพียงการประเมินอินทิกรัลนี้bbbb(0,x)=b0b(0,x)=b0b(0,x)=b_0aaa000111∫10a(t,x)dt∫01a(t,x)dt\int_0^1a(t,x)dtccc∂∂tc=a∂∂tc=a\frac{\partial}{\partial t}c = a ฉันใช้รูปแบบการแยก Strang สำหรับการมีเพศสัมพันธ์ระหว่างการแพร่และปฏิกิริยา (ปฏิกิริยาครึ่งขั้นตอนจากนั้นเป็นการแพร่กระจายแบบเต็มขั้นตอนและจากนั้นอีกครึ่งปฏิกิริยาแบบขั้นตอน) แผน Crank Nicholson สำหรับการแพร่และโซลูชันการวิเคราะห์สำหรับปฏิกิริยา ( รวมถึงสมการ )∂∂tc=a∂∂tc=a\frac{\partial}{\partial t}c = a เนื่องจากหนึ่งขั้นตอนของโซลูชันการวิเคราะห์เป็นมากกว่า 3 ปัจจัยที่ช้ากว่าหนึ่งขั้นตอนของแผนการ Crank Nicholson ฉันจึงพยายามทำมากกว่าหนึ่งขั้นตอนของ Crank Nicholson สำหรับแต่ละขั้นตอนของปฏิกิริยา ฉันหวังว่าจะได้ผ่านขั้นตอนที่น้อยลงของแผนการแบ่ง Strang เพื่อที่ฉันจะได้เร็วขึ้นโดยรวม อย่างไรก็ตามผลตรงกันข้ามสามารถสังเกตได้คือจำเป็นต้องใช้ขั้นตอนมากขึ้นสำหรับการแบ่ง Strang …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.