แพคเกจซอฟต์แวร์สำหรับการเพิ่มประสิทธิภาพที่ จำกัด ?


21

ฉันกำลังมองหาที่จะแก้ปัญหาการเพิ่มประสิทธิภาพข้อ จำกัด ที่ฉันรู้ขอบเขตของตัวแปรบางตัว (โดยเฉพาะข้อ จำกัด แบบกล่อง)

argminuf(u,x)

ภายใต้

a d ( u , x ) b

c(u,x)=0
ad(u,x)b

โดยที่uคือเวกเตอร์ของตัวแปรการออกแบบxเป็นเวกเตอร์ของตัวแปรสถานะและc(u,x)เป็นข้อ จำกัด ด้านความเท่าเทียมกัน (โดยทั่วไปคือ PDE) ข้อ จำกัด ด้านล่างและด้านบนaและbอาจเป็นตัวแปรเชิงพื้นที่

แพคเกจใดสามารถจัดการระบบของฟอร์มนี้


1
รุ่นที่แก้ไขนั้นดูเหมือนว่าปัญหาการปรับให้เหมาะสมแบบ จำกัด กล่องไม่ได้ ปัญหาการปรับให้เหมาะสมแบบ จำกัด กล่องจะมีaubเป็นข้อ จำกัด เป็นuควรจะเป็นหน้าที่ของx ? เป็นเส้นตรงcในuหรือไม่ ถ้าไม่ใช่มันแตกต่างกันสองเท่าหรือไม่? คือfนูนในu ? มันแตกต่างกันสองเท่าในuหรือไม่? ในที่สุดargminuหมายถึงชุดของคะแนนในuที่ค่าต่ำสุดของfบรรลุแล้ว คุณหมายถึงminuแทนหรือไม่
Geoff Oxberry

d(u,x)=uเป็นกรณีพิเศษหนึ่งกรณี แต่รูปแบบทั่วไปที่มากกว่านี้เป็นเรื่องธรรมดาในทางปฏิบัติ คุณสามารถแนะนำตัวแปรพิเศษหากวิธีการของคุณเท่านั้นที่สามารถจัดการกับข้อ จำกัด โดยตรงบนยูuเรามักจะสนใจมากขึ้นในค่าuที่ต่ำสุดที่จะบรรลุกว่าค่าต่ำสุดของฉfSean เพิ่มแท็ก [pde] ดังนั้นคุณอาจได้รับความสม่ำเสมอจากสิ่งนั้น เขาไม่ได้ระบุว่าระบบนั้นเกินความจริงหรือไม่ดังนั้นอย่าคิดเลย อย่าคิดว่าfเป็นแบบนูนเพราะมันมักจะไม่ใช่
Jed Brown

เป็นเรื่องปกติที่fจะเกี่ยวข้องกับL1หรือW1,1ทำให้เป็นมาตรฐานดังนั้นเราไม่ควรถือว่าอนุพันธ์สองตัว
Jed Brown

@JedBrown: นั่นสมเหตุสมผล; มันสับสนที่จะเห็น "ข้อ จำกัด ของกล่อง" ที่กล่าวถึงโดยไม่มีข้อ จำกัด ของกล่องอย่างชัดเจน สำหรับประเภทของปัญหาที่คุณกำลังพูดถึง (ปัญหาการออกแบบปัญหาการควบคุม) uน่าสนใจมากกว่า แต่โดยทั่วไปแล้วปัญหาการปรับให้เหมาะสมจะใช้สัญกรณ์minและชุดโซลูชันจะอธิบายโดยใช้สัญกรณ์argmin
Geoff Oxberry

อาจเป็นประโยชน์ในการระบุในภาษา / สภาพแวดล้อมที่คุณวางโมเดล PDE มันอาจ จำกัด ตัวเลือกของเครื่องมือเพิ่มประสิทธิภาพ
Dominique

คำตอบ:


18

ฉันตัดสินใจที่จะแก้ไขคำตอบอย่างรุนแรงตามความคิดเห็นบางส่วน

ฉันไม่ได้ใช้ 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-มธุรสเริมอัลกอริทึม ไม่รับประกันว่าจะมาบรรจบกันกับค่าต่ำสุดในหลายมิติ แต่พบว่ามีการใช้งานจริงอย่างมาก

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


4

เราได้ลอง TAO แต่พบว่ามันไม่ได้มีประโยชน์มากสำหรับปัญหาความไม่เท่าเทียมที่ จำกัด นอกจากนี้ยังเป็นเพียงในโหมดการบำรุงรักษาตั้งแต่อย่างน้อยปี 2003 โดยไม่มีคุณสมบัติใหม่ที่แท้จริงนอกเหนือจากการอัปเดตเพื่อติดตามการเปลี่ยนแปลงใน PETSc ที่มันถูกสร้างขึ้น


3

