Matlab GA在nodisplay模式下的情节

时间:2012-08-26 04:42:30

标签: linux matlab terminal plot save

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

1 个答案:

答案 0 :(得分:0)

Matlab有一个解决方案posted here

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

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

  

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

     

options = gaoptimset('PlotFcns',@ Gablotbestf);

因此,如果您没有使用带有绘图函数句柄的'PlotFcns',则看起来它不会根据命令行交互生成绘图。添加它并查看它是否可以解决您的问题,更多详细信息here

<强>更新

原来问题是ga方法的情节正在创建自己的数字,因此保存需要在gcf上,请参阅下面的讨论以获取更多详细信息。