fmincon GlobalSearch MultiStart

https://ww2.mathworks.cn/help/optim/ug/fmincon.html
参考文档在这里插入图片描述在这里插入图片描述在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

举例:

// 
OPTIONS = optimoptions('fmincon','Algorithm','sqp','FunctionTolerance ',1e-15,'StepTolerance ',1e-15);
[eta,fval,exitflag] = fmincon(@goalfun,eta0,A,b,[],[],[],[],[],OPTIONS);

exitflag 参考下面:
在这里插入图片描述
在这里插入图片描述
GlobalSearch
创建一个具有多个局部极小值的优化问题,并尝试使用GlobalSearch查找全局极小值。
在这里插入图片描述

举例

rng default % active-set
gs = GlobalSearch;
opts = optimoptions(@fmincon,'Algorithm','active-set');
problem = createOptimProblem('fmincon','x0',eta0,...
    'objective',@goalfun,'Aineq',A,'bineq',b, 'options',opts);
[eta,fval,exitflag] = run(gs,problem);

MultiStart
求多个局部极小值
举例

rng default % For reproducibility
opts = optimoptions(@fmincon,'Algorithm','active-set');
problem = createOptimProblem('fmincon','objective',...
    @goalfun,'x0',eta0,'Aineq',A,'bineq',b,'options',opts);
ms = MultiStart;
[eta,fval] = run(ms,problem,30);
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
根据您提供的错误信息,您需要将 `fmincon` 优化算法替换为 `MultiStart` 或 `GlobalSearch` 算法。这两种算法属于全局优化算法,可以用于求解具有多个局部最优解的问题。 以下是修正后的代码示例,使用 `MultiStart` 算法求解优化问题: ```matlab function [solution, objectiveValue, reasonSolverStopped] = solveOptimizationProblem(theta1, theta2, theta3, theta4, theta5, theta6, theta7, theta8, dy, pointD, outlet_angle, parameters, P_in, T_in, mass_judge, H_out_specified,xm) % 创建优化问题对象 problem = optimproblem; % 添加目标函数 problem.Objective = fcn2optimexpr(@objectiveFcn, theta1, theta2, theta3, theta4, theta5, theta6, theta7, theta8, dy, pointD, outlet_angle, parameters, P_in, T_in); % 添加约束条件 constraintExpr1 = fcn2optimexpr(@constraintFcn1, theta1, theta2, theta3, theta4, theta5, theta6, theta7, theta8, dy, pointD, outlet_angle, parameters, P_in, T_in); problem.Constraints.massConstraint = constraintExpr1 == mass_judge; constraintExpr2 = fcn2optimexpr(@constraintFcn2, theta1, theta2, theta3, theta4, theta5, theta6, theta7, theta8, dy, pointD, outlet_angle, parameters, P_in, T_in); problem.Constraints.HConstraint = constraintExpr2 == H_out_specified; % 创建优化选项对象 options = optimoptions('multistart', 'Display', 'iter'); x0 = xm; % 替换为您的初始点 if isempty(x0) error('初始点结构体为空,请设置合适的初始值。'); end % 创建 MultiStart 对象并指定求解算法 ms = MultiStart('Display', 'iter'); % 求解优化问题 [solution, objectiveValue, reasonSolverStopped] = run(ms, problem, x0, options); end ``` 请注意,上述代码中使用了 `MultiStart` 对象来执行多次启动的优化求解。您可以根据需要调整 `MultiStart` 对象的属性,例如设定启动次数、显示选项等。 希望这个修正能够解决您遇到的问题!如果您还有其他疑问,请随时提问。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值