使用Excel求解器生成多个最优解

时间:2015-12-15 10:09:39

标签: excel excel-vba optimization solver vba

使用Excel Solver(Simplex LP方法)解决某些问题时,有没有办法获得所有最佳解决方案?

如果没有,Excel的最佳方法/插件是什么来解决它并将现有的VBA代码转换为使用这种新方式?

2 个答案:

答案 0 :(得分:1)

实际上,我已经找到了一种方法来使用Excel求解器,虽然它在时间消耗方面不是最佳的,但这对我来说不是问题。

如果您可以通过某种方式为每个可能的解决方案分配唯一ID,在我的情况下也是如此,那么对于您找到的每个解决方案,您可以检查是否存在具有相同值且具有不同ID的解决方案:

  1. 找到第一个最佳解决方案并保存解决方案ID和结果。我将称之为origID,origRes

  2. 检查是否有一些ID为< origID和res = origRes

  3. 如果是,请将newId视为初始ID并继续执行第2步,直到找不到符合条件的解决方案

  4. 之后,使用条件ID>做同样的事情。 origID和res = origRes

  5. 在确定找到具有最佳解决方案原始数据的所有解决方案之后,我们可以找到不是最优解决方案的解决方案。我这样做是为了增加新解决方案需要的条件< =(origRes - 0.01),因为我知道所有解决方案都有2个小数位。

  6. 再次转到第2步

  7. 我知道这不是最好的方法,但我通常不需要超过100种解决方案,目前我可以在2分钟内得到它,这对我来说是可以接受的。

答案 1 :(得分:0)

虽然这看起来很简单,但实际上并不是一个简单的问题。甚至是所有可能的最佳解决方案的定义"不清楚。可能有无限多的。要求"所有基本的可行解决方案" (即角点)听起来更好。据我所知,没有解决方案提供此功能。我也不知道列举所有最佳基础的简单技术。

一种有趣的方法是使用MIP配方来列举所有最佳碱基:

  

Sangbum Lee,Chan Phalakornkule,Michael M. Domach,Ignacio E. Grossmann," 递归MILP模型,用于查找LP中的所有替代最优值   代谢网络的模型,"计算机与化学工程24(2000)711-716。 (link)