我有一个大规模的多目标优化问题需要fmincon
求解Matlab
来解决。我尝试了不同的求解器来获得更好更快的输出。这是挑战:
我得到Exit Flag: 1,0,4,5
用于不同的Pareto点,因为它是一个多目标优化问题,Active-set algorithm
。然后我尝试检查不同的算法,如interior-point
和sqp
,以生成Pareto点。我发现sqp
只返回少量exit flags 1
,有些2
和少数0
,但没有4
或5
flag
。此外,我应该注意,其0
和2
标记的解决方案是正确的答案。但是,当返回除exit flag
之外的任何1
时,解决Pareto点需要很长时间。
由于interior-point
算法是针对大规模计划而设计的,因此它在生成Pareto解决方案时比sqp
快得多。但是,它仅返回Exit flag 0
的解决方案。不幸的是,0
已标记的解决方案是错误的解决方案,尽管sqp
标记的0
和2
解决方案是正确答案。
0)无论如何要配置fmincon
来解决interior-point
的问题并获得正确的解决方案吗?在文献中,我看到一些类似于我的问题已经用interior-point
算法解决了。
1)我可以使用任何设置(TolX,TolCon,...)
来获得更多exit flag 1
吗?
2)是否存在任何加速优化过程的设置,其准确性较低?
3)对于2个Pareto点,我得到退出标志-2,这意味着问题对他们来说是不可行的。从问题的性质来看是可以预期的。但fmincon
确定退出标志-2需要很长时间。有没有我可以设置满足1,2的选项,还能让这个不可行的点更快?
我无法做到这一点,因为我只能设置一次选项,所有Pareto点都应该使用相同的选项。
描述问题我应该说:
对于相等和不等式约束(约(.^2,Sin...)
)以及300
优化变量,我有几个线性和非线性400
。该多目标优化问题的所有目标函数都是线性的。
这些是我目前使用的选项。请帮我修改一下
options = optimset('Algorithm', 'sqp', 'Display', 'off');
options = optimset('Algorithm', 'sqp', 'Display', 'off', 'TolX',1e-6,...
'TolFun',1e-6,'MaxIter',1e2, 'MaxFunEvals', 1e4);
第一个选项需要大约500 sec
来生成15
帕累托点。这意味着fmincon
每次优化33 sec
。{
第二个选项需要200 sec
,13 sec
的每次优化均为fmincon
。
我们非常感谢您的帮助。