二次规划
若某非线性规划的目标函数为自变量 x 的二次函数,约束条件又全是线性的,就称这种规划为二次规划。
min21xTHx+fTxs.t.Ax≤b
quadprog函数
[x,fval]=quadprog(H,f,A,b,Aeq,beq,LB,UB,X0)
- H、f 即目标函数中的 H、f
- 其他参数与线性规划相同,参见线性规划
- 二次规划所求的结果为精确最优解
实例
minf(x)=2x12−4x1x2+4x22−6x1−3x2s.t.⎩⎪⎨⎪⎧x1+x2≤34x1+x2≤9x1,x2≥0
h = [4,-4;-4,8];
f = [-6;-3];
a = [1,1;4,1];
b = [3;9];
[x,fval] = quadprog(h,f,a,b,[],[],zeros(2,1));
disp(x)
disp(fval)
整数规划
规划中的变量限制为整数时,称为整数规划。
intlinprog函数
[x,fval]=intlinpog(c,intcon,A,b,Aeq,beq,LB,UB)
- intcon 是只能取整数的自变量序号
- 没有被 intcon 限定的自变量可以不必是整数;被 intcon 限定的自变量也可以有上下界
- 其他参数与线性规划相同,参见线性规划
实例
minz=−3x1−2x2−x3s.t.⎩⎪⎪⎪⎨⎪⎪⎪⎧x3intx1,x2≥0x1+x2+x3≤74x1+2x2+x3=12
clear
c = [-3;-2;-1];
intcon = 3;
A = [1 1 1];
b = 7;
Aeq = [4 2 1];
beq = 12;
[x,fval] = intlinprog(c,intcon,A,b,Aeq,beq,[0;0;0]);
disp(x)
disp(fval);