กลับไปหน้าบทความ

อ่าน 7 นาที

การเขียนโปรแกรมเชิงกำลังสอง

การเขียนโปรแกรมเชิงกำลังสอง (Quadratic ProgrammingหรือQP ) คือกระบวนการแก้ปัญหาการหาค่าเหมาะสมที่สุดทางคณิตศาสตร์ บางอย่าง ที่เกี่ยวข้อง กับ ฟังก์ชันกำลังสองโดยเฉพาะอย่างยิ่ง...

การเขียนโปรแกรมเชิงกำลังสอง

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

"การเขียนโปรแกรม" ในบริบทนี้หมายถึงขั้นตอนที่เป็นทางการสำหรับการแก้ปัญหาทางคณิตศาสตร์ การใช้งานนี้มีมาตั้งแต่ทศวรรษ 1940 และไม่ได้เชื่อมโยงกับแนวคิด "การเขียนโปรแกรมคอมพิวเตอร์" ในปัจจุบันโดยเฉพาะ เพื่อหลีกเลี่ยงความสับสน ผู้ปฏิบัติงานบางคนจึงนิยมใช้คำว่า "การเพิ่มประสิทธิภาพ" เช่น "การเพิ่มประสิทธิภาพกำลังสอง" [ 1 ]

การกำหนดปัญหา

ปัญหาการเขียนโปรแกรมกำลังสองที่มี ตัวแปร nตัวและ ข้อจำกัด mข้อสามารถกำหนดได้ดังนี้[ 2 ] กำหนดให้:

  • เวกเตอร์cที่ มีค่าเป็นจำนวน จริงและ มีมิติ n
  • เมทริกซ์สมมาตรจริงมิติn × n Q
  • เมทริกซ์จริงA ที่มีมิติ m × nและ
  • เวกเตอร์จริงมิติm b ,

วัตถุประสงค์ของการเขียนโปรแกรมเชิงกำลังสองคือการหา เวกเตอร์ nมิติxที่จะ

ลดให้น้อยที่สุด
ขึ้นอยู่กับ

โดยที่x Tแทนเวกเตอร์ทรานสโพสของxและสัญลักษณ์A xbหมายความว่า สมาชิกทุกตัวของเวกเตอร์A xมีค่าน้อยกว่าหรือเท่ากับสมาชิกที่สอดคล้องกันของเวกเตอร์b (ความไม่เท่ากันแบบรายองค์ประกอบ)

กำลังสองน้อยที่สุดแบบมีข้อจำกัด

ในกรณีพิเศษ เมื่อQเป็นเมทริกซ์สมมาตรบวกแน่นอนฟังก์ชันต้นทุนจะลดลงเหลือเพียงวิธีกำลังสองน้อยที่สุด:

ลดให้น้อยที่สุด
ขึ้นอยู่กับ

โดยที่Q = R T Rมาจากการแยกตัวประกอบ CholeskyของQและc = − R T d ในทางกลับกัน โปรแกรม กำลังสองน้อยที่สุดแบบมีข้อจำกัดใดๆ ก็ตาม สามารถกำหนดให้อยู่ในกรอบที่เทียบเท่ากันได้ในรูปแบบของปัญหาการเขียนโปรแกรมเชิงกำลังสอง แม้แต่สำหรับ เมทริกซ์ Rที่ไม่ใช่เมทริกซ์จัตุรัสทั่วไปก็ตาม

การสรุปโดยทั่วไป

เมื่อทำการหาค่าต่ำสุดของฟังก์ชันfในบริเวณใกล้เคียงจุดอ้างอิงx 0 ใดๆ นั้นQจะถูกกำหนดให้เป็นเมทริกซ์เฮสเซียนH ( f ( x 0 ))และcจะถูกกำหนดให้เป็นเกรเดียนต์f ( x 0 )ปัญหาการเขียนโปรแกรมที่เกี่ยวข้องอีกปัญหาหนึ่งคือการเขียนโปรแกรมเชิงกำลังสองที่มีข้อจำกัดแบบกำลังสองซึ่งสามารถกำหนดได้โดยการเพิ่มข้อจำกัดแบบกำลังสองให้กับตัวแปรต่างๆ

วิธีการแก้ปัญหา

