manbet体育手机客户端


gc_pwl_vb.vb.


'版权所有2019,Gurobi O狗万app足彩ptimization,LLC''此示例配方使用PWL约束来解决以下简单模型':''最大化'和C [j] * x [j]'受到'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]自由,y [j]> = 0,对于j = 0,...,n-1'其中pwl(x)= 0,如果x = 0'= 1+x |,如果x!= 0''注意'1.和pwl(x [j])<= b是绑定x向量,也有利于稀疏x向量。“这里b = 3表示最多两个x [j]可以是非零,如果是两个,那么'sum x [j] <= 1'.pwl(x)跳跃从1到0,从0到1,如果x从Negatie 0转到0,“然后向正0移动,所以我们需要在x = 0. x上有三个点,两侧有无限的界限,用两个点(-1,2)和(0,1,)可以'将X扩展到-infinite。总的来,我们可以使用五个点(-1,2),(0,1),'(0,0),(0,1)和(1,2)来定义Y = PWL(x)导入系统导入Gurobi类GC_PWL_VB共享子MAIN()尝试将DIM n为INTEGER = 5 DIM M作为INTEGER = 5 DIM C为双()= NEW DOUBLE(){0.5,0.8,0.5,0.1,-1}暗淡A双(,)=新的Double(,){{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}}暗xpts作为double()= new double(){-1,0,0,0,1}}}倍ypt As Double() = New Double() {2, 1, 0, 1, 2} ' Env and model Dim env As GRBEnv = New GRBEnv() Dim model As GRBModel = New GRBModel(env) model.ModelName = "gc_pwl_cs" ' Add variables, set bounds and obj coefficients Dim x As GRBVar() = model.AddVars(n, GRB.CONTINUOUS) For i As Integer = 0 To n - 1 x(i).LB = -GRB.INFINITY x(i).Obj = c(i) Next Dim y As GRBVar() = model.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