manbet体育手机客户端


piecewise_vb.vb


该示例考虑以下可分离的凸问题:狗万app足彩”受到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分段线性函数。然后,它通过对f的近似(对应于一个非凸分段线性函数)求反,将模型转换为一个MIP,并再次求解。import System Imports Gurobi Class piecewise_vb Shared Function f(u As Double) As Double Return Math.Exp(-u) End Function Shared Function g(u As Double) As Double Return 2 * u * u - 4 * u End Function Shared Sub Main() Try ' Create environment Dim env As New GRBEnv() '创建一个新的模型Dim模型作为新的GRBModel(env)创建变量Dim lb As Double = 0.0, ub As Double = 1.0 Dim x As GRBVar = model。添加var (lb, ub, 0.0, GRB。连续,"x") Dim y As GRBVar = model。添加var (lb, ub, 0.0, GRB。连续,“y”)Dim z As GRBVar = model。添加var (lb, ub, 0.0, GRB。连续的,“z”)”Set objective for y model. setobject (-y) '添加分段线性目标函数为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, pg) ' 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