สำหรับปัญหาทั่วไป มักใช้วิธีการที่หลากหลาย ซึ่งรวมถึง

ในกรณีที่Qเป็นเมทริกซ์บวกแน่นอนปัญหาดังกล่าวเป็นกรณีพิเศษของสาขาการหาค่าเหมาะสมที่สุดแบบนูน (convex optimization ) ที่ทั่วไปกว่า

ข้อจำกัดความเท่าเทียมกัน

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

กำหนดโดยระบบเชิงเส้น

โดยที่λคือเซตของตัวคูณลากรางจ์ซึ่งได้มาจากคำตอบพร้อมกับ x

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

หากข้อจำกัดไม่ได้ผูกตัวแปรไว้แน่นเกินไป วิธีการที่ค่อนข้างง่ายคือการเปลี่ยนตัวแปรเพื่อให้ข้อจำกัดเป็นไปตามเงื่อนไขโดยไม่มีเงื่อนไข ตัวอย่างเช่น สมมติว่าd = 0 (การขยายไปสู่ค่าที่ไม่ใช่ศูนย์นั้นทำได้ง่าย) เมื่อพิจารณาสมการข้อจำกัด:

แนะนำตัวแปรใหม่yซึ่งกำหนดโดย

โดยที่yมีมิติเท่ากับxลบด้วยจำนวนข้อจำกัด จากนั้น

และถ้า เลือก ค่า Zให้EZ = 0สมการข้อจำกัดก็จะได้รับการตอบสนองเสมอ การหาค่าZ ดังกล่าว จำเป็นต้องหาปริภูมิว่างของEซึ่งจะง่ายหรือง่ายขึ้นอยู่กับโครงสร้างของEการแทนค่าลงในรูปแบบกำลังสองจะทำให้ได้ปัญหาการหาค่าต่ำสุดแบบไม่มีข้อจำกัด:

ซึ่งคำตอบของสมการนี้คือ:

ภายใต้เงื่อนไขบางประการเกี่ยวกับQเมทริกซ์ลดรูปZ T QZ จะเป็นเมทริกซ์บวก แน่นอนสามารถเขียนรูปแบบหนึ่งของวิธีการไล่ระดับคอนจูเกตซึ่งหลีกเลี่ยงการคำนวณZ อย่างชัดเจนได้ [ 5 ]

ความเป็นคู่แบบลากรางจ์

ปัญหาการเขียนโปรแกรมเชิงกำลัง สองที่มีฟังก์ชันคู่ลากรางจ์ก็เป็นปัญหาการเขียนโปรแกรมเชิงกำลังสองเช่นกัน เพื่อให้เห็นภาพนี้ เรามาพิจารณากรณีที่c = 0และQเป็นเมทริกซ์บวกแน่นอน เราเขียน ฟังก์ชัน ลากรางจ์ได้ดังนี้

เมื่อกำหนดฟังก์ชันคู่ (ลากรางจ์) g (λ)เป็นเราจะพบค่าต่ำสุดของLโดยใช้และความเป็นบวกแน่นอนของQ :

ดังนั้น หน้าที่สองประการคือ

ดังนั้นคู่ลากรางจ์ของปัญหาการเขียนโปรแกรมเชิงกำลังสองคือ

นอกจากทฤษฎีทวิภาวะของลากรางจ์แล้ว ยังมีการจับคู่ทวิภาวะอื่นๆ อีก (เช่น ทฤษฎีของวูล์ฟเป็นต้น)

ความซับซ้อนของเวลาการทำงาน

การเขียนโปรแกรมกำลังสองแบบนูน

สำหรับQ ที่เป็นบวกแน่นอน ปัญหาการลดค่าต่ำสุดจะเป็นแบบนูนดังนั้นวิธีวงรี จึง สามารถใช้แก้ปัญหาได้ในเวลาพหุนาม (แบบอ่อน) ซึ่งได้รับการแสดงอย่างชัดเจนในปี 1979 โดย Kozlov, Tarasov และ Khachiyan [ 6 ]

