将最佳值设置为任何给定的指定值

时间:2017-05-22 07:29:40

标签: excel excel-vba optimization solver vba

我使用开放式解算器来解决优化问题。问题如下:

假设我在给定的总成本约束和输入可用性的情况下优化输入。我们有投入成本,并希望最大限度地降低成本。另一个约束是优化输入落在任何设定值中,例如input11,input12,input13和input14。该离散输入范围随输入而变化。

所以我们有3个约束:

  1. 预算,
  2. 每个输入的输入容量和
  3. 输入应属于下降的四个选项中的任何一个。
  4. 我创建的代码部分:

    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
    

    有人可以帮我解决问题吗?

    谢谢!

1 个答案:

答案 0 :(得分:0)

'或'条件通常意味着我们需要使用二进制变量,例如:

input1 = input11*y11 + input12*y12 + input13*y13 + input14*y14
y11+y12+y13+y14 <= 1
y11,y12,y13,y14 binary variables
相关问题