我开发了一个 excel 宏,它在供应商站点运行求解器,在客户端运行另一个求解器。约束条件是根据用户输入动态创建的。但是,对于多个解决方案,我得到了不同的答案。
我能得到的是求解器约束方程根据两张纸中不同的单元格名称排序?如果我可以停止约束的排序,这可能会得到解决。怎么做?
编辑 我的约束顺序相同,尽管这是解决问题的一种愚蠢方式,但即使在此之后,不同的 Excel 工作簿中的解决方案也会有所不同。
如果您通过 为每个约束单元格命名Formulas > Define Name
,则可以通过在“添加约束”对话框的“单元格引用”字段中键入该名称来为约束使用该名称:
然后,约束将在 Solver 窗口中按名称而不是按地址显示和排序:
如果您从 VBA 代码配置 Solver,您可以做同样的事情,例如:
SolverAdd CellRef:="cell1", Relation:=1, FormulaText:="60"
不过,我不确定这是否是解决您问题的好方法。如果您尝试求解的方程组有多个不同的解,那么运行 Solver 的结果可能不仅取决于约束设置和起始值,还取决于 Solver 首选项、Excel 和 Solver 的版本,以及很可能的其他属性您无法控制的两个系统。您可以尝试的一些事情包括: