使用Excel Solver(Simplex LP方法)解决某些问题时,有没有办法获得所有最佳解决方案?
如果没有,Excel的最佳方法/插件是什么来解决它并将现有的VBA代码转换为使用这种新方式?
答案 0 :(得分:1)
实际上,我已经找到了一种方法来使用Excel求解器,虽然它在时间消耗方面不是最佳的,但这对我来说不是问题。
如果您可以通过某种方式为每个可能的解决方案分配唯一ID,在我的情况下也是如此,那么对于您找到的每个解决方案,您可以检查是否存在具有相同值且具有不同ID的解决方案:
找到第一个最佳解决方案并保存解决方案ID和结果。我将称之为origID,origRes
检查是否有一些ID为< origID和res = origRes
如果是,请将newId视为初始ID并继续执行第2步,直到找不到符合条件的解决方案
之后,使用条件ID>做同样的事情。 origID和res = origRes
在确定找到具有最佳解决方案原始数据的所有解决方案之后,我们可以找到不是最优解决方案的解决方案。我这样做是为了增加新解决方案需要的条件< =(origRes - 0.01),因为我知道所有解决方案都有2个小数位。
再次转到第2步
我知道这不是最好的方法,但我通常不需要超过100种解决方案,目前我可以在2分钟内得到它,这对我来说是可以接受的。
答案 1 :(得分:0)
虽然这看起来很简单,但实际上并不是一个简单的问题。甚至是所有可能的最佳解决方案的定义"不清楚。可能有无限多的。要求"所有基本的可行解决方案" (即角点)听起来更好。据我所知,没有解决方案提供此功能。我也不知道列举所有最佳基础的简单技术。
一种有趣的方法是使用MIP配方来列举所有最佳碱基:
Sangbum Lee,Chan Phalakornkule,Michael M. Domach,Ignacio E. Grossmann," 递归MILP模型,用于查找LP中的所有替代最优值 代谢网络的模型,"计算机与化学工程24(2000)711-716。 (link)