Constrained Optimization

ให้ $x\in\mathbf{R}^n$ และให้ $f(x)$ และ $g_1(x),\ldots, g_{\text{ne}}(x)$ และ $h_1(x),\ldots, h_\text{ni}(x)$ เป็นฟังก์ชันที่สามารถหาอนุพันธ์ได้    แอปพลิเคชันนี้คำนวณหาคำตอบของปัญหา constrained optimization ที่อยู่ในรูป \[ \begin{aligned} \min_{x} \quad & f(x)\\ \textrm{s.t.} \quad & \boldsymbol{g}(x) = 0\\ & \boldsymbol{h}(x) \geqslant 0 \\ & l\leqslant x \leqslant u \end{aligned} \] โดยที่ $\boldsymbol{g}(x)=[g_1(x),\ldots, g_{\text{ne}}(x)]^T$ เป็น equality constraint ซึ่งมี $\text{ne}$ ตัว และ $\boldsymbol{h}(x)=[h_1(x),\ldots, h_{\text{ni}}(x)]^T$ เป็น inequality constraint ซึ่งมี $\text{ni}$ ตัว และค่าของ $x_i$ จะต้องอยู่ในช่วง $l_i\leqslant x_i\leqslant u_i$ เมื่อ $i=1,\ldots,n$

ตัวอย่างของปัญหาในลักษณะนี้ เช่นเราต้องการหา $x$ ที่ทำให้ $f(x)=(x_1-2)^2 + (x_2-2)^2 -2(x_1+x_2)$ มีค่าน้อยที่สุด โดย $x$ จะต้องสอดคล้องกับเงื่อนไข equality constraint $x_1^2+x_2-2=0$ และ inequality constraint $0\leqslant x_1^2-x_2\leqslant 1$ และ $x_1,x_2$ ต้องอยู่ในช่วง $[-1,2]$

เมื่อเขียนปัญหานี้ให้อยู่ในรูปสำหรับ constrained optimization เราจะได้ \[ \begin{aligned} \min_{x} \quad & f(x)=(x_1-2)^2 + (x_2-2)^2 -2(x_1+x_2) \\ \textrm{s.t.} \quad & g_1(x)=x_1^2+x_2-2=0\\ & h_1(x)=x_1^2-x_2 \geqslant 0 \\ & h_2(x)=1-x_1^2+x_2 \geqslant 0 \\ & -1\leqslant x_1 \leqslant 2 \\ & -1\leqslant x_2 \leqslant 2 \end{aligned} \] จะสังเกตว่า inequality constraint จะต้องอยู่ในรูป $h_i(x)\geqslant 0$ เสมอ (ไม่ใช่ $h_i(x)\leqslant 0$ หรือรูปแบบอื่น) เช่น $0\leqslant x_1^2-x_2\leqslant 1$ ซึ่งยังไม่อยู่ในรูปที่เราต้องการ ดังนั้นเราจะแยกเป็นสองเงื่อนไขคือ $0\leqslant x_1^2-x_2$ หรือ $h_1(x)= x_1^2-x_2\geqslant 0$ ซึ่งอยู่ในรูปที่เราต้องการแล้ว และ $x_1^2-x_2\leqslant 1$ ซึ่งตัวหลังนี้เขียนใหม่เป็น $h_2(x)=1-x_1^2+x_2 \geqslant 0$ ตามที่เราต้องการ

ข้อมูลอินพุท

  1. ในส่วนของ $f(x)$ แอปพลิเคชันนี้ใช้ข้อมูลอินพุทแบบเดียวกับ เวกเตอร์เกรเดียน
  2. ในส่วนของ equality/inequality constraint $\boldsymbol{g}(x)$ และ $\boldsymbol{h}(x)$ แอปพลิเคชันนี้ใช้ข้อมูลอินพุทแบบเดียวกับ เมตริกซ์จาโคเบียน โดยในกรณีของ $\boldsymbol{g}(x)$ ไม่ต้องใส่เครื่องหมาย $=0$ และในกรณีของ $\boldsymbol{h}(x)$ ไม่ต้องใส่เครื่องหมาย $\geqslant 0$ และเนื่องจากแอปพลิเคชันนี้ใช้กับ constrained optimization เพราะฉะนั้นจะต้องมีอย่างน้อยหนึ่ง constraint เสมอเป็น equality constraint หรือ inequality constraint ก็ได้
  3. ข้อมูลอินพุทสำหรับช่วงของ $x$ จะมี $n$ แถวและมี 2 หลักโดยหลักแรกคือ $l$ และหลักที่สองเป็น $u$ ถ้าไม่มีข้อมูลในช่องอินพุทนี้ แอปพลิเคชันจะกำหนดให้ $-10\leqslant x_i\leqslant 10$ โดย $i=1,\ldots,n$
  4. ค่าเริ่มต้นของ $x_1,\ldots,x_n$ ที่จะใช้ในการคำนวณ ถ้าไม่มีข้อมูลในช่องอินพุทนี้ แอปพลิเคชันจะกำหนดค่าให้ดังนี้ $x_i=\text{random}(l_i,u_i)$ เป็นการ random ค่าที่อยู่ระหว่าง $l_i$ และ $u_i$ โดย $i=1,\ldots,n$

คำนวณคำตอบของ Constrained Optimization