获得Exit-Flag:0,2使用fmincon Matlab函数的SQP算法

时间:2015-05-14 12:31:24

标签: algorithm matlab optimization mathematical-optimization solver

我有一个大规模的多目标优化问题需要fmincon求解Matlab来解决。我尝试了不同的求解器来获得更好更快的输出。这是挑战:

我得到Exit Flag: 1,0,4,5用于不同的Pareto点,因为它是一个多目标优化问题,Active-set algorithm。然后我尝试检查不同的算法,如interior-pointsqp,以生成Pareto点。我发现sqp只返回少量exit flags 1,有些2和少数0,但没有45 flag。此外,我应该注意,其02标记的解决方案是正确的答案。但是,当返回除exit flag之外的任何1时,解决Pareto点需要很长时间。

由于interior-point算法是针对大规模计划而设计的,因此它在生成Pareto解决方案时比sqp快得多。但是,它仅返回Exit flag 0的解决方案。不幸的是,0已标记的解决方案是错误的解决方案,尽管sqp标记的02解决方案是正确答案。 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 sec13 sec的每次优化均为fmincon

我们非常感谢您的帮助。

0 个答案:

没有答案