Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用Excel求解器生成多个最优解_Excel_Optimization_Solver_Vba - Fatal编程技术网

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

用Excel求解器生成多个最优解,excel,optimization,solver,vba,Excel,Optimization,Solver,Vba,当您使用Excel Solver(单纯形LP方法)解决某个问题时,是否有办法获得所有最优解 如果不是,解决此问题并转换现有VBA代码以使用此新方法的Excel/外接程序的最佳方法是什么 虽然这看起来很容易,但实际上并不是一个容易的问题。甚至“所有可能的最佳解决方案”的定义也不清楚。他们中可能有无限多人。要求“所有基本可行的解决方案”(即拐点)听起来更好。据我所知,没有解决方案提供这一点。我也不知道有什么简单的方法可以列举出所有的最优基 一种有趣的方法是使用MIP公式来列举所有最佳基数: Sang

当您使用Excel Solver(单纯形LP方法)解决某个问题时,是否有办法获得所有最优解


如果不是,解决此问题并转换现有VBA代码以使用此新方法的Excel/外接程序的最佳方法是什么

虽然这看起来很容易,但实际上并不是一个容易的问题。甚至“所有可能的最佳解决方案”的定义也不清楚。他们中可能有无限多人。要求“所有基本可行的解决方案”(即拐点)听起来更好。据我所知,没有解决方案提供这一点。我也不知道有什么简单的方法可以列举出所有的最优基

一种有趣的方法是使用MIP公式来列举所有最佳基数:

Sangbum Lee,Chan Phalakorkule,Michael M.Domach,Ignacio E.Grossmann,“寻找LP中所有替代最优解的递归MILP模型 代谢网络模型”,计算机与化学工程24(2000)711-716


事实上,我已经找到了一种使用Excel solver实现这一点的方法,虽然它在时间消耗方面不是最优的,但这对我来说不是问题

如果您可以通过某种方式为每个可能的解决方案分配唯一的id,这在我的案例中是正确的,那么对于您找到的每个解决方案,您可以通过以下方式检查是否存在具有相同值但id不同的解决方案:

  • 找到第一个最优解决方案并保存解决方案id和结果。我称之为origID,origRes

  • 检查是否有id
  • >P>如果是,则将NEWID视为初始ID,并继续执行步骤2,直到找到满足标准

    的解为止。
  • 之后,对条件id>origID和res=origRes执行相同的操作


  • 在你们确定你们找到了所有最优解的初始解之后,我们就可以去寻找非最优解的初始解了。我这样做是为了增加一个条件,即新的解决方案需要尽我所能。您可以让Excel显示敏感度报告并查看降低的成本,或者您可以尝试申请IBM学术计划,下载并安装CPLEX,它有一个解决方案池函数,用于获取所有最佳基本可行解决方案。@据我所知,Cplex解决方案池仅适用于MIPs。@Erwin Kalvelagen,对,我假设它们对LP有类似的功能,但Cplex似乎“不尝试寻找替代的最佳解决方案”。我想这取决于用户的理论背景,比如敏感性分析和LP对偶性。