lpmod_vb.vb


lpmod_vb.vb


“这个例子从一个文件中读取一个LP模狗万app足彩型并解决它。”如果模型可以求解,那么它会找到最小的正变量,'将其上界设为零,并以两种方式解析模型:'首先使用高级起始,然后不使用高级起始'(即从头开始)。导入系统导入Gurobi类lpmod_vb共享子主(ByVal args As String())如果args。长度< 1,然后控制台。Try ' Read模型并确定是否为LP Dim env As New GRBEnv() Dim模型As New GRBModel(env, args(0)) If模型。IsMIP <> 0然后是控制台。WriteLine(“模型不是一个线性程序”)环境。退出(1)结束如果模型。优化()暗淡状态作为整数=模型。Status If (Status = GRB.Status.INF_OR_UNBD) OrElse _ (Status = grb .Status. in可行性)OrElse _ (Status = GRB.Status.UNBOUNDED) Then Console。WriteLine(“模型不能被解决,因为它是”& _“不可行的或无边界”)环境。退出(1)结束如果如果状态<> GRB.Status.OPTIMAL然后控制台。环境退出(0)结束如果'找到最小的变量值Dim minVal As Double = GRB。INFINITY Dim minVar As GRBVar = Nothing For Each v As GRBVar In model.GetVars() Dim sol As Double = v. x If (sol > 0.0001) AndAlso _ (sol < minVal) AndAlso _ (v.LB = 0.0) Then minVal = sol minVar = v End If Next Console。***设置& _ minVar。从“& minVal &”到零***“& vbLf) minVar。UB = 0 ' Solve from this starting point model.Optimize() '节省迭代和时间信息Dim warmCount作为双=模型。IterCount Dim warmTime As Double =模型。Runtime ' Reset the model and resolve Console.WriteLine(vbLf & "*** Resetting and solving " & _ "without an advanced start ***" & vbLf) model.Reset() model.Optimize() Dim coldCount As Double = model.IterCount Dim coldTime As Double = model.Runtime Console.WriteLine(vbLf & "*** Warm start: " & warmCount & _ " iterations, " & warmTime & " seconds") Console.WriteLine("*** Cold start: " & coldCount & " iterations, " & _ coldTime & " seconds") ' Dispose of model and env model.Dispose() env.Dispose() Catch e As GRBException Console.WriteLine("Error code: " & e.ErrorCode & ". " & e.Message) End Try End Sub End Class