Ye และ Tse [ 7 ]นำเสนออัลกอริทึมเวลาพหุนาม ซึ่งขยายอัลกอริทึมของ Karmarkarจากการเขียนโปรแกรมเชิงเส้นไปสู่การเขียนโปรแกรมกำลังสองแบบนูน บนระบบที่มี ตัวแปร nตัวและ บิตอินพุต Lอัลกอริทึมของพวกเขาต้องการการวนซ้ำ O(L n) ครั้ง ซึ่งแต่ละครั้งสามารถทำได้โดยใช้การดำเนินการทางคณิตศาสตร์ O(L n 3 ) ครั้ง ทำให้ความซับซ้อนของเวลาการทำงานโดยรวมเป็น O( L 2 n 4 )

Kapoor และ Vaidya [ 8 ]นำเสนออัลกอริทึมอีกตัวหนึ่งซึ่งต้องใช้การดำเนินการทางคณิตศาสตร์ O( L * log L * n 3.67 * log n )

การเขียนโปรแกรมกำลังสองที่ไม่นูน

เมื่อQไม่ใช่เมทริกซ์บวกแน่นอน (ดังนั้นปัญหาจึงไม่นูน) การเขียนโปรแกรมกำลังสองจะเป็นปัญหาNP-hardวิธีหนึ่งที่จะพิสูจน์ได้คือการใช้ทฤษฎีบทMotzkin-Straus [ 9 ]ซึ่งระบุว่าสำหรับกราฟG ที่ไม่มีทิศทางใดๆ โปรแกรมกำลังสองบางอย่างที่เกี่ยวข้องกับGจะมีค่าสูงสุดที่เป็นฟังก์ชันของจำนวนคลิกของGการคำนวณจำนวนคลิกของกราฟเป็นปัญหา NP-hard ที่รู้จักกันดี ดังนั้นการแก้โปรแกรมกำลังสองจึงเป็น NP-hard เช่นกัน กรณีพิเศษที่สำคัญบางกรณีก็เป็น NP-hard เช่นกัน:

  • Sahni [ 10 ]พิสูจน์ความยากแบบ NP สำหรับกรณีที่ Q เป็นเมทริกซ์บวกแน่นอน (มี ค่าไอเกนลบ nค่า)
  • Pardalos และ Vavasis [ 11 ]พิสูจน์ความยากแบบ NP (อย่างแข็งแกร่ง) เมื่อใดก็ตามที่ Q มีค่าไอ เกนลบอย่างน้อยหนึ่งค่า พวกเขาทำเช่นนี้โดยแสดงการลดรูปจากปัญหา Cliqueไปเป็นโปรแกรมกำลังสองเฉพาะที่มีตัวแปรw ​​, x 1 ... x n , y 1,2 ... y (n-1),n , zและฟังก์ชันวัตถุประสงค์z - w 2พวกเขาพิสูจน์ว่ากราฟอินพุตมี clique ขนาดkก็ต่อเมื่อโปรแกรมกำลังสองที่สอดคล้องกันมีคำตอบที่มีค่าเป็น 0

ยิ่งไปกว่านั้น การค้นหาจุด KKT ของโปรแกรมกำลังสองที่ไม่นูนนั้นยากแบบ CLS [ 12 ]

การเขียนโปรแกรมกำลังสองแบบจำนวนเต็มผสม

มีบางสถานการณ์ที่องค์ประกอบหนึ่งหรือมากกว่าของเวกเตอร์xจะต้องมี ค่า เป็นจำนวนเต็มซึ่งนำไปสู่การกำหนดปัญหาการเขียนโปรแกรมกำลังสองแบบผสมจำนวนเต็ม (MIQP) [ 13 ]การประยุกต์ใช้ MIQP ได้แก่ทรัพยากรน้ำ[ 14 ]และการสร้างกองทุนดัชนี[ 15 ]

ตัวแก้ปัญหาและภาษาสคริปต์ (การเขียนโปรแกรม)