ทางเลือกหนึ่งคือOPT ++ มันสนับสนุนข้อ จำกัด เชิงเส้นและไม่เชิงเส้นด้วยตัวแก้จุดภายในแบบไม่เชิงเส้นที่มีประสิทธิภาพให้การควบคุมความถูกต้องของฟังก์ชัน (หากจำเป็นต้องใช้ความแตกต่างของตัวเลข) การควบคุมสำหรับขนาดขั้นตอน ฯลฯ โดยทั่วไปฉันมักจะปรับฟังก์ชั่น การควบคุมจะมีประโยชน์


คุณช่วยอธิบายได้ไหมว่าเหตุใด OPT ++ จึงเป็นแพ็คเกจที่ดีที่จะใช้ คุณ (หรือเพื่อนร่วมงานของคุณ) มีประสบการณ์กับมันหรือไม่?
Geoff Oxberry

เพื่อความชัดเจนฉันไม่มีเหตุผลที่จะกล่าวว่า OPT ++ เหนือกว่าสิ่งที่คุณระบุไว้ก่อนหน้านี้เพราะฉันไม่มีประสบการณ์ใด ๆ เลย (แม้ว่าฉันจะบุ๊กมาร์กไว้สักสองสามเพื่อตรวจสอบ) แต่ฉันมีประสบการณ์กับ OPT ++ และพบว่ามันเหมาะกับความต้องการของฉัน มันสนับสนุนข้อ จำกัด เชิงเส้นและไม่เชิงเส้นด้วยตัวแก้จุดภายในแบบไม่เชิงเส้นที่มีประสิทธิภาพให้การควบคุมความถูกต้องของฟังก์ชัน (หากต้องการความแตกต่างของตัวเลข) การควบคุมสำหรับขนาดขั้นตอน ฯลฯ โดยทั่วไปฉันมักจะปรับฟังก์ชั่นขนาดใหญ่ การควบคุมจะมีประโยชน์
Barron

2
@Barron: คุณควรให้คำตอบนั้นเริ่มต้นด้วย :)
JM

2

หากปัญหาได้รับการกำหนดเป็นปัญหาที่สมบูรณ์คุณสามารถใช้TAO (ชุดเครื่องมือสำหรับการปรับให้เหมาะสมขั้นสูง) วิธีการบางอย่างใน TAO เช่นวิธีการลดพื้นที่ (ตัวแปรของวิธีการตั้งค่าที่ใช้งาน) ปัจจุบันมีให้เป็นส่วนหนึ่งของ SNES ใน PETSc ( SNESVI )


1

MINUTEโมดูลCERNLIB (ความยาวตั้งแต่รังเพลิงROOT ) ใช้การเปลี่ยนแปลงพื้นที่การป้อนข้อมูลที่จะทำให้ constrains กล่องเข้าไปในพื้นที่ที่พวกเขาทำงานดังนั้นจึงสามารถจัดการได้โดยไม่ต้องเป็นกรณีพิเศษ (ที่ค่าใช้จ่าย แน่นอนความเร็ว)[,+]

ฉันไม่คิดว่า MINUTE จะทำงานได้ดีสำหรับความต้องการของคุณ แต่การเปลี่ยนแปลงอาจเกิดขึ้นหากคุณถูกบังคับให้เขียนโค้ดบางส่วนหรือทั้งหมดด้วยตัวคุณเอง


การเปลี่ยนแปลงนั้นดูน่ารังเกียจ ไม่น่าแปลกใจที่มันมาพร้อมกับวรรคสอง
Geoff Oxberry

1

ตามที่ @Geoff Oxberry ได้ชี้ให้เห็นแพคเกจต่างๆช่วยให้คุณค้นหาวิธีแก้ปัญหาในท้องถิ่น หากคุณต้องการที่จะสามารถที่จะเปรียบเทียบแก้ NLP เหล่านี้แตกต่างกันสำหรับปัญหาเดียวกันคุณสามารถใช้RobOptim

แม้ว่า RobOptim ได้รับการพัฒนาในขั้นต้นโดยคำนึงถึงปัญหาการเพิ่มประสิทธิภาพของหุ่นยนต์ในใจ แต่ก็เหมาะสำหรับปัญหาการเพิ่มประสิทธิภาพแบบไม่เชิงเส้นใด ๆ มันมีอินเตอร์เฟซ C ++ อย่างง่ายพร้อมปลั๊กอินสำหรับตัวแก้ NLP หลายตัว (เช่น Ipopt, NAG) หากคุณไม่สามารถให้การไล่ระดับสีการคำนวณผลต่าง จำกัด สามารถทำได้โดยอัตโนมัติ

เป็นโอเพ่นซอร์สดังนั้นคุณสามารถตรวจสอบซอร์สโค้ดได้ที่ GitHub: https://github.com/roboptim/

หมายเหตุ: ฉันเป็นหนึ่งในผู้พัฒนาของโครงการนี้


1
ควรชี้ให้เห็นว่าคำตอบอื่น ๆ อธิบายถึงนักแก้ปัญหาไม่ใช่กรอบงาน ง่ายต่อการค้นหากรอบงานที่ยอมรับได้ (ตัวขับ ) มากกว่าตัวแก้ปัญหาที่ดี
Deer Hunter

