matlab程序fmincon输出参数解释

matlab程序fmincon输出参数解释,第1张

具体关于这些参数的定义应该在程序中都有定义的,你的程序我没看见,因此不能给出你准确的答案!以下理解仅供参考:

iterations:

4

迭代次数为4次

funcCount:

12

调用函数为12个或者别的意思吧

lssteplength:

1

是否设定步长,若为1则表示设定

stepsize:

37569e-008

步长为这个数字

algorithm:

'medium-scale:

SQP,

Quasi-Newton,

line-search'

所用到的算法

firstorderopt:

35086e-009

计算中的第一个迭代值

constrviolation:

0

message:

[1x788

char]

程序中的字符数总量?我也不清楚

希望有所帮助!

使用匿名函数句柄就可以了

fmincon 需要的函数fun只有一个输入参数 fun(x)

而你的函数需要多一个能改变的变量 那么形式变成 myfun(p,x)

p就是你要传递的参数,x还是原来的输入

当然首先,你得写个m文件,假设为myfunm,其内容大致如下

function [out]=myfun,(p,x)

end

就是根据参数p和输入x,求的输出,当然名字可以自己取,然后就是主程序了

for p=p0:pn %参数p的取值

[x,fval]=fmincon(@(x) myfun(p,x),Bt0,[],[],[],[],lb,ub,@constr);

end

其中关键就是@(x) myfun(p,x)

这会返回一个匿名的函数句柄,会使用当时的p值代入myfun

得到一个只有一个输入x的函数,这样就能把额外的参数传递给需要优化的函数

如果你的函数有等多的参数例如

myfun(a,b,c,x)

a=

b=

c=

同样用@(x) myfun(a,b,c,x)把a,b,c参数的值传给要优化的函数

在以上的基础上,加几句,存储每次的参数p和对应的优化结果

然后画图就可以了

那就这样组织文件mainm:

=====================

function man

x = fmincon

end

function f = fx()

end

=====================

这样把fx作为一个内部函数,就可以了,但代价是主脚本也要写成函数了。

1、是不是局部最优可以通过退出代码exitflag辅助判断。至于说全局最优,没有哪种优化方法能够保证,即使用全局优化工具箱中的遗传算法之类的,也只是增加得到全局最优解的机会。

2、那个警告没影响,可以忽略,不想看到的话,也可以关闭或通过指定算法来避免。

3、受字数限制,代码只能贴,但这样我没法测试,只能给你提这些建议。必要时,可以考虑通过网盘或博客上传代码。或者私信也可以。

程序的问题很多:

1、如楼上所说,n并不是一个函数句柄或函数名。这是个基本错误。

2、不要乱定义符号变量。尤其在nonlcon中,定义符号变量导致函数输入参数全被覆盖了。

3、需要搞清楚:未知数有两个——m和n,尽管你想优化n,但不能抛开m不管。

4、int是用于符号积分的,优化要的是数值积分。

楼上指出了一个问题,但并没有给出解决的方法。

以下是我编写的代码(取两组不同的初值,有两个局部最优点):

function main

mn=fmincon(@(mn)(mn(2)),[1 2],[],[],[],[],[],[],@nonlcon)

mn=fmincon(@(mn)(mn(2)),[-1 -2],[],[],[],[],[],[],@nonlcon)

function [c,ceq]=nonlcon(mn)

c=quad(@(x)x^7,mn(1),mn(2))-2;

ceq=quad(@(x)x^3,mn(1),mn(2))-1;

得到优化结果为:

mn =

    00443    14142

mn =

   -00434   -14142

mn的值中,前一个为m,后一个为n。综合起来的结果是n=-14142。

上述结果未考虑其它约束,例如,如果要求m<=n或者n>=0之类的,结果就只能是n=14142。

以上就是关于matlab程序fmincon输出参数解释全部的内容,包括:matlab程序fmincon输出参数解释、我利用MATLAB中的fmincon函数求非线性规划求电机转矩的最大值、matlab 中fmincon怎样调用当前文件中的函数fun等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10078181.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存