gc_pwl_vb.vb


Gurobi优化版权2023年,LL狗万app足彩C的这个例子中制定和解决以下简单的模型的PWL约束:“最大化”和c [j] * x [j]的主题“总和(i, j) * x [j] < i = 0 = 0,,…,m - 1 '和y [j] < = 3 ' y [j] = pwl (x [j]), j = 0,…,n - 1 x [j], [j] > = 0, j = 0,…,n - 1的地方pwl (x) = 0,如果x = 0 = 1 + x | |,如果x ! = 0”“注意”1。pwl总和(x [j]) < = b是绑定x向量和支持稀疏的向量。‘这b = 3意味着最多两个x [j]可以非零,如果两个,然后“和x [j] < = 1”2。pwl (x)跳从1到0,从0到1,如果x从阴性0到0,然后积极0,所以我们需要三个点x = 0。x无限边界的两边,一块定义了两个点(1,2)和(0,1)的x扩展到无限。总体我们可以用5分(1、2),(0,1),“(0,0),(0,1)和(1、2)来定义y = pwl (x)进口系统进口Gurobi类gc_pwl_vb共享子主要()试着昏暗的n作为整数m = 5的整数= 5的c双()= New双(){0.5,0.8,0.5,0.1,1}昏暗的像双新双(,)(,)={{0,0,0,1,1},_{0,0,1,1,1},_{1 1 0 0 1},_{1 0 1 0 1},_{1,0,0,1,1}}昏暗xpt材料作为双()= New双(){1,0,0,0,1}昏暗ypts作为双()= New双(){2 1 0 1 2}“Env和模型昏暗Env GRBEnv = New GRBEnv()的模型作为GRBModel = New GRBModel (Env)模型。ModelName =“gc_pwl_cs”添加变量,设置边界和obj系数的x GRBVar() =模型。GRB.CONTINUOUS AddVars (n),因为我是Integer = 0到n - 1 x (i)。磅=伽马线暴。∞x(我)。Obj = c (i)下的y GRBVar() =模型。GRB.CONTINUOUS AddVars (n)“设定目标最大化模型。ModelSense =伽马线暴。MAXIMIZE ' Add linear constraints For i As Integer = 0 To m - 1 Dim le As GRBLinExpr = 0.0 For j As Integer = 0 To n - 1 le.AddTerm(A(i, j), x(j)) Next model.AddConstr(le, GRB.LESS_EQUAL, 0, "cx" & i) Next Dim le1 As GRBLinExpr = 0.0 For j As Integer = 0 To n - 1 le1.AddTerm(1.0, y(j)) Next model.AddConstr(le1, GRB.LESS_EQUAL, 3, "cy") ' Add piecewise constraints For j As Integer = 0 To n - 1 model.AddGenConstrPWL(x(j), y(j), xpts, ypts, "pwl" & j) Next ' Optimize model model.Optimize() For j As Integer = 0 To n - 1 Console.WriteLine("x[" & j & "] = " & x(j).X) Next Console.WriteLine("Obj: " & model.ObjVal) ' Dispose of model and environment model.Dispose() env.Dispose() Catch e As GRBException Console.WriteLine("Error code: " & e.ErrorCode & ". " & e.Message) End Try End Sub End Class