@DeerHunter เมื่อคุณกำลังมองหานักแก้ปัญหาเพื่อแก้ปัญหามันมักจะยากที่จะรู้ว่านิรนัยที่นักแก้ปัญหาจะคำนวณทางออกที่ดีที่สุดและ / หรือเร็วที่สุด คุณกำลังพูดถึง "ตัวแก้ปัญหาที่ดี" แต่สิ่งนี้ขึ้นอยู่กับสิ่งที่คุณกำลังแก้ไข: ไม่มีตัวแก้ปัญหา "โดยรวมที่ดีที่สุด" ยิ่งไปกว่านั้น Solver APIs มักจะแตกต่างกันมากดังนั้นการใช้เฟรมเวิร์กที่ดีที่ช่วยให้คุณเปลี่ยนจาก Solver หนึ่งไปยังอีก Solver ได้ง่ายจะมีประโยชน์มาก คำถามเกี่ยวกับ "แพคเกจซอฟต์แวร์สำหรับการเพิ่มประสิทธิภาพที่ จำกัด " และกรอบยังตกอยู่ในหมวดหมู่นี้
BenC

1

นี่คือรายการบางส่วนของแพ็คเกจการเพิ่มประสิทธิภาพที่ จำกัด PDE

Dolfin Adjoint เป็นส่วนหนึ่งของ FEniCS FEM:

http://dolfin-adjoint.org/

ROL, MOOCHO, Sundance เป็นส่วนหนึ่งของ Trilinos:

https://github.com/trilinos/trilinos/tree/master/packages/rol/

https://github.com/trilinos/trilinos/tree/master/packages/Sundance/

http://trilinos.org/packages/moocho/

ตัวอย่าง PYOMO สำหรับการเพิ่มประสิทธิภาพที่ จำกัด PDE:

https://software.sandia.gov/trac/pyomo/browser/pyomo/trunk/examples/dae

คู่มือ TAO ให้ตัวอย่างของการแก้ปัญหาการเพิ่มประสิทธิภาพที่ จำกัด PDE:

http://www.mcs.anl.gov/petsc/petsc-3.5/docs/tao_manual.pdf


1
ยินดีต้อนรับสู่ SciComp.SE! เพียงให้ลิงก์ (มีประโยชน์เท่าที่ควร) ไม่ใช่คำตอบที่ดี ดูmeta.stackexchange.com/questions/8231 คุณสามารถขยายตัวได้เล็กน้อย (ภาษาการคำนวณข้อ จำกัด ประเภทใดบ้างที่สามารถปฏิบัติได้
Christian Clason

ฉันเห็นด้วยกับ @ChristianClason มีการพัฒนาอย่างมากในตัวแก้ปัญหาสำหรับซอฟต์แวร์เพิ่มประสิทธิภาพที่ จำกัด PDE; อย่างไรก็ตามคำตอบนี้ไม่ได้ให้ความสำคัญกับอัลกอริธึมที่แพ็คเกจเหล่านั้นใช้งานจริง
Geoff Oxberry

0

APM MATLAB และ APM งูใหญ่แพคเกจที่สามารถแก้ปัญหาขนาดใหญ่ (100,000 ตัวแปร) ของระบบสมการผสมจำนวนเต็ม Differential พีชคณิต ซอฟต์แวร์นี้มีให้บริการทางเว็บเพื่อการใช้งานเชิงพาณิชย์หรือเชิงวิชาการ หากคุณกำลังแก้ไขระบบ PDE คุณสามารถแยกทิ้งหนึ่งครั้งเพื่อนำไปไว้ในรูปแบบ DAE หรือ ODE เพื่อใส่ลงในภาษาการสร้างแบบจำลอง APMonitor ภาษาการสร้างแบบจำลองใช้ตัวแก้ APOPT , BPOPT, IPOPT, SNOPT และ MINOS


1
โปรดเปิดเผยความร่วมมือของคุณในฐานะนักพัฒนา APMonitor ในคำตอบนี้และในอนาคตที่กล่าวถึงซอฟต์แวร์ของคุณ ดูคำถามที่พบบ่อยสำหรับรายละเอียดเกี่ยวกับนโยบายการเปิดเผยของเรา
Geoff Oxberry

เจฟฟ์ขอบคุณสำหรับคำแนะนำ ฉันเริ่มทำงานกับแพลตฟอร์ม APMonitor ในปี 2004 ในฐานะนักศึกษาระดับบัณฑิตศึกษาที่มหาวิทยาลัยเท็กซัสที่ออสติน ตอนนี้เราใช้มันในกลุ่มการวิจัยของเราที่ Brigham Young University สำหรับการควบคุมกระบวนการและการเพิ่มประสิทธิภาพ ( apm.byu.edu/prism ) ของชีววิทยาเคมีการบินและการใช้งานอื่น ๆ ฉันทำให้ใช้ได้อย่างอิสระสำหรับผู้ใช้เชิงพาณิชย์หรือนักวิชาการ
John Hedengren
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.