求解器Excel VBA整数约束被忽略

问题描述

在这里浏览了尽可能多的示例,但由于某种原因,在我的代码中,整数部分被忽略了。在第一个“ SolverAdd”下,您还将看到我尝试使用的其他两个,但是每次忽略整数要求时。您知道我在做什么错吗?谢谢!

SolverReset
SolverOk SetCell:="$T$4",MaxMinVal:=1,ValueOf:=0,ByChange:="$R$8:$R$13" _,Engine:=1,EngineDesc:="GRG Nonlinear"
'Solver ignores integer requirement for the reference range
SolverAdd CellRef:="$R$8:$R$13",Relation:=4,FormulaText:="integer"
'Have tried this: SolverAdd CellRef:="$R$8:$R$13",Relation:=4
'Have also tried this: SolverAdd CellRef:="$R$8:$R$13",FormulaText:=0
SolverSolve True

也尝试过这种方法

SolverReset
SolverOk SetCell:="$T$4",EngineDesc:="GRG Nonlinear"
'Solver ignores integer requirement for the reference range
SolverAdd CellRef:=Range("$R$8:$R$13"),_
Relation:=4
SolverSolve True

解决方法

我认为该约束内置于求解器代码的“ MaxMinVal”部分。

我手动添加了两个约束,T4的范围最大为1.000000000001,因为只有“ 1”会导致问题。

SolverReset
SolverOk SetCell:=Range("$T$4"),MaxMinVal:=1,ByChange:=Range("$R$8:$R$13") _,Engine:=1,EngineDesc:="GRG Nonlinear"
SolverAdd CellRef:=Range("$R$8:$R$13"),_
Relation:=4
SolverAdd CellRef:=Range("$T$4"),_
Relation:=1,FormulaText:="1.00000000001"

FormulaText:= 0 SolverSolve True