Why are the return results of the fcn2optimexpr function different between MATLAB2019b and MATLAB2023b?
4 次查看(过去 30 天)
显示 更早的评论
My codes is for solving a optimization programming ,therefore, the uplevel objective function needs to the optimal value of the downlevel objective function. I adopt Problem-based optimization way to describe the problem,fcn2optimexpr function is used to construct the uplevel objective function . The key code part is as follows:
..................
x = optimvar('x',2,1,'Type','continuous','LowerBound',0,'UpperBound',1);
[f,exitflag] = fcn2optimexpr(@mubiaofunction,x)
prob = optimproblem('ObjectiveSense','min');
prob.Objective = f;
.................
function [f,exitflag]=mubiaofunction(x)
y = optimvar('y',2,1,'Type','continuous','LowerBound',0,'UpperBound',1);
end
It can be seen that I want to construct an optimization express f for function mubiaofunction(x), this function obtain solution results of the downlevel optimization problem about variables y, however when I run the code in MATLAB2023b, the output display is:
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/1617713/image.png)
It can be seen the f only contains uplevel variables x
when I run the same code in MATLAB2019b, the output display is:
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/1617718/image.png)
I can judge that the results of MATLAB2019b are correct, However, I need to call the ga function to solve this Problem-based optimization model. As far as I know, The solve function can only be called ga in matlab2023b version, so how should I solve this puzzle I raised?
0 个评论
采纳的回答
Alan Weiss
2024-2-15
I think that you need to turn off static analysis:
[f,exitflag] = fcn2optimexpr(@mubiaofunction,x,Analysis="off")
Alan Weiss
MATLAB mathematical toolbox documentation
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Problem-Based Optimization Setup 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!