ดังที่เปาโลกล่าวโดยไม่มีข้อมูลเพิ่มเติมจึงเป็นการยากที่จะให้คำแนะนำโดยไม่มีข้อสันนิษฐาน
ด้วยตัวแปร 10-20 รายการและการประเมินฟังก์ชั่นราคาแพงแนวโน้มที่จะแนะนำอัลกอริธึมการเพิ่มประสิทธิภาพที่ปราศจากอนุพันธ์ ฉันจะไม่เห็นด้วยอย่างยิ่งกับคำแนะนำของ Paul: โดยทั่วไปคุณต้องใช้การไล่ระดับสีที่มีความแม่นยำของเครื่องจักรเว้นแต่คุณจะใช้วิธีพิเศษบางอย่าง (เช่นการไล่ระดับสีแบบสุ่มในการเรียนรู้ของเครื่องจะใช้ประโยชน์จากรูปแบบของวัตถุประสงค์ ประมาณการไล่ระดับสี)
แต่ละขั้นตอนเสมือนนิวตันจะอยู่ในรูปแบบ:
H~( xk) dk= - ∇ f( xk) ,
โดยที่เป็นการประมาณค่าของ Hessian matrix, d kคือทิศทางการค้นหา, x kคือค่าของตัวแปรการตัดสินใจที่กระแสซ้ำ, fคือฟังก์ชันวัตถุประสงค์ของคุณ, และ∇ fคือความชันของวัตถุประสงค์ของคุณ, และ ตัวแปรการตัดสินใจได้รับการปรับปรุงเช่นx k + 1 = x k + α k d kโดยที่α kH~dkxkฉ∇ fxk + 1= xk+ αkdkαkคือขนาดขั้นตอนที่กำหนดในบางแบบ (เช่นการค้นหาบรรทัด) คุณสามารถหนีไปกับ Hessian โดยประมาณในบางวิธีและการวนซ้ำของคุณจะมาบรรจบกันแม้ว่าคุณจะใช้บางอย่างเช่นการประมาณค่าความแตกต่างแน่นอนของ Hessian ผ่านการไล่ระดับสีที่แน่นอนคุณอาจประสบปัญหาเนื่องจากสภาพไม่ดี โดยทั่วไปแล้ว Hessian จะใช้การไล่ระดับสี (ตัวอย่างเช่นวิธีการพิมพ์แบบ BFGS พร้อมการอัปเดตอันดับ 1 ของ Hessian)
การประมาณ Hessian และการไล่ระดับสีทั้งสองผ่านความแตกต่างอัน จำกัด เป็นความคิดที่ไม่ดีด้วยเหตุผลหลายประการ:
- คุณจะมีข้อผิดพลาดในการไล่ระดับสีดังนั้นวิธี quasi-Newton ที่คุณใช้คือคล้ายกับการค้นหารากของฟังก์ชันที่มีเสียงดัง
- หากการประเมินฟังก์ชั่นมีราคาแพงและคุณกำลังพยายามประเมินการไล่ระดับสีตามตัวแปรคุณจะต้องเสียค่าใช้จ่ายในการประเมินฟังก์ชันNต่อการทำซ้ำยังไม่มีข้อความยังไม่มีข้อความ
- หากคุณมีข้อผิดพลาดในการไล่ระดับสีคุณจะมีข้อผิดพลาดมากขึ้นใน Hessian ซึ่งเป็นปัญหาใหญ่ในแง่ของการปรับสภาพของระบบเชิงเส้น
- ... และมันจะทำให้คุณเสียค่าใช้จ่ายในการประเมินฟังก์ชั่นต่อการวนซ้ำยังไม่มีข้อความ2
เพื่อให้ได้ผลการคำนวณที่ไม่ดีอย่างหนึ่งของ quasi-Newton คุณกำลังทำบางอย่างเช่นการประเมินฟังก์ชั่น 420 ครั้งที่ 30 นาทีต่อการประเมินผลซึ่งหมายความว่าคุณกำลังรอสักครู่สำหรับการทำซ้ำแต่ละครั้งหรือไม่ ต้องการคลัสเตอร์ใหญ่สำหรับการประเมินฟังก์ชัน ตัวแก้เชิงเส้นที่เกิดขึ้นจริงจะมีค่าเมทริกซ์ 20 ถึง 20 (มากที่สุด!) ดังนั้นจึงไม่มีเหตุผลที่จะทำให้มันขนานกัน หากคุณสามารถรับข้อมูลการไล่ระดับสีโดยการแก้ปัญหา adjoint มันอาจจะคุ้มค่ามากกว่าในกรณีนี้มันอาจคุ้มค่าที่จะดูหนังสือเช่น Nocedal & Wright
หากคุณจะทำการประเมินฟังก์ชั่นจำนวนมากในแบบคู่ขนานคุณควรดูที่วิธีการสร้างแบบจำลองตัวแทนหรือในการสร้างวิธีการค้นหาแบบตั้งก่อนที่จะพิจารณาวิธีแบบกึ่งนิวตัน บทความวิจารณ์แบบคลาสสิกเป็นบทความโดยRios และ Sahinidis เกี่ยวกับวิธีการซื้อขายตราสารอนุพันธ์ซึ่งตีพิมพ์ในปี 2555 และให้การเปรียบเทียบที่ดีและกว้างมาก บทความการเปรียบเทียบโดยMore and Wildจากปี 2009; ตำรา 2009 "การแนะนำการเพิ่มประสิทธิภาพปลอดอนุพันธ์" โดย Conn, Scheinberg และ Vicente; และบทความทบทวนเกี่ยวกับการสร้างวิธีการค้นหาที่กำหนดโดย Kolda, Lewis และ Torczonจากปี 2003
ตามที่เชื่อมโยงข้างต้นแพคเกจซอฟต์แวร์ DAKOTAจะใช้วิธีการเหล่านั้นบางอย่างและNLOPTจะดำเนินการตามวิธี DIRECT และวิธีสร้างแบบจำลองตัวแทนของ Powell คุณอาจดูMCSด้วย มันเขียนใน MATLAB แต่บางทีคุณอาจจะนำการใช้งาน MATLAB ไปใช้กับภาษาที่คุณเลือก DAKOTA เป็นชุดของสคริปต์ที่คุณสามารถใช้เพื่อเรียกใช้การจำลองราคาแพงและรวบรวมข้อมูลสำหรับอัลกอริธึมการเพิ่มประสิทธิภาพและ NLOPT มีอินเทอร์เฟซในภาษาจำนวนมากดังนั้นการเลือกภาษาการเขียนโปรแกรมไม่ควรเป็นปัญหาใหญ่ DAKOTA ใช้เวลาสักครู่ในการเรียนรู้และมีเอกสารจำนวนมากในการกรอง