我使用开放式解算器来解决优化问题。问题如下:
假设我在给定的总成本约束和输入可用性的情况下优化输入。我们有投入成本,并希望最大限度地降低成本。另一个约束是优化输入落在任何设定值中,例如input11,input12,input13和input14。该离散输入范围随输入而变化。
所以我们有3个约束:
我创建的代码部分:
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
有人可以帮我解决问题吗?
谢谢!
答案 0 :(得分:0)
'或'条件通常意味着我们需要使用二进制变量,例如:
input1 = input11*y11 + input12*y12 + input13*y13 + input14*y14
y11+y12+y13+y14 <= 1
y11,y12,y13,y14 binary variables