首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将最佳值设置为任意给定的指定值。

将最佳值设置为任意给定的指定值。
EN

Stack Overflow用户
提问于 2017-05-22 07:29:39
回答 1查看 312关注 0票数 4

我用开放的求解器来解决一个优化问题。问题如下:

假设我使用给定的总成本约束和输入可用性来优化输入。我们有投入成本,希望将成本降到最低。另一个约束是优化的输入落在任何一个设置值中,比如input11、input12、input13和input14。这种离散的输入范围因输入而异。

因此,我们有三个限制:

  1. 预算,
  2. 每项投入的投入能力和
  3. 投入应属于下降的四个选项中的任何一个。

我创建的代码的部分:

代码语言:javascript
复制
Sub TestOpensolver()

Dim TestSheet As Worksheet
Set TestSheet = Worksheets("Optimized_Results")

    OpenSolver.ResetModel Sheet:=TestSheet

    'Objective Definition
    OpenSolver.SetObjectiveFunctionCell TestSheet.Range("AC3"), Sheet:=TestSheet
    OpenSolver.SetObjectiveSense MinimiseObjective, Sheet:=TestSheet

    'Variables Definition
    OpenSolver.SetDecisionVariables TestSheet.Range("AK3:AK8"), Sheet:=TestSheet
    OpenSolver.SetDecisionVariables TestSheet.Range("AQ3:AR8"), Sheet:=TestSheet

    ' Constraints       

    OpenSolver.AddConstraint TestSheet.Range("AK3:AK8"), RelationLE, TestSheet.Range("W3:W8"), Sheet:=TestSheet
    OpenSolver.AddConstraint TestSheet.Range("AK3:AK8"), RelationGE, TestSheet.Range("X3:X8"), Sheet:=TestSheet


    OpenSolver.AddConstraint TestSheet.Range("AS3:AS8"), RelationLE, TestSheet.Range("AT3:AT8"), Sheet:=TestSheet


    OpenSolver.RunOpenSolver , False



End Sub

有人能帮我解决这个问题吗?

谢谢!

EN

回答 1

Stack Overflow用户

发布于 2017-05-22 08:03:23

“‘or”条件通常意味着我们需要使用二进制变量,例如:

代码语言:javascript
复制
input1 = input11*y11 + input12*y12 + input13*y13 + input14*y14
y11+y12+y13+y14 <= 1
y11,y12,y13,y14 binary variables
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44107070

复制
相关文章

相似问题

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