อ่าน 8 นาที
การเขียนโปรแกรมเชิงพลวัตแบบดิฟเฟอเรนเชียล
การเขียนโปรแกรมเชิงพลวัตแบบดิฟเฟอเรนเชียล ( DDP ) เป็น อัลกอริทึม ควบคุมที่เหมาะสมที่สุดใน กลุ่ม การเพิ่มประสิทธิภาพวิถีการเคลื่อนที่ อัลกอริทึมนี้ได้รับการแนะนำในปี 1966 โดยMayne
การเขียนโปรแกรมเชิงพลวัตแบบดิฟเฟอเรนเชียล
การเขียนโปรแกรมเชิงพลวัตแบบดิฟเฟอเรนเชียล ( DDP ) เป็น อัลกอริทึม ควบคุมที่เหมาะสมที่สุดใน กลุ่ม การเพิ่มประสิทธิภาพวิถีการเคลื่อนที่ อัลกอริทึมนี้ได้รับการแนะนำในปี 1966 โดยMayne [ 1 ]และได้รับการวิเคราะห์เพิ่มเติมในหนังสือชื่อเดียวกันของ Jacobson และ Mayne [ 2 ]อัลกอริทึมนี้ใช้แบบจำลองกำลังสองเฉพาะที่ของพลวัตและฟังก์ชันต้นทุน และแสดงการลู่เข้าแบบกำลังสองมีความเกี่ยวข้องอย่างใกล้ชิดกับวิธีการของนิวตันแบบทีละขั้นตอนของ Pantoja [ 3 ] [ 4 ]
ปัญหาเวลาไม่ต่อเนื่องขอบเขตจำกัด
พลวัต
| 1 |
อธิบายวิวัฒนาการของสถานะโดยพิจารณาจากการควบคุมในแต่ละช่วงเวลาต้นทุนรวมคือผลรวมของต้นทุนการดำเนินงานและต้นทุนสุดท้ายที่เกิดขึ้นเมื่อเริ่มต้นจากสถานะหนึ่งและใช้ลำดับการควบคุมจนกว่าจะถึงช่วงเวลาเป้าหมาย:
โดยที่และสำหรับกำหนดโดยสมการที่ 1คำตอบของปัญหาการควบคุมที่เหมาะสมที่สุดคือการลดลำดับการควบคุมให้เหลือน้อยที่สุด การเพิ่มประสิทธิภาพวิถีหมายถึงการค้นหาสำหรับค่า ที่เฉพาะเจาะจงแทนที่จะเป็น สำหรับสถานะเริ่มต้นที่เป็นไปได้ทั้งหมด
การเขียนโปรแกรมแบบไดนามิก
ให้เป็นลำดับควบคุมบางส่วนและกำหนดต้นทุนที่รอการดำเนินการ (cost-to-go)เป็นผลรวมบางส่วนของต้นทุนจากถึง:
ฟังก์ชัน ต้นทุนต่อการดำเนินการหรือฟังก์ชันมูลค่า ที่เหมาะสมที่สุด ณ เวลา t คือต้นทุนต่อการดำเนินการที่กำหนดโดยลำดับการควบคุมที่ทำให้ต้นทุนลดลงต่ำสุด:
ตามหลักการเขียนโปรแกรมเชิงพลวัต การหาค่าต่ำสุดของลำดับการควบคุมทั้งหมดจะถูกลดทอนให้เหลือเพียงลำดับการหาค่าต่ำสุดของการควบคุมเพียงตัวเดียว โดยดำเนินการย้อนกลับไปตามเวลา:
| 2 |
นี่คือสมการของเบลล์แมน
การเขียนโปรแกรมเชิงพลวัตแบบดิฟเฟอเรนเชียล
DDP ดำเนินการโดยการทำการส่งผ่านย้อนกลับซ้ำๆ บนวิถีการเคลื่อนที่ที่กำหนดไว้เพื่อสร้างลำดับการควบคุมใหม่ จากนั้นจึงทำการส่งผ่านไปข้างหน้าเพื่อคำนวณและประเมินวิถีการเคลื่อนที่ที่กำหนดไว้ใหม่ เราเริ่มต้นด้วยการส่งผ่านย้อนกลับ หาก
คืออาร์กิวเมนต์ของตัวดำเนินการในสมการที่ 2ให้เป็นการเปลี่ยนแปลงของปริมาณนี้รอบคู่ที่-th :
และขยายไปสู่ลำดับที่สอง
| 3 |
สัญกรณ์ที่ใช้ในที่นี้เป็นรูปแบบหนึ่งของสัญกรณ์ของโมริโมโตะ โดยที่ตัวห้อยแสดงถึงความแตกต่างในโครงสร้างตัวส่วน[ 5 ] การตัดดัชนีออกเพื่อให้อ่านง่ายขึ้น ไพรม์ที่แสดงถึงขั้นตอนเวลาถัดไป สัมประสิทธิ์การขยายคือ
พจน์สุดท้ายในสมการสามสมการสุดท้ายแสดงถึงการหดตัวของเวกเตอร์กับเทนเซอร์ การลดค่าประมาณกำลังสอง(3) ให้เหลือน้อยที่สุด เมื่อเทียบกับเราจะได้
| 4 |
โดยให้เทอมแบบวงเปิดและเทอมเกนป้อนกลับ เมื่อนำผลลัพธ์กลับไปใส่ใน(3)เราจะได้แบบจำลองกำลังสองของค่า ณ เวลา:
การคำนวณแบบเรียกซ้ำของแบบจำลองกำลังสองเฉพาะที่และการปรับเปลี่ยนการควบคุมตั้งแต่ลงไปถึงถือเป็นการส่งผ่านย้อนกลับ ดังที่กล่าวมาข้างต้น ค่าจะถูกเริ่มต้นด้วยเมื่อการส่งผ่านย้อนกลับเสร็จสมบูรณ์ การส่งผ่านไปข้างหน้าจะคำนวณวิถีใหม่:
การส่งผ่านย้อนกลับและการส่งผ่านไปข้างหน้าจะถูกทำซ้ำจนกว่าจะบรรจบกัน หากแทนที่เมทริกซ์เฮสเซียนด้วยการประมาณค่าเกาส์-นิวตัน วิธีการนี้จะลดลงเหลือตัวควบคุมเชิงเส้นกำลังสองแบบวนซ้ำ (iLQR) [ 6 ]
การปรับให้เป็นมาตรฐานและการค้นหาเส้น
การเขียนโปรแกรมเชิงพลวัตแบบดิฟเฟอเรนเชียลเป็นอัลกอริธึมลำดับที่สองเช่นเดียวกับวิธีของนิวตันดังนั้นจึงใช้ขั้นตอนขนาดใหญ่ในการหาค่าต่ำสุดและมักต้องใช้การปรับค่าและ/หรือการค้นหาเส้นตรงเพื่อให้เกิดการบรรจบกัน[ 7 ] [ 8 ]การปรับค่าในบริบทของ DDP หมายถึงการทำให้แน่ใจว่าเมทริกซ์ในสมการที่ 4เป็นเมทริกซ์บวกแน่นอนการค้นหาเส้นตรงใน DDP เทียบเท่ากับการปรับขนาดการปรับเปลี่ยนการควบคุมแบบวงเปิดด้วยค่าบางค่า
เวอร์ชั่นมอนเตคาร์โล
การเขียนโปรแกรมเชิงพลวัตแบบดิฟเฟอเรนเชียลแบบสุ่มตัวอย่าง (SaDDP) เป็นรูปแบบมอนเตคาร์โลของการเขียนโปรแกรมเชิงพลวัตแบบดิฟเฟอเรนเชียล[ 9 ] [ 10 ] [ 11 ]โดยอาศัยการพิจารณาต้นทุนกำลังสองของการเขียนโปรแกรมเชิงพลวัตแบบดิฟเฟอเรนเชียลเป็นพลังงานของการแจกแจงแบบโบลต์ซมันน์ด้วยวิธีนี้ ปริมาณของ DDP สามารถจับคู่กับสถิติของการแจกแจงปกติแบบหลายมิติได้สถิติเหล่านี้สามารถคำนวณใหม่ได้จากวิถีที่สุ่มตัวอย่างโดยไม่ต้องทำการหาอนุพันธ์
การเขียนโปรแกรมเชิงพลวัตแบบดิฟเฟอเรนเชียลที่สุ่มตัวอย่างได้รับการขยายไปสู่การปรับปรุงนโยบายอินทิกรัลเส้นทางด้วยการเขียนโปรแกรมเชิงพลวัตแบบดิฟเฟอเรนเชียล[ 12 ]ซึ่งสร้างการเชื่อมโยงระหว่างการเขียนโปรแกรมเชิงพลวัตแบบดิฟเฟอเรนเชียลและการควบคุมอินทิกรัลเส้นทาง[ 13 ]ซึ่งเป็นกรอบการทำงานของการควบคุมที่เหมาะสมแบบสุ่ม
ปัญหาที่ถูกจำกัด
การเขียนโปรแกรมเชิงพลวัตแบบจุดภายใน (IPDDP) เป็นวิธีการจุดภายในที่เป็นแบบทั่วไปของ DDP ซึ่งสามารถแก้ไขปัญหาการควบคุมที่เหมาะสมที่สุดด้วยสถานะที่ไม่เป็นเชิงเส้นและข้อจำกัดของอินพุต[ 14 ]
ดูเพิ่มเติม
ลิงก์ภายนอก
- การใช้งาน DDP ในภาษา Python
- การนำ DDP มาใช้ใน MATLAB
- เฟรมเวิร์กซอฟต์แวร์โอเพนซอร์สacadosนำเสนอการใช้งาน DDP ที่มีประสิทธิภาพและสามารถฝังตัวได้
สรุปเนื้อหา
ข้อมูลสำคัญจากบทความ
ข้อมูลสำคัญเกี่ยวกับ การเขียนโปรแกรมเชิงพลวัตแบบดิฟเฟอเรนเชียล
การเขียนโปรแกรมเชิงพลวัตแบบดิฟเฟอเรนเชียล ( DDP ) เป็น อัลกอริทึม ควบคุมที่เหมาะสมที่สุดใน กลุ่ม การเพิ่มประสิทธิภาพวิถีการเคลื่อนที่ อัลกอริทึมนี้ได้รับการแนะนำในปี 1966 โดยMayne
การเขียนโปรแกรมแบบไดนามิก
ให้เป็นลำดับควบคุมบางส่วนและกำหนด ต้นทุนที่รอการดำเนินการ (cost-to-go) เป็นผลรวมบางส่วนของต้นทุนจากถึง: U i {\displaystyle \mathbf {U} _{i}} U i ≡ { u i , u i + 1 … , u N − 1 } {\displaystyle \mathbf {U} _{i}\equiv \{\mathbf {u} _{i},\mathbf {u} _{i+1}\dots...
การเขียนโปรแกรมเชิงพลวัตแบบดิฟเฟอเรนเชียล
DDP ดำเนินการโดยการทำการส่งผ่านย้อนกลับซ้ำๆ บนวิถีการเคลื่อนที่ที่กำหนดไว้เพื่อสร้างลำดับการควบคุมใหม่ จากนั้นจึงทำการส่งผ่านไปข้างหน้าเพื่อคำนวณและประเมินวิถีการเคลื่อนที่ที่กำหนดไว้ใหม่ เราเริ่มต้นด้วยการส่งผ่านย้อนกลับ หาก
การปรับให้เป็นมาตรฐานและการค้นหาเส้น
การเขียนโปรแกรมเชิงพลวัตแบบดิฟเฟอเรนเชียลเป็นอัลกอริธึมลำดับที่สองเช่นเดียวกับ วิธีของนิวตัน ดังนั้นจึงใช้ขั้นตอนขนาดใหญ่ในการหาค่าต่ำสุดและมักต้องใช้ การปรับค่า และ/หรือ การค้นหาเส้นตรง เพื่อให้เกิดการบรรจบกัน [ 7 ] [ 8 ] การปรับค่าในบริบทของ DDP...