作业帮 > 综合 > 作业

MATLAB做非线性约束优化时,怎么老显示这个啊?

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/10/03 10:42:01
MATLAB做非线性约束优化时,怎么老显示这个啊?
Warning:Large-scale (trust region) method does not currently solve this type of problem,
switching to medium-scale (line search).对结果有什么影响?由于初学,
你用的是fmincon函数吧?
FMINCON函数虽然是可以解决非线性约束的问题的,但是它要求目标函数和约束函数都必须是连续的,梯度也是连续的,而且该函数是根据你给的初始值来进行梯度步长收敛的,只能收索到局部最优解.
如果你给的初始值是个不可行解就很难收敛到最优解,最终出现的情况就是函数根本就不管你的上下限而给出的一个值.
解决办法:利用while,利用随机搜索的方法,找到一个可行的初始解.当然这样就有一个问题.即使搜索到解,也是局限于随机搜索到的初值的解.因此当你搜索不到好的解时,建议放弃使用这个函数.
利用FGOALATTAIN函数
这个函数相对较好,但也存在和FMINCON类似的问题
采用遗传算法
这里就有必要提一下,利用他人写的工具箱始终不灵活.MATLAB自带的和设菲尔德大学的遗传算法工具箱,有时并不能满足自己的需要,相关问题我已发过帖子.这里就不说了.
试验证明,利用设菲尔德大学的工具箱再自行改进下,可以很好的处理问题.
希望可以解决你的问题.