Class RoutesConstraintProto

  • All Implemented Interfaces:
    RoutesConstraintProtoOrBuilder, com.google.protobuf.Message, com.google.protobuf.MessageLite, com.google.protobuf.MessageLiteOrBuilder, com.google.protobuf.MessageOrBuilder, java.io.Serializable

    public final class RoutesConstraintProto
    extends com.google.protobuf.GeneratedMessageV3
    implements RoutesConstraintProtoOrBuilder
     The "VRP" (Vehicle Routing Problem) constraint.
    
     The direct graph where arc #i (from tails[i] to head[i]) is present iff
     literals[i] is true must satisfy this set of properties:
     - #incoming arcs == 1 except for node 0.
     - #outgoing arcs == 1 except for node 0.
     - for node zero, #incoming arcs == #outgoing arcs.
     - There are no duplicate arcs.
     - Self-arcs are allowed except for node 0.
     - There is no cycle in this graph, except through node 0.
    
     Note: Currently this constraint expect all the nodes in [0, num_nodes) to
     have at least one incident arc. The model will be considered invalid if it
     is not the case. You can add self-arc fixed to one to ignore some nodes if
     needed.
    
     TODO(user): It is probably possible to generalize this constraint to a
     no-cycle in a general graph, or a no-cycle with sum incoming <= 1 and sum
     outgoing <= 1 (more efficient implementation). On the other hand, having this
     specific constraint allow us to add specific "cuts" to a VRP problem.
     
    Protobuf type operations_research.sat.RoutesConstraintProto
    See Also:
    Serialized Form
    • Nested Class Summary

      Nested Classes 
      Modifier and Type Class Description
      static class  RoutesConstraintProto.Builder
      The "VRP" (Vehicle Routing Problem) constraint.
      • Nested classes/interfaces inherited from class com.google.protobuf.GeneratedMessageV3

        com.google.protobuf.GeneratedMessageV3.BuilderParent, com.google.protobuf.GeneratedMessageV3.ExtendableBuilder<MessageT extends com.google.protobuf.GeneratedMessageV3.ExtendableMessage<MessageT>,​BuilderT extends com.google.protobuf.GeneratedMessageV3.ExtendableBuilder<MessageT,​BuilderT>>, com.google.protobuf.GeneratedMessageV3.ExtendableMessage<MessageT extends com.google.protobuf.GeneratedMessageV3.ExtendableMessage<MessageT>>, com.google.protobuf.GeneratedMessageV3.ExtendableMessageOrBuilder<MessageT extends com.google.protobuf.GeneratedMessageV3.ExtendableMessage<MessageT>>, com.google.protobuf.GeneratedMessageV3.FieldAccessorTable, com.google.protobuf.GeneratedMessageV3.UnusedPrivateParameter
      • Nested classes/interfaces inherited from class com.google.protobuf.AbstractMessageLite

        com.google.protobuf.AbstractMessageLite.InternalOneOfEnum
    • Method Detail

      • newInstance

        protected java.lang.Object newInstance​(com.google.protobuf.GeneratedMessageV3.UnusedPrivateParameter unused)
        Overrides:
        newInstance in class com.google.protobuf.GeneratedMessageV3
      • getDescriptor

        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor()
      • internalGetFieldAccessorTable

        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable()
        Specified by:
        internalGetFieldAccessorTable in class com.google.protobuf.GeneratedMessageV3
      • getTails

        public int getTails​(int index)
        repeated int32 tails = 1;
        Specified by:
        getTails in interface RoutesConstraintProtoOrBuilder
        Parameters:
        index - The index of the element to return.
        Returns:
        The tails at the given index.
      • getHeads

        public int getHeads​(int index)
        repeated int32 heads = 2;
        Specified by:
        getHeads in interface RoutesConstraintProtoOrBuilder
        Parameters:
        index - The index of the element to return.
        Returns:
        The heads at the given index.
      • getLiterals

        public int getLiterals​(int index)
        repeated int32 literals = 3;
        Specified by:
        getLiterals in interface RoutesConstraintProtoOrBuilder
        Parameters:
        index - The index of the element to return.
        Returns:
        The literals at the given index.
      • getDemandsList

        public java.util.List<java.lang.Integer> getDemandsList()
         EXPERIMENTAL. The demands for each node, and the maximum capacity for each
         route. Note that this is currently only used for the LP relaxation and one
         need to add the corresponding constraint to enforce this outside of the LP.
        
         TODO(user): Ideally, we should be able to extract any dimension like these
         (i.e. capacity, route_length, etc..) automatically from the encoding. The
         classical way to encode that is to have "current_capacity" variables along
         the route and linear equations of the form:
           arc_literal => (current_capacity_tail + demand <= current_capacity_head)
         
        repeated int32 demands = 4;
        Specified by:
        getDemandsList in interface RoutesConstraintProtoOrBuilder
        Returns:
        A list containing the demands.
      • getDemandsCount

        public int getDemandsCount()
         EXPERIMENTAL. The demands for each node, and the maximum capacity for each
         route. Note that this is currently only used for the LP relaxation and one
         need to add the corresponding constraint to enforce this outside of the LP.
        
         TODO(user): Ideally, we should be able to extract any dimension like these
         (i.e. capacity, route_length, etc..) automatically from the encoding. The
         classical way to encode that is to have "current_capacity" variables along
         the route and linear equations of the form:
           arc_literal => (current_capacity_tail + demand <= current_capacity_head)
         
        repeated int32 demands = 4;
        Specified by:
        getDemandsCount in interface RoutesConstraintProtoOrBuilder
        Returns:
        The count of demands.
      • getDemands

        public int getDemands​(int index)
         EXPERIMENTAL. The demands for each node, and the maximum capacity for each
         route. Note that this is currently only used for the LP relaxation and one
         need to add the corresponding constraint to enforce this outside of the LP.
        
         TODO(user): Ideally, we should be able to extract any dimension like these
         (i.e. capacity, route_length, etc..) automatically from the encoding. The
         classical way to encode that is to have "current_capacity" variables along
         the route and linear equations of the form:
           arc_literal => (current_capacity_tail + demand <= current_capacity_head)
         
        repeated int32 demands = 4;
        Specified by:
        getDemands in interface RoutesConstraintProtoOrBuilder
        Parameters:
        index - The index of the element to return.
        Returns:
        The demands at the given index.
      • isInitialized

        public final boolean isInitialized()
        Specified by:
        isInitialized in interface com.google.protobuf.MessageLiteOrBuilder
        Overrides:
        isInitialized in class com.google.protobuf.GeneratedMessageV3
      • writeTo

        public void writeTo​(com.google.protobuf.CodedOutputStream output)
                     throws java.io.IOException
        Specified by:
        writeTo in interface com.google.protobuf.MessageLite
        Overrides:
        writeTo in class com.google.protobuf.GeneratedMessageV3
        Throws:
        java.io.IOException
      • getSerializedSize

        public int getSerializedSize()
        Specified by:
        getSerializedSize in interface com.google.protobuf.MessageLite
        Overrides:
        getSerializedSize in class com.google.protobuf.GeneratedMessageV3
      • equals

        public boolean equals​(java.lang.Object obj)
        Specified by:
        equals in interface com.google.protobuf.Message
        Overrides:
        equals in class com.google.protobuf.AbstractMessage
      • hashCode

        public int hashCode()
        Specified by:
        hashCode in interface com.google.protobuf.Message
        Overrides:
        hashCode in class com.google.protobuf.AbstractMessage
      • parseFrom

        public static RoutesConstraintProto parseFrom​(java.nio.ByteBuffer data)
                                               throws com.google.protobuf.InvalidProtocolBufferException
        Throws:
        com.google.protobuf.InvalidProtocolBufferException
      • parseFrom

        public static RoutesConstraintProto parseFrom​(java.nio.ByteBuffer data,
                                                      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                                               throws com.google.protobuf.InvalidProtocolBufferException
        Throws:
        com.google.protobuf.InvalidProtocolBufferException
      • parseFrom

        public static RoutesConstraintProto parseFrom​(com.google.protobuf.ByteString data)
                                               throws com.google.protobuf.InvalidProtocolBufferException
        Throws:
        com.google.protobuf.InvalidProtocolBufferException
      • parseFrom

        public static RoutesConstraintProto parseFrom​(com.google.protobuf.ByteString data,
                                                      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                                               throws com.google.protobuf.InvalidProtocolBufferException
        Throws:
        com.google.protobuf.InvalidProtocolBufferException
      • parseFrom

        public static RoutesConstraintProto parseFrom​(byte[] data)
                                               throws com.google.protobuf.InvalidProtocolBufferException
        Throws:
        com.google.protobuf.InvalidProtocolBufferException
      • parseFrom

        public static RoutesConstraintProto parseFrom​(byte[] data,
                                                      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                                               throws com.google.protobuf.InvalidProtocolBufferException
        Throws:
        com.google.protobuf.InvalidProtocolBufferException
      • parseFrom

        public static RoutesConstraintProto parseFrom​(java.io.InputStream input)
                                               throws java.io.IOException
        Throws:
        java.io.IOException
      • parseFrom

        public static RoutesConstraintProto parseFrom​(java.io.InputStream input,
                                                      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                                               throws java.io.IOException
        Throws:
        java.io.IOException
      • parseDelimitedFrom

        public static RoutesConstraintProto parseDelimitedFrom​(java.io.InputStream input)
                                                        throws java.io.IOException
        Throws:
        java.io.IOException
      • parseDelimitedFrom

        public static RoutesConstraintProto parseDelimitedFrom​(java.io.InputStream input,
                                                               com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                                                        throws java.io.IOException
        Throws:
        java.io.IOException
      • parseFrom

        public static RoutesConstraintProto parseFrom​(com.google.protobuf.CodedInputStream input)
                                               throws java.io.IOException
        Throws:
        java.io.IOException
      • parseFrom

        public static RoutesConstraintProto parseFrom​(com.google.protobuf.CodedInputStream input,
                                                      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                                               throws java.io.IOException
        Throws:
        java.io.IOException
      • newBuilderForType

        public RoutesConstraintProto.Builder newBuilderForType()
        Specified by:
        newBuilderForType in interface com.google.protobuf.Message
        Specified by:
        newBuilderForType in interface com.google.protobuf.MessageLite
      • toBuilder

        public RoutesConstraintProto.Builder toBuilder()
        Specified by:
        toBuilder in interface com.google.protobuf.Message
        Specified by:
        toBuilder in interface com.google.protobuf.MessageLite
      • newBuilderForType

        protected RoutesConstraintProto.Builder newBuilderForType​(com.google.protobuf.GeneratedMessageV3.BuilderParent parent)
        Specified by:
        newBuilderForType in class com.google.protobuf.GeneratedMessageV3
      • getParserForType

        public com.google.protobuf.Parser<RoutesConstraintProto> getParserForType()
        Specified by:
        getParserForType in interface com.google.protobuf.Message
        Specified by:
        getParserForType in interface com.google.protobuf.MessageLite
        Overrides:
        getParserForType in class com.google.protobuf.GeneratedMessageV3
      • getDefaultInstanceForType

        public RoutesConstraintProto getDefaultInstanceForType()
        Specified by:
        getDefaultInstanceForType in interface com.google.protobuf.MessageLiteOrBuilder
        Specified by:
        getDefaultInstanceForType in interface com.google.protobuf.MessageOrBuilder