ให้ฉันชั่งน้ำหนักที่นี่ด้วยความระมัดระวังสักสองสามคำพร้อมกับเรื่องราวล่วงหน้า นานมาแล้วฉันทำงานกับเพื่อนเมื่อฉันเพิ่งเริ่ม เขามีปัญหาการหาค่าเหมาะที่สุดที่จะแก้ปัญหาโดยมีวัตถุประสงค์ที่ค่อนข้างยุ่ง ทางออกของเขาคือการสร้างอนุพันธ์การวิเคราะห์เพื่อการเพิ่มประสิทธิภาพ
ปัญหาที่ฉันเห็นคืออนุพันธ์เหล่านี้น่ารังเกียจ สร้างโดยใช้ Macsyma เปลี่ยนเป็นรหัส Fortran พวกเขามีคำสั่งที่ต่อเนื่องกันนานนับสิบครั้ง ในความเป็นจริงคอมไพเลอร์ Fortran รู้สึกเสียใจที่มันเกินจำนวนสูงสุดของข้อความต่อเนื่อง ในขณะที่เราพบการตั้งค่าสถานะที่อนุญาตให้เราแก้ไขปัญหานั้นมีปัญหาอื่น ๆ
ในนิพจน์ที่มีความยาวเช่นเดียวกับที่สร้างขึ้นโดยระบบ CA มีความเสี่ยงในการถูกลบอย่างมาก คำนวณจำนวนมากจำนวนมากเพียงเพื่อจะพบว่าพวกเขาทั้งหมดยกเลิกซึ่งกันและกันเพื่อให้ได้จำนวนน้อย
บ่อยครั้งที่สัญญาซื้อขายล่วงหน้าที่สร้างขึ้นเชิงวิเคราะห์มักจะมีค่าใช้จ่ายในการประเมินสูงกว่าอนุพันธ์ที่สร้างเชิงตัวเลขโดยใช้ความแตกต่างที่แน่นอน การไล่ระดับสีสำหรับตัวแปร n อาจใช้เวลามากกว่า n เท่าของค่าใช้จ่ายในการประเมินฟังก์ชันวัตถุประสงค์ของคุณ (คุณอาจประหยัดเวลาได้เนื่องจากคำศัพท์หลายคำสามารถนำกลับมาใช้ใหม่ในอนุพันธ์ต่าง ๆ ได้ แต่นั่นจะบังคับให้คุณทำการเข้ารหัสด้วยมืออย่างระมัดระวังแทนการใช้นิพจน์ที่สร้างด้วยคอมพิวเตอร์และทุกครั้งที่คุณโค้ดทางคณิตศาสตร์ที่น่ารังเกียจ นิพจน์ความน่าจะเป็นของข้อผิดพลาดนั้นไม่สำคัญตรวจสอบให้แน่ใจว่าคุณตรวจสอบความถูกต้องของอนุพันธ์เหล่านี้แล้ว)
ประเด็นของฉันคือนิพจน์ CA ที่สร้างขึ้นเหล่านี้มีปัญหาของตัวเอง สิ่งที่ตลกคือเพื่อนร่วมงานของฉันภูมิใจในความซับซ้อนของปัญหาจริง ๆ เขาเห็นได้ชัดว่าเขาแก้ปัญหาที่ยากมากเพราะพีชคณิตน่ารังเกียจมาก สิ่งที่ฉันไม่คิดว่าเขาจะพิจารณาก็คือถ้าพีชคณิตนั้นคำนวณสิ่งที่ถูกต้องจริง ๆ แล้วมันถูกต้องหรือไม่และมันก็ทำอย่างมีประสิทธิภาพ
ถ้าฉันเป็นคนรุ่นพี่ในโครงการนี้ฉันจะอ่านบทจลาจลของเขา ความภาคภูมิใจของเขาทำให้เขาใช้วิธีการแก้ปัญหาที่อาจซับซ้อนโดยไม่จำเป็นโดยไม่ต้องตรวจสอบว่าการไล่ระดับสีที่แตกต่างกันแน่นอนเพียงพอ ฉันจะเดิมพันเราอาจใช้เวลาหนึ่งสัปดาห์ในการเรียกใช้การเพิ่มประสิทธิภาพนี้ อย่างน้อยที่สุดฉันก็จะแนะนำให้เขาทดสอบการไล่ระดับสีอย่างระมัดระวัง มันถูกต้องหรือไม่ มันแม่นยำแค่ไหนเมื่อเทียบกับอนุพันธ์ต่างอนุพันธ์ จำกัด ในความเป็นจริงมีเครื่องมือรอบวันนี้ที่จะกลับประมาณการของข้อผิดพลาดในการทำนายอนุพันธ์ของพวกเขา นี่เป็นความจริงอย่างแน่นอนสำหรับรหัสความแตกต่างที่ปรับได้ (ตอนแรก) ที่ฉันเขียนใน MATLAB
ทดสอบรหัส ตรวจสอบสัญญาซื้อขายล่วงหน้า
แต่ก่อนที่คุณจะทำสิ่งนี้ให้พิจารณาว่ามีรูปแบบอื่นที่เหมาะสมกว่านี้หรือไม่ ตัวอย่างเช่นหากคุณกำลังทำการปรับแบบเอ็กซ์โปเนนเชียลคุณมีโอกาสดีมากที่คุณสามารถใช้พาร์ทิชันแบบไม่เชิงเส้นกำลังสองน้อยที่สุด (บางครั้งเรียกว่าสแควร์สแควร์สแควร์แบบแยกน้อยที่สุด) ฉันคิดว่า คือการแบ่งชุดของพารามิเตอร์เป็นชุดเชิงเส้นและไม่เชิงเส้นภายใน ใช้การปรับให้เหมาะสมที่ทำงานกับพารามิเตอร์ที่ไม่ใช่เชิงเส้นเท่านั้น กำหนดให้พารามิเตอร์เหล่านั้นเป็น "รู้จัก" จากนั้นพารามิเตอร์เชิงเส้นภายในสามารถประมาณได้โดยใช้กำลังสองน้อยที่สุดเชิงเส้นเชิงเส้นอย่างง่าย ชุดรูปแบบนี้จะลดพื้นที่พารามิเตอร์ในการปรับให้เหมาะสม มันทำให้ปัญหามีเสถียรภาพมากขึ้นเนื่องจากคุณไม่จำเป็นต้องค้นหาค่าเริ่มต้นสำหรับพารามิเตอร์เชิงเส้น มันลดมิติของพื้นที่การค้นหาของคุณเพื่อให้ปัญหาทำงานได้เร็วขึ้น ฉันให้มาอีกครั้งเครื่องมือสำหรับจุดประสงค์นี้แต่เฉพาะใน MATLAB
หากคุณใช้อนุพันธ์การวิเคราะห์ให้ใส่รหัสเหล่านั้นเพื่อนำคำศัพท์มาใช้ซ้ำ นี่อาจเป็นการประหยัดเวลาอย่างจริงจังและอาจลดข้อบกพร่องจริง ๆ แล้วประหยัดเวลาของคุณเอง แต่จากนั้นตรวจสอบตัวเลขเหล่านั้น!
codegen
แพ็คเกจในนั้นเพราะสามารถสร้างรหัส C หรือ Fortran ที่กะทัดรัดและมีประสิทธิภาพสำหรับนิพจน์แต่ละรายการหรือทั้งหมดโดยอัตโนมัติ