piecewise_vb.vb


Gurobi优化版权2023年,LL狗万app足彩C的这个例子考虑分离后,凸问题:“减少f (x) - y + g (z)”受到x + 2 y + 3 z < = 4 x + y > = 1的x, y, z < = 1”“f (u) = exp (- u)和g (u) = 2 ^ 2 - 4 u,所有真正的u。它的制定和解决简单的LP模型通过近似f和g分段线性函数。然后将模型转换的成MIP否定f的近似,相对应的非凸分段线性函数,再解决。进口系统进口Gurobi类piecewise_vb共享函数f (u双)作为双返回Math.Exp (- u)结束函数共享函数g (u双)作为双返回2 * u * u - 4 *结束函数共享子主要()尝试新建环境昏暗env GRBEnv ()“创建一个新的模型的模型作为新的GRBModel (env)“创建变量模糊双= 0.0磅,乌兰巴托GRBVar =一样双x = 1.0的模型。AddVar(0.0磅,乌兰巴托,伽马线暴。连续的,“x”)的y GRBVar =模型。AddVar(0.0磅,乌兰巴托,伽马线暴。连续的,“y”)的z GRBVar =模型。AddVar(0.0磅,乌兰巴托,伽马线暴。连续的,“z”)“为y model.SetObjective设定目标(可能是)“添加分段线性目标函数为x和z暗淡的不扩散核武器条约》作为Integer = 101暗ptu双()= New双(npt - 1){}昏暗的ptf双()= New双(npt - 1){}昏暗ptg双()= New双(npt - 1){}我作为《不扩散核武器条约》Integer = 0 - 1 ptu (i) =磅+(乌兰巴托-磅)*我/ (npt - 1) ptf (i) = f (ptu(我)ptg (i) = g (ptu(我))下模型。SetPWLObj (x, ptu ptf)模型。SetPWLObj (z, ptu ptg) ' Add constraint: x + 2 y + 3 z <= 4 model.AddConstr(x + 2 * y + 3 * z <= 4.0, "c0") ' Add constraint: x + y >= 1 model.AddConstr(x + y >= 1.0, "c1") ' Optimize model as an LP model.Optimize() Console.WriteLine("IsMIP: " & model.IsMIP) Console.WriteLine(x.VarName & " " & x.X) Console.WriteLine(y.VarName & " " & y.X) Console.WriteLine(z.VarName & " " & z.X) Console.WriteLine("Obj: " & model.ObjVal) Console.WriteLine() ' Negate piecewise-linear objective function for x For i As Integer = 0 To npts - 1 ptf(i) = -ptf(i) Next model.SetPWLObj(x, ptu, ptf) ' Optimize model as a MIP model.Optimize() Console.WriteLine("IsMIP: " & model.IsMIP) Console.WriteLine(x.VarName & " " & x.X) Console.WriteLine(y.VarName & " " & y.X) Console.WriteLine(z.VarName & " " & z.X) 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