ชื่อ ข้อมูลโดยย่อ
เอเอ็มเอ็มเอสระบบซอฟต์แวร์สำหรับการสร้างแบบจำลองและการแก้ปัญหาประเภทการเพิ่มประสิทธิภาพและการจัดตารางเวลา
อัลกลิบไลบรารีเชิงตัวเลขแบบสองลิขสิทธิ์ (GPL/ลิขสิทธิ์เฉพาะ) (C++, .NET)
แอมพีแอลภาษาสร้างแบบจำลองยอดนิยมสำหรับการหาค่าเหมาะสมที่สุดทางคณิตศาสตร์ในระดับขนาดใหญ่
เอพีโมนิเตอร์ชุดเครื่องมือสำหรับการสร้างแบบจำลองและการหาค่าเหมาะสมที่สุดสำหรับ ระบบ LP , QP, NLP , MILP , MINLPและDAEใน MATLAB และ Python
อาร์เทลีส ไนโตรแพ็คเกจแบบบูรณาการสำหรับการเพิ่มประสิทธิภาพแบบไม่เชิงเส้น
ซีจีแอลแพ็กเกจโอเพนซอร์สสำหรับเรขาคณิตเชิงคำนวณ ซึ่งรวมถึงตัวแก้ปัญหาการเขียนโปรแกรมเชิงควาดราติก
ซีพีเล็กซ์เครื่องมือแก้ปัญหาที่ได้รับความนิยม พร้อม API (รองรับภาษา C, C++, Java, .Net, Python, Matlab และ R) ใช้งานได้ฟรีสำหรับนักวิชาการ
ฟังก์ชันแก้ปัญหาใน Excelโปรแกรมแก้สมการไม่เชิงเส้นที่ปรับให้เหมาะกับสเปรดชีต ซึ่งการประเมินค่าฟังก์ชันจะขึ้นอยู่กับการคำนวณเซลล์ใหม่ เวอร์ชันพื้นฐานมีให้ใช้งานเป็นส่วนเสริมมาตรฐานสำหรับ Excel
แกมส์ระบบการสร้างแบบจำลองระดับสูงสำหรับการเพิ่มประสิทธิภาพทางคณิตศาสตร์
จีนู อ็อกเทฟภาษาโปรแกรมอเนกประสงค์และเน้นเมทริกซ์สำหรับการคำนวณเชิงตัวเลขแบบฟรี (ลิขสิทธิ์GPLv 3) คล้ายกับ MATLAB การเขียนโปรแกรมเชิงกำลังสองใน GNU Octave สามารถทำได้ผ่าน คำสั่ง qp
ไฮเอชเอสซอฟต์แวร์โอเพนซอร์สสำหรับแก้ปัญหารูปแบบการเขียนโปรแกรมเชิงเส้น (LP), การเขียนโปรแกรมจำนวนเต็มแบบผสม (MIP) และการเขียนโปรแกรมกำลังสองแบบนูน (QP)
ไอเอ็มเอสแอลชุดฟังก์ชันทางคณิตศาสตร์และสถิติที่โปรแกรมเมอร์สามารถฝังลงในแอปพลิเคชันซอฟต์แวร์ของตนได้
ไอป๊อปทีIPOPT (Interior Point OPTimizer) เป็นชุดซอฟต์แวร์สำหรับเพิ่มประสิทธิภาพแบบไม่เชิงเส้นขนาดใหญ่
จูเลียJuMPเป็นภาษาโปรแกรมระดับสูงที่มีแพ็กเกจแก้ปัญหาที่โดดเด่น
เมเปิลภาษาโปรแกรมอเนกประสงค์สำหรับงานคณิตศาสตร์ การแก้ปัญหาสมการกำลังสองใน Maple ทำได้โดยใช้คำสั่ง QPSolve
MATLABMATLAB เป็นภาษาโปรแกรมอเนกประสงค์และเน้นเมทริกซ์สำหรับการคำนวณเชิงตัวเลข การเขียนโปรแกรมเชิงกำลังสองใน MATLAB จำเป็นต้องใช้ Optimization Toolbox นอกเหนือจากผลิตภัณฑ์ MATLAB พื้นฐาน
มาเทมาติกาภาษาโปรแกรมอเนกประสงค์สำหรับงานคณิตศาสตร์ ซึ่งรวมถึงความสามารถด้านสัญลักษณ์และตัวเลข
โมเซกโปรแกรมแก้ปัญหาการหาค่าเหมาะสมที่สุดขนาดใหญ่ พร้อม API สำหรับหลายภาษา (C++, Java, .Net, Matlab และ Python)
ห้องสมุดตัวเลข NAGชุดรวมรูทีนทางคณิตศาสตร์และสถิติที่พัฒนาโดยกลุ่มอัลกอริทึมเชิงตัวเลข (Numerical Algorithms Group หรือ NAG Library) สำหรับภาษาโปรแกรมหลายภาษา (C, C++, Fortran, Visual Basic, Java และ C#) และแพ็กเกจ (MATLAB, Excel, R, LabVIEW) ส่วนการหาค่าเหมาะสมที่สุดของ NAG Library ประกอบด้วยรูทีนสำหรับปัญหาการเขียนโปรแกรมเชิงกำลังสองที่มีเมทริกซ์ข้อจำกัดเชิงเส้นทั้งแบบเบาบางและไม่เบาบาง รวมถึงรูทีนสำหรับการหาค่าเหมาะสมที่สุดของฟังก์ชันเชิงเส้น ฟังก์ชันไม่เชิงเส้น ผลรวมกำลังสองของฟังก์ชันเชิงเส้นหรือฟังก์ชันไม่เชิงเส้นที่มีข้อจำกัดแบบไม่เชิงเส้น มีขอบเขต หรือไม่มีข้อจำกัด NAG Library มีรูทีนสำหรับการหาค่าเหมาะสมที่สุดทั้งแบบเฉพาะที่และแบบทั่วโลก และสำหรับปัญหาแบบต่อเนื่องหรือแบบจำนวนเต็ม
ojAlgooj! Algorithms - ojAlgo - เป็นโค้ด Java โอเพนซอร์สที่เกี่ยวข้องกับคณิตศาสตร์ พีชคณิตเชิงเส้น และการเพิ่มประสิทธิภาพ
ไพธอนภาษาโปรแกรมระดับสูงที่มีการเชื่อมต่อกับตัวแก้ปัญหาที่มีอยู่ส่วนใหญ่ การเขียนโปรแกรมเชิงควาดราติกสามารถทำได้ผ่าน ฟังก์ชัน solve_qpหรือโดยการเรียกใช้ตัวแก้ปัญหาเฉพาะโดยตรง
อาร์ (ฟอร์แทรน)เฟรมเวิร์กการคำนวณทางสถิติแบบข้ามแพลตฟอร์มที่ใช้งานได้ทั่วไป ภายใต้ลิขสิทธิ์ GPL
เอสเอเอส /โออาร์ชุดเครื่องมือแก้ปัญหาสำหรับการเพิ่มประสิทธิภาพเชิงเส้น จำนวนเต็ม ไม่เชิงเส้น ปราศจากอนุพันธ์ เครือข่าย การจัดเรียง และข้อจำกัด; ภาษาสร้างแบบจำลองเชิงพีชคณิต OPTMODEL; และโซลูชันเฉพาะด้านต่างๆ ที่มุ่งเน้นปัญหา/ตลาดเฉพาะ ซึ่งทั้งหมดนี้ผสานรวม เข้า กับระบบ SAS อย่างสมบูรณ์
สวนซู่ชุดอัลกอริธึมการหาค่าเหมาะสมที่สุดแบบโอเพนซอร์สสำหรับแก้ปัญหาLP , QP, SOCP , SDPและSQPในภาษา Java
ทีเค โซลเวอร์ระบบซอฟต์แวร์สำหรับการสร้างแบบจำลองทางคณิตศาสตร์และการแก้ปัญหาโดยใช้ภาษาเชิงประกาศและกฎเกณฑ์ ซึ่งจัดจำหน่ายโดยบริษัท Universal Technical Systems, Inc.
ทอมแล็บรองรับการหาค่าเหมาะสมที่สุดทั่วโลก การเขียนโปรแกรมจำนวนเต็ม วิธีการกำลังสองน้อยที่สุดทุกประเภท การเขียนโปรแกรมเชิงเส้น การเขียนโปรแกรมกำลังสอง และการเขียนโปรแกรมแบบไม่มีข้อจำกัดสำหรับMATLAB TOMLABรองรับตัวแก้ปัญหาเช่นCPLEX , SNOPTและKNITRO
เอ็กซ์เพรสโปรแกรมแก้ปัญหาสำหรับโปรแกรมเชิงเส้นขนาดใหญ่ โปรแกรมกำลังสอง โปรแกรมไม่เชิงเส้นทั่วไป และโปรแกรมจำนวนเต็มผสม มี API สำหรับภาษาโปรแกรมหลายภาษา รวมถึงภาษาสร้างแบบจำลอง Mosel และทำงานร่วมกับ AMPL และGAMSใช้งานได้ฟรีสำหรับสถาบันการศึกษา

ส่วนขยาย

การเพิ่มประสิทธิภาพพหุนาม[ 16 ]เป็นกรอบการทำงานทั่วไปมากขึ้น ซึ่งข้อจำกัดสามารถเป็นฟังก์ชันพหุนามที่มีดีกรีใดก็ได้ ไม่ใช่แค่ 2 เท่านั้น

ดูเพิ่มเติม

อ่านเพิ่มเติม

  • Cottle, Richard W.; Pang, Jong-Shi; Stone, Richard E. (1992). ปัญหาความสมบูรณ์แบบเชิงเส้น . วิทยาศาสตร์คอมพิวเตอร์และการคำนวณทางวิทยาศาสตร์. บอสตัน, แมสซาชูเซตส์: Academic Press, Inc. หน้า xxiv+762 หน้าISBN 978-0-12-192350-1MR 1150683 ​
  • Garey, Michael R. ; Johnson, David S. (1979). คอมพิวเตอร์และความยากลำบากในการแก้ปัญหา: คู่มือทฤษฎีความสมบูรณ์ของ NP . WH Freeman. ISBN 978-0-7167-1045-5.A6: MP2, หน้า 245.
  • Gould, Nicholas IM; Toint, Philippe L. (2000). "บรรณานุกรมการเขียนโปรแกรมเชิงควาดราติก" (PDF) . รายงานภายในกลุ่มวิเคราะห์เชิงตัวเลข RAL 2000-1. เก็บถาวรจากต้นฉบับ(PDF)เมื่อ 2017-07-05.
  • หน้าเว็บเกี่ยวกับการเขียนโปรแกรมเชิงกำลังสอง (Quadratic Programming) เก็บถาวรเมื่อวันที่ 7 มิถุนายน 2011 ที่Wayback Machine
  • คู่มือการปรับปรุงประสิทธิภาพของ NEOS: การเขียนโปรแกรมเชิงกำลังสอง
  • การเขียนโปรแกรมเชิงกำลังสอง (Quadratic Programming) ถูกเก็บถาวรเมื่อวันที่ 8 เมษายน 2023 ที่Wayback Machine
  • การเขียนโปรแกรมแบบลูกบาศก์และอื่นๆ นอกเหนือจากนั้นใน Operations Research Stack Exchange
ดึงข้อมูลมาจาก " https://en.wikipedia.org/w/index.php?title=Quadratic_programming&oldid=1344251770 "

สรุปเนื้อหา

ข้อมูลสำคัญจากบทความ

ข้อมูลสำคัญเกี่ยวกับ การเขียนโปรแกรมเชิงกำลังสอง

การเขียนโปรแกรมเชิงกำลังสอง (Quadratic ProgrammingหรือQP ) คือกระบวนการแก้ปัญหาการหาค่าเหมาะสมที่สุดทางคณิตศาสตร์ บางอย่าง ที่เกี่ยวข้อง กับ ฟังก์ชันกำลังสองโดยเฉพาะอย่างยิ่ง...

การกำหนดปัญหา

ปัญหาการเขียนโปรแกรมกำลังสองที่มี ตัวแปร n ตัวและ ข้อจำกัด m ข้อสามารถกำหนดได้ดังนี้ [ 2 ] กำหนดให้:

กำลังสองน้อยที่สุดแบบมีข้อจำกัด

ในกรณีพิเศษ เมื่อ Q เป็น เมทริกซ์สมมาตรบวกแน่นอน ฟังก์ชันต้นทุนจะลดลงเหลือเพียงวิธีกำลังสองน้อยที่สุด:

การสรุปโดยทั่วไป

เมื่อทำการหาค่าต่ำสุดของฟังก์ชัน f ในบริเวณใกล้เคียงจุดอ้างอิง x 0 ใดๆ นั้น Q จะถูกกำหนดให้เป็น เมทริกซ์เฮสเซียน H ( f ( x 0 )) และ c จะถูกกำหนดให้เป็น เกรเดียนต์ ∇ f ( x 0 ) ปัญหาการเขียนโปรแกรมที่เกี่ยวข้องอีกปัญหาหนึ่งคือ...