我正在使用VBA代码来运行求解器。以下是我的代码。我希望单元格C87:K93是整数,但是,约束不会被添加到Solver中,所以我得到的值都是小数。我可以知道如何更改代码以便考虑整数约束吗?
Sub Solve()
SolverReset
SolverAdd CellRef:="$C$87:$K$93", Relation:=4, FormulaText:="integer"
SolverAdd CellRef:="$C$87:$K$93", Relation:=1, FormulaText:="$C$48:$K$54"
SolverAdd CellRef:="$L$87:$L$93", Relation:=1, FormulaText:="$M$87:$M$93"
SolverAdd CellRef:="$C$87:$K$93", Relation:=3, FormulaText:="0"
SolverOk SetCell:="$N$95", MaxMinVal:=1, ValueOf:="0", ByChange:="$C$87:$K$93"
SolverSolve UserFinish:=True
End Sub
下面是运行代码后Solver图片的链接,整数约束不会出现
非常感谢你的帮助
答案 0 :(得分:1)
我最近遇到了同样的问题。即使没有FormulaText
在整数约束的末尾。
这应该有效:
Sub Solve()
SolverReset
SolverOk SetCell:="$N$95", MaxMinVal:=1, ValueOf:="0", ByChange:="$C$87:$K$93"
SolverAdd CellRef:="$C$87:$K$93", Relation:=4
SolverAdd CellRef:="$C$87:$K$93", Relation:=1, FormulaText:="$C$48:$K$54"
SolverAdd CellRef:="$L$87:$L$93", Relation:=1, FormulaText:="$M$87:$M$93"
SolverAdd CellRef:="$C$87:$K$93", Relation:=3, FormulaText:="0"
SolverSolve UserFinish:=True
End Sub
将整数约束(SolverAdd
)应用于不属于决策变量(ByChange
)的单元格时,解算器会提示:
“整数约束单元格引用必须仅包含可变单元格。”
在您的示例中并非如此,但设置目标函数仍然起作用。我假设如果在添加SolverOk
之前添加整数约束,解算器还不知道决策变量(ByChange
),因此不包括整数约束。