该示例是所有可能类型的约束的非线性最小化问题。该示例不使用渐变。
问题有五个变量,x(1)
通过x(5)
。目标函数是变量中的多项式。
。
目标函数处于本地功能myobj(x)
,它嵌套在功能内撞击
。代码撞击
出现在临时此示例的结尾。
非线性约束同样是多项式表达。
。
非线性约束在本地功能中myconstr(x)
,它嵌套在功能内撞击
。
问题有界限 和 。
那 。
问题具有线性平等约束 ,你可以写的 。
问题还有三种线性不等式约束:
将界限和线性约束表示为矩阵和向量。创建这些数组的代码是在撞击
功能。如上所述粉刺
输入参数部分,章节磅
和UB.
矢量代表约束
磅
UB.
。
矩阵一种
和向量B.
代表线性不等式约束
斧头
B.
那
和矩阵AEQ.
和向量贝卡
表示线性平等约束
AEQ * X = B.
。
称呼撞击
解决所有类型约束的最小化问题。
[x,fval,exitflag] =撞弹
发现满足约束的本地最小值。优化完成,因为目标函数在可行的方向上不降低,到在最优性公差的值内,并且对约束公差的值满足约束。
X =5×10.6114 2.0380 1.3948 0.1572 1.5498
fval = 37.3806.
EXITFLAG = 1
退出标志值1
表示粉刺
收敛到满足所有约束的本地最小值。
此代码创建撞击
函数,包含嵌套函数myobj.
和myconstr.
。
功能[x,fval,extflag] =撞弹x0 = [1;4;5;2;5];lb = [-inf;-inf;0;-inf;1]; ub = [ Inf; Inf; 20; Inf; Inf]; Aeq = [1 -0.3 0 0 0]; beq = 0; A = [0 0 0 -1 0.1 0 0 0 1 -0.5 0 0 -1 0 0.9]; b = [0; 0; 0]; opts = optimoptions(@fmincon,'算法'那'SQP');[x,fval,exitflag] = fmincon(@ myobj,x0,a,b,aeq,beq,lb,Ub,......@ myconstr,选择);%-----------------------------------------------------功能f = myobj(x)f = 6 * x(2)* x(5)+ 7 * x(1)* x(3)+ 3 * x(2)^ 2;结尾%-----------------------------------------------------功能[c,ceq] = myconstr(x)c = [x(1) - 0.2 * x(2)* x(5) - 71 0.9 * x(3) - x(4)^ 2 - 67];CEQ = 3 * x(2)^ 2 * x(5)+ 3 * x(1)^ 2 * x(3) - 20.875;结尾结尾