matlab 跳转到函数,matlab中fmincon函数如何调用??

函数  fmincon

格式  x = fmincon(fun,x0,A,b)

x = fmincon(fun,x0,A,b,Aeq,beq)

x = fmincon(fun,x0,A,b,Aeq,beq,lb,ub)

x = fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon)

x = fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options)

[x,fval] = fmincon(…)

[x,fval,exitflag] = fmincon(…)

[x,fval,exitflag,output] = fmincon(…)

[x,fval,exitflag,output,lambda] = fmincon(…)

[x,fval,exitflag,output,lambda,grad] = fmincon(…)

[x,fval,exitflag,output,lambda,grad,hessian] = fmincon(…)

参数说明:

fun为目标函数,它可用前面的方法定义;

x0为初始值;

A、b满足线性不等式约束 ,若没有不等式约束,则取A=[ ],b=[ ];

Aeq、beq满足等式约束 ,若没有,则取Aeq=[ ],beq=[ ];

lb、ub满足 ,若没有界,可设lb=[ ],ub=[ ];

nonlcon的作用是通过接受的向量x来计算非线性不等约束 和等式约束 分别在x处的估计C和Ceq,通过指定函数柄来使用,如:>>x = fmincon(@myfun,x0,A,b,Aeq,beq,lb,ub,@mycon),先建立非线性约束函数,并保存为mycon.m:function [C,Ceq] = mycon(x)

C = …

% 计算x处的非线性不等约束 的函数值。

Ceq = …

% 计算x处的非线性等式约束 的函数值。

lambda是Lagrange乘子,它体现哪一个约束有效。

output输出优化信息;

grad表示目标函数在x处的梯度;

hessian表示目标函数在x处的Hessiab值。

注意:

1. fmincon 函数提供了大型优化算法和中型优化算法。默认时,若在 fun 函数中提供了梯度(options 参数的 GeadObj 设置为 'on'),并且只有上下界存在或只有等式约束,fmincon 函数将选择大型算法。 当既有等式约束又有梯度约束时,使用中型算法。

2. fmincon 函数的中型算法一般是使用序列二次规划。在每一步迭代中求解二次规划子问题,并用 BFGS 法更新 Lagrangian 乘子和 Hessian 矩阵。

3. fmincon 函数的大型算法采用了subspace trust region 优化算法。这种算法是把目标函数在点x的邻域泰勒展开(x可以认为是人为提供的初始猜测),这个展开的邻域就是所谓的trust region,泰勒展开进行到二阶项为止。

4. fmincon 函数可能会给出局部最优解,这与初始值的选取有关。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值