二次规划
二次规划为求目标函数的最小值,该函数的约束包括A·x ≤ b,Aeq·x = beq,l ≤ x ≤ u。二次规划与线性规划的区别在于目标函数为自变量的二次函数。MATLAB提供用于二次规划的函数为quadprog,该函数的调用格式包括:
x = quadprog(H,f)
x = quadprog(H,f,A,b)
x = quadprog(H,f,A,b,Aeq,beq)
x = quadprog(H,f,A,b,Aeq,beq,lb,ub)
x = quadprog(H,f,A,b,Aeq,beq,lb,ub,x0)
x = quadprog(H,f,A,b,Aeq,beq,lb,ub,x0,options)
x = quadprog(problem)
= quadprog(H,f,...)
= quadprog(H,f,...)
= quadprog(H,f,...)
= quadprog(H,f,...)其中,f为中的cT ,H为其中的H(必须为正定矩阵);x为返回的x;A为不等式约束系数矩阵,b为不等式约束的右项;Aeq为等式约束的左项,beq为等式约束的右项;lb、ub分别为x的下限和上限;x0为初始求解点,options为optimset命令设置的选项;problem为满足要求的数据结构;fval为求解函数的值;exitflag描述退出条件;output为优化信息数据;lambda参数是解x处的拉格朗日乘子。它有以下一些属性:
[*]lambda.lower——lambda的下界;
[*]lambda.upper——lambda的上界;
[*]lambda.ineqlin——lambda的线性不等式;
[*]lambda.eqlin——lambda的线性等式
例11-7,二次规划示例。目标函数受以下约束:
求x的值,使目标函数的值最小。
在命令行窗口输入:H=eye(4)
f=ones(4,1)
A = ;
b = ;
= quadprog(H,f, A,b)输出结果如下:H = 1 0 0 0
0 1 0 0
0 0 1 0
0 0 0 1
f = 1
1
1
1
Optimization terminated.
x = -1
-1
-1
-1
fval = -2
exitflag = 1
output = iterations: 1
constrviolation: 0
algorithm: 'active-set'
message: 'Optimization terminated.'
firstorderopt: 0
cgiterations: []
lambda = lower:
upper:
eqlin:
ineqlin:
页:
[1]