首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >VBA中的求解器不添加整数约束。

VBA中的求解器不添加整数约束。
EN

Stack Overflow用户
提问于 2014-04-09 14:56:54
回答 1查看 3.3K关注 0票数 2

我在使用VBA代码运行解决程序。下面是我的密码。我希望单元格C87:K93是整数,但是,约束不会被添加到求解器中,所以我得到的值都是小数。我可以知道如何更改代码以便考虑整数约束吗?

代码语言:javascript
复制
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图片的链接,整数约束只是不出现

非常感谢你的帮助

EN

回答 1

Stack Overflow用户

发布于 2017-09-21 14:32:54

我最近也遇到了同样的问题。即使没有整数约束末尾的FormulaText

这应该是可行的:

代码语言:javascript
复制
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)的单元格时,求解器提示:

"Integer约束单元格引用必须只包括可变单元格。“

在您的例子中不是这样,但是目标函数的设置仍然起着作用。假设在添加SolverOk之前添加整数约束,求解器还不知道决策变量(ByChange),因此不包含整数约束。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22966436

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档