gc_pwl_vb.vb


gc_pwl_vb.vb


' ' maximize ' sum狗万app足彩 c[j] * x[j] ' subject to ' sum A[i,j] * x[j] <= 0,对于i = 0,…, m - 1 '和y [j] < = 3 ' y [j] = pwl (x [j]), j = 0,…, n-1 ' x[j] free, y[j] >= 0,对于j = 0,…, n-1 ',其中pwl(x) = 0,如果x = 0 ' = 1+|x|,如果x != 0 ' 'Sum pwl(x[j]) <= b表示有界的x向量,也表示稀疏的x向量。这里b = 3意味着最多两个x[j]可以是非零的,如果是2,则' sum x[j] <= 1 ' 2。Pwl (x)从1跳到0,从0跳到1,如果x从- 0到0,'然后到0,所以我们需要在x = 0处有3个点。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 10, 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() =模型。AddVars(n, GRB.CONTINUOUS) For i As Integer = 0 To n - 1 x(i)。磅=伽马线暴。∞x(我)。Obj = c(i)下一个昏暗y作为GRBVar() =模型。AddVars (n, GRB.CONTINUOUS) ' Set objective to maximize model.ModelSense = GRB.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