为什么bayesopt比例严重?

5视图(30天)
皮尔斯Lillystone
皮尔斯Lillystone 2021年2月1日
你好,
我一直在使用bayesopt找到最低一个相当复杂的目标函数和我遇到性能问题我无法解决。的基本大纲代码如下:
% get_optvars创建optimizableVariables从输入列表
optimizable_variables = get_optvars (variable_list);
% Manipulate_Matrix处理类,操纵输入数据——一个数值矩阵
matrix_class = Manipulate_Matrix(数据);
obj_fn = @ (v) optimize_output (v, matrix_class);
%优化。
结果= bayesopt (obj_fn、var、
“MaxObjectiveEvaluations”,200,“UseParallel”,真的,
“XConstraintFcn”@DeterministicConstraints,
“ConditionalVariableFcn”,@ConditionalConstraints);
%目标函数
函数目标= optimize_output (v, matrix_class)
% perform_method操纵数据和保存一个类属性的客观价值。
matrix_class.perform_method (v);
目标= matrix_class.property_A;
结束
我的问题是,如果我扩大输入数据优化过程(“总运行时间”优化器输出)增加一个数量级,而没有增加相应的总目标函数的时间。
例如,如果输入数据是1000 x 20优化大约需要160秒(约有20个变量问题,分类和数字),平均目标函数评价时间约为0.02秒。然而,如果我输入数据规模10000 x 20,并改变代码中没有别的,平均0.2秒时间尺度线性目标函数评价,但是现在总优化时间2000秒。(多严峻总客观评价时间4秒两个测试vs 40秒)
起初,我认为这是由于并行的数据被复制到每个工人效率低下所以我跟着所有的可能性 //www.tatmou.com/help/stats/parallel_bayesian_optimization.html 但没有给任何明显的改善迹象。我能找到的最好的(边际)的改进是使“optimizer_output”一个嵌套函数,将matrix_class嵌入函数定义,然后直接复制到工人。然而,可伸缩性问题仍然存在。
我亏本,为什么bayesopt不成比例的时间更大的输入。据我所知bayesopt应该不知道传递的更大的数据,只有目标函数评价需要更长的时间和内部探地雷达模型仍然安装在同一组变量,那么为什么优化器扩展如此糟糕呢?
感谢你能提供的任何帮助!
皮尔斯

答案(0)

下载188bet金宝搏


释放

R2020a

社区寻宝

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

开始狩猎!