我正在使用matlab GA和绘图选项'gaplotrange'。但是我通过终端在Linux服务器上运行matlab。因此,当我尝试保存gaplot时,我要么继续得到一个空图像(如果我使用saveas)或错误(如果我使用print,我会收到一条消息,说它在当前平台中不受支持)。
还有其他方法可以在nodisplay模式下保存剧情吗?
这是我的一段代码
opts = gaoptimset('PopulationSize', 256, 'EliteCount',1,'CrossoverFraction',0.8, ...
'Generation', 3, 'PenaltyFactor',80,'SelectionFcn',{@selectiontournament,4}, ...
'CrossoverFcn', @crossoverscattered ,'Vectorized','off', 'UseParallel','always',...
'OutputFcns',@pop_output,'MutationFcn',{@mutationuniform,0.002},'StallGenLimit',3,...
'TolFun', 1e-4,'PlotFcns',@gaplotbestf);
f = figure('vis','off');
[x,fval, exitflag, output, population, scores] = ga(@plate_fitness,16,[],[],[],[],vlb,vub,[],opts);
hgsave(f,'matlabga_range','png');
答案 0 :(得分:0)
Matlab有一个解决方案posted here
hgsave('filename')
hgsave(h,'filename')
我对遗传算法工具箱没有多少经验,但快速浏览一下文档就可以看出这个
要在从命令行调用ga时显示绘图,请将选项的PlotFcns字段设置为绘图函数的函数句柄。例如,要显示最佳适合度图,请按以下方式设置选项
options = gaoptimset('PlotFcns',@ Gablotbestf);
因此,如果您没有使用带有绘图函数句柄的'PlotFcns'
,则看起来它不会根据命令行交互生成绘图。添加它并查看它是否可以解决您的问题,更多详细信息here
<强>更新强>
原来问题是ga方法的情节正在创建自己的数字,因此保存需要在gcf
上,请参阅下面的讨论以获取更多详细信息。