ฉันอยากจะแนะนำวิธีการที่แตกต่างกันบ้างเมื่อเทียบกับคำตอบอื่น ๆ แม้ว่า @ barron จะพูดถึงสิ่งเดียวกันโดยอ้อม
แทนที่จะปรับฟังก์ชั่นของคุณโดยตรงเช่นโดยการประเมินที่ชุดของจุดจุดที่ (หวังว่า) มาบรรจบกันเป็น (ท้องถิ่น) ที่ดีที่สุดคุณสามารถใช้แนวคิดของการสร้างแบบจำลองตัวแทนซึ่งเป็น เหมาะมากสำหรับปัญหาประเภทที่คุณอธิบาย (ค่าใช้จ่ายสูงเรียบขอบเขต จำกัด มิติต่ำเช่นไม่ทราบน้อยกว่า 20 รายการ)x1, x2, … , xkแบบจำลองตัวแทน
โดยเฉพาะการสร้างแบบจำลองตัวแทนทำงานโดยการตั้งค่าฟังก์ชั่นแบบของฟังก์ชั่นของคุณเป็นจริงฉ∈ R d → R กุญแจสำคัญคือแม้ว่าแน่นอนว่าcไม่ได้เป็นตัวแทนของfอย่างสมบูรณ์แต่ก็ถูกกว่าการประเมินc ∈ Rd→ Rฉ∈ Rd→ Rคฉ
ดังนั้นกระบวนการปรับให้เหมาะสมแบบทั่วไปจะเป็นดังนี้:
- ประเมินที่ชุดของเจจุดเริ่มต้นx 1 , x 2 , ... , xเจ โปรดทราบว่าไม่จำเป็นต้องใช้อนุพันธ์ โปรดทราบว่าจุดเหล่านี้ควรกระจายอย่างสม่ำเสมอทั่วทั้งพื้นที่การค้นหาเช่นโดย Latin Hypercube Sampling หรือการออกแบบการเติมพื้นที่ที่คล้ายกันฉJx1, x2, … , xJ
- ขึ้นอยู่กับชุดเดิมนี้สร้างฟังก์ชั่นรุ่นCคุณสามารถใช้การตรวจสอบข้ามการตรวจสอบรูปแบบของคุณ (เช่นใช้เฉพาะชุดย่อยของเดิมเจจุดที่จะสร้างคและจากนั้นใช้ที่เหลือของชุดข้อมูลเพื่อตรวจสอบวิธีการที่ดีคคาดการณ์ค่าเหล่านั้น)คJคค
- ใช้เกณฑ์เช่นที่คาดว่าจะปรับปรุง (EI) เกณฑ์ที่จะหาสถานที่ที่จะ '' เติมใน '' ตัวอย่างมากขึ้นเพื่อให้ถูกต้องมากขึ้นโดยการสุ่มตัวอย่างฉ นี่เป็นการศึกษาที่ดีกว่าในทางทฤษฎีมากกว่าที่คิดและเกณฑ์ EI นั้นได้รับการวิจัยเป็นอย่างดี เกณฑ์ของ EI นั้นไม่ใช่เกณฑ์โลภดังนั้นคุณทั้งสองจึงได้รับการปรับปรุงโดยรวมที่ดีของความแม่นยำของแบบจำลองในขณะที่จัดลำดับความถูกต้องใกล้กับ Optimaคฉ
- หากโมเดลของคุณไม่แม่นยำเพียงพอให้ทำซ้ำขั้นตอนที่ 3 หรือใช้ขั้นตอนการเพิ่มประสิทธิภาพที่คุณชื่นชอบเพื่อหาค่าที่เหมาะสมที่สุดซึ่งจะถูกประเมินได้อย่างถูกต้องมาก (เพื่อให้คุณสามารถใช้รูทีนที่คุณต้องการแม้แต่คนที่ต้องการอนุพันธ์ ประเมินฟังก์ชั่นในรูปแบบตาข่าย)ค
ฉคฉ
ค
แน่นอนว่านี่เป็นงานเขียนโค้ดเพียงเล็กน้อย แต่คนอื่น ๆ จำนวนมากได้ทำการปรับใช้ที่ดีมาก ใน Matlab ฉันรู้เพียงว่ากล่องเครื่องมือซอฟต์แวร์ DACE DACE นั้นฟรี TOMLAB อาจเสนอแพ็คเกจ Matlab แต่ก็คุ้มค่ากับเงินที่เสียไป - อย่างไรก็ตามฉันเชื่อว่ามันใช้งานได้ใน C ++ และมีความสามารถมากกว่าที่ DACE เคยมี (หมายเหตุ: ฉันเป็นหนึ่งในนักพัฒนาของ DACE เวอร์ชันใหม่ซึ่งจะเปิดตัวเร็ว ๆ นี้ซึ่งจะให้การสนับสนุนเพิ่มเติมสำหรับ EGO)
หวังว่าภาพรวมคร่าวๆนี้ช่วยคุณได้โปรดถามคำถามว่ามีจุดที่สามารถทำให้ชัดเจนขึ้นหรือสิ่งที่ฉันพลาดไปหรือถ้าคุณต้องการเนื้อหาเพิ่มเติมเกี่ยวกับเรื่องนี้