如何使用任何类型的软件为优化问题获得多种解决方案

计算科学 优化 matlab 线性求解器
2021-12-12 21:27:53

我有一个优化问题,其中最佳目标值出现在可行空间中的多个点。如果我在 LINGO 软件中运行我的问题,那么它会给我在可行空间中某个点的最优目标值,但是如何获得出现最优解的所有点。

3个回答

通常这很困难,但是,通常您可以通过在不同位置初始化并收集解决方案来获得一个不错的解决方案。这可能非常耗时(计算上),并且不是最理想的(搭载优化器),但很容易尝试。

要选择不同的位置,您可以通过 (1) 预定义网格状结构或 (2) 从分布中随机抽样来进行。先验知识,例如目标函数的平滑度或最优值所在的预期区域,将帮助您确定策略。

您对该问题的评论表明您处于二进制整数线性规划问题的特殊情况。对于这些问题,标准方法是找到最优解,添加约束以消除该特定解,然后重新优化以找到另一个最优解。

例如,如果您的第一个最佳解决方案具有值为的二元变量,那么您可以添加约束x1=1x2=0x3=1

(1x1)+x2+(1x3)1

消除解 , ,x1=1x2=0x3=1

取决于您要处理的问题的类型。对于非凸,请参阅有关多启动的其他答案。对于凸问题,迭代地添加先前的解决方案作为约束将返回替代最优。最优解的任何凸组合也是最优的,因此在 LP 之类的东西中,可能存在可以取一系列最优值的变量。对于整数变量的问题,同样,迭代地添加解决方案作为约束(这些被称为整数切割)

关于非凸问题,有一些方法可以充分探索解空间(空间分支定界)。这些可能能够在它们存在的罕见(至少对于只有连续变量的问题)实例中找到替代最优值。