Hide navigation sidebar
Hide table of contents sidebar
Back to top
Toggle table of contents sidebar

# sos_vb.vb

    ' Copyright 2025, Gurobi Optimization, LLC
    '
    ' This example creates a very simple Special Ordered Set (SOS) model.
    ' The model consists of 3 continuous variables, no linear constraints,
    ' and a pair of SOS constraints of type 1.

    Imports System
    Imports Gurobi

    Class sos_vb
        Shared Sub Main()
            Try
                Dim env As New GRBEnv()
                Dim model As New GRBModel(env)

                ' Create variables

                Dim ub As Double() = {1, 1, 2}
                Dim obj As Double() = {-2, -1, -1}
                Dim names As String() = {"x0", "x1", "x2"}

                Dim x As GRBVar() = model.AddVars(Nothing, ub, obj, Nothing, names)

                ' Add first SOS1: x0=0 or x1=0

                Dim sosv1 As GRBVar() = {x(0), x(1)}
                Dim soswt1 As Double() = {1, 2}

                model.AddSOS(sosv1, soswt1, GRB.SOS_TYPE1)

                ' Add second SOS1: x0=0 or x2=0

                Dim sosv2 As GRBVar() = {x(0), x(2)}
                Dim soswt2 As Double() = {1, 2}

                model.AddSOS(sosv2, soswt2, GRB.SOS_TYPE1)

                ' Optimize model

                model.Optimize()

                For i As Integer = 0 To 2
                    Console.WriteLine(x(i).VarName & " " & x(i).X)
                Next

                ' 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

Help and Feedback

Press `/` or click to search this documentation | Gurobi website | Gurobi community forum
Go to other Gurobi documentation | Gurobi download | Contact support