0

我正在使用 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');
4

1 回答 1

0

Matlab 有一个发布在这里的解决方案

hgsave('filename')
hgsave(h,'filename')

我对遗传算法工具箱没有太多经验,但快速浏览一下文档就可以看出这一点

要在从命令行调用 ga 时显示绘图,请将选项的 PlotFcns 字段设置为绘图函数的函数句柄。例如,要显示最佳适应度图,设置选项如下

选项= gaoptimset('PlotFcns',@gaplotbestf);

因此,如果您没有传递'PlotFcns'绘图函数的句柄,它看起来不会基于命令行交互生成绘图。添加它,看看它是否能解决你的问题,更多细节在这里

更新:

原来问题在于 ga 方法的绘图正在创建自己的图形,因此需要保存在 上gcf,有关更多详细信息,请参阅下面的讨论。

于 2012-08-26T14:23:44.607 回答