gamultiobj输出函数错误

9的观点(30天)
你好,
我有一个多目标与gamultiobj opimization问题,想要解决它。我想拯救我的目标函数的优化值在每次迭代数组。我发现输出函数的示例代码: http://de.mathworks.com/help/optim/ug/output-functions.html 。但是当我示例代码适用于我的问题,是这样的:
函数(历史、searchdir) = runfmincon
FitnessFunction = @needfunction;
numberOfVariables = 8;
磅= 0 (1,8);
乌兰巴托= [];
%与OUTFUN建立共享变量
历史。x = [];
历史。fval = [];
searchdir = [];
选择= gaoptimset (“PlotFcns”@gaplotpareto,“UseParallel”,真的,“OutputFcns”@outfun,“PopulationSize”5);
xsol = gamultiobj (FitnessFunction numberOfVariables,[],[],[],[],磅,[],选项);
函数停止= outfun (x, optimValues状态)
停止= false;
开关状态
情况下“init”
持有
情况下“通路”
%连接当前点和目标函数
%与历史价值。必须一个行向量x。
历史。fval = [history.fval;optimValues.fval];
历史。x = [history.x;x];
%连接当前的搜索方向
% searchdir。
searchdir = [searchdir;
optimValues.searchdirection ');
情节(x (1), (2),“o”);
%标签点与迭代数量和添加标题。
%添加酒精含量x(1)分离标签从策划“o”
文本(x(1) +酒精含量,(2),
num2str (optimValues.iteration));
标题(‘序列’fmincon点计算的);
情况下“完成”
持有
否则
结束
结束
结束
我得到以下错误:
错误使用runfmincon / outfun
许多输出参数。
错误在gaoutput(39)行
(状态、optnew改变)=函数宏指令(函数{我}、options.OutputPlotFcnOptions状态,国旗,args{我}{:});
错误在gamultiobjsolve(13号线)
(状态、期权)= gaoutput (FitnessFcn、期权、州现状后);
错误在gamultiobj(第274行)
[x, fval exitFlag、输出人口,分数)= gamultiobjsolve(据nvar FitnessFcn,
错误在runfmincon(16行)
xsol = gamultiobj (FitnessFunction numberOfVariables,[],[],[],[],磅,[],选项);
这将是伟大的,如果有人可以帮助我

接受的答案

艾伦·韦斯
艾伦·韦斯 2016年9月1日
输出函数的遗传算法有不同的语法比优化工具箱的功能。 这里描述的语法 。你纠正你的语法很可能工作后(我没有详细检查,但一切看起来合理)。
艾伦·韦斯
MATLAB数学工具箱文档
9日评论

登录置评。

更多的答案(2)

沃尔特·罗伯森
沃尔特·罗伯森 2016年9月1日
1评论
马克西米利安恩斯特
马克西米利安恩斯特 2016年9月1日
编辑:马克西米利安恩斯特 2016年9月1日
嗨,我读你的答案但我仍然不知道,我做错了什么。我按照你的建议使用嵌套的输出函数。实际上我用几乎完全相同的代码在mathworks例子链接我张贴在我的问题。没问题,也许这与不同的解算器吗?(我使用gamultiobj而不是fmincon的例子)

登录置评。


模式Seyednezhad
模式Seyednezhad 2020年5月31日
编辑:模式Seyednezhad 2020年5月31日
你好,
我也有同样的问题。syntaxt页面并不是对我有用。我不能找到我的错误。
[历史,searchdir] = runmultiobjfunc函数
%与OUTFUN建立共享变量
历史。x = [];
历史。fval = [];
searchdir = [];
%调用优化
据nvar = 2;
磅= [1,3];
乌兰巴托= [19.2,6.27];
选择= optimoptions (@gamultiobj OutputFcn, @outfun,…
“显示”、“iter’,‘MaxGenerations’, 200年,“PopulationSize”, 50);
据nvar xsol = gamultiobj (@objfun,[],[],[],[],磅,乌兰巴托,选项);
%设置输出函数
函数停止= outfun (x, optimValues状态)
停止= false;
开关状态
例“init”
抓住
例“通路”
%连接当前点和目标函数
%与历史价值。必须一个行向量x。
历史。fval = [history.fval;optimValues.fval];
历史。x = [history.x;x];
%连接与searchdir当前的搜索方向。
searchdir = [searchdir;…
optimValues.searchdirection ');
情节(x (1), (2),“o”);
%标签点与迭代数量和添加标题。
%添加酒精含量x(1)分离标签从策划“o”
文本(x(1) +酒精含量,(2),…
num2str (optimValues.iteration));
标题(“序列gamultiobj点计算的”);
情况下完成的
推迟
否则
结束
结束
结束
错误的是:
错误使用runmultiobjfunc / outfun
太多的输出参数。
错误gaoutput(39)行
(状态、optnew改变)=函数宏指令(函数{我}、options.OutputPlotFcnOptions状态,国旗,args{我}{:});
错误在gamultiobjsolve(13号线)
(状态、期权)= gaoutput (FitnessFcn、期权、州现状后);
错误gamultiobj(第303行)
[x, fval exitFlag、输出人口,分数)= gamultiobjsolve (FitnessFcn,据nvar,…
错误runmultiobjfunc(15行)
据nvar xsol = gamultiobj (@objfun,[],[],[],[],磅,乌兰巴托,选项);

类别

找到更多的在和迭代解算器输出显示帮助中心文件交换

s manbetx 845

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!