Fmincon 函数
这个函数的基本形式为
x = fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options)
其中 fun 为你要求最小值的函数,可以单写一个文件设置函数,如以上给的例子中。
1.如果 fun 中有 N 个变量,如 x y z, 或者是 X1, X2,X3, 什么的,自己排个顺序,在 fun 中统
一都是用 x(1),x(2)....x(n) 表示的。
2. x0, 表示初始的猜测值,大小要与变量数目相同
3. A b 为线性不等约束,A*x <= b, A 应为 n*n 阶矩阵,学过线性代数应不难写出 A 和 b
4 Aeq beq 为线性相等约束,Aeq*x = beq。 Aeq beq 同上可求
5 lb ub 为变量的上下边界, 正负无穷用 -Inf 和 Inf 表示, lb ub 应为 N 阶数组
6 nonlcon 为非线性约束,可分为两部分,非线性不等约束 c,非线性相等约束,ceq
可按下面的例子设置
function [c,ce] = nonlcon1(x)
c = -x(1)+x(2)^2-4;
ce = []; % no nonlinear equality constraints
7, 最后是 options, 可以用 OPTIMSET 函数设置,见上例
具体可见 OPTIMSET 函数的帮助文件。
1. fmincon 函数提供了大型优化算法和中型优化算法。默认时,若在 fun 函数中提供了梯
度(options 参数的 GeadObj 设置为 'on'),并且只有上下界存在或只有等式约束,fmincon
函数将选择大型算法。当既有等式约束又有梯度约束时,使用中型算法。
2. fmincon 函数的中型算法一般是使用序列二次规划。在每一步迭代中求解二次规划子问
题,并用 BFGS 法更新 Lagrangian 乘子和 Hessian 矩阵。
3. fmincon 函数的大型算法采用了 subspace trust region 优化算法。这种算法是把目标函数在
点 x 的邻域泰勒展开(x 可以认为是人为提供的初始猜测),这个展开的邻域就是所谓的 trust
region,泰勒展开进行到二阶项为止。
4. fmincon 函数可能会给出局部最优解,这与初始值的选取有关。
目标函数:f=x1y1+x2y2+x3y3+x4y4
约束条件:4y1+80y2+35y3+25y4<=600
9y1+2y2+30y3+40y4<=700
y1=-6.49*x1+6748
y2=-1.2*x2+1184
y3=-0.22x3+0.026x4+420
y4=-0.034x4+0.027x3+70
所有变量均〉=0
求:目标函数最大值
评论0
最新资源