invariants.lib.minmax

ArgMaxArray

case class ArgMaxArray (varss: Array[IntVar], ccond: IntSetVar, default: Int) extends ArgMiaxArray with Product with Serializable

Maintains {i in indices of (varss Inter cond) | varss[i] == max(varss(i in indices of (varss Inter cond))}

varss

is an array of IntVar, which can be bulked

ccond

is the condition, supposed fully acceptant if not specified (must be specified if varss is bulked)

default

is the value returned when cond is empty update is O(log(n))

Linear Supertypes
ArgMiaxArray, Serializable, Serializable, Product, Equals, Bulked[IntVar, (Int, Int)], IntSetInvariant, Invariant, PropagationElement, TarjanNode, DAGNode, Ordered[DAGNode], Comparable[DAGNode], AnyRef, Any
Ordering
  1. Alphabetic
  2. By inheritance
Inherited
  1. Hide All
  2. Show all
  1. ArgMaxArray
  2. ArgMiaxArray
  3. Serializable
  4. Serializable
  5. Product
  6. Equals
  7. Bulked
  8. IntSetInvariant
  9. Invariant
  10. PropagationElement
  11. TarjanNode
  12. DAGNode
  13. Ordered
  14. Comparable
  15. AnyRef
  16. Any
Visibility
  1. Public
  2. All

Instance Constructors

  1. new ArgMaxArray (varss: Array[IntVar], ccond: IntSetVar, default: Int)

    varss

    is an array of IntVar, which can be bulked

    ccond

    is the condition, supposed fully acceptant if not specified (must be specified if varss is bulked)

    default

    is the value returned when cond is empty update is O(log(n))

Value Members

  1. def != (arg0: AnyRef): Boolean

    Attributes
    final
    Definition Classes
    AnyRef
  2. def != (arg0: Any): Boolean

    Attributes
    final
    Definition Classes
    Any
  3. def ## (): Int

    Attributes
    final
    Definition Classes
    AnyRef → Any
  4. def < (that: DAGNode): Boolean

    Definition Classes
    Ordered
  5. def <= (that: DAGNode): Boolean

    Definition Classes
    Ordered
  6. def == (arg0: AnyRef): Boolean

    Attributes
    final
    Definition Classes
    AnyRef
  7. def == (arg0: Any): Boolean

    Attributes
    final
    Definition Classes
    Any
  8. def > (that: DAGNode): Boolean

    Definition Classes
    Ordered
  9. def >= (that: DAGNode): Boolean

    Definition Classes
    Ordered
  10. def BulkLoad (bulkedVar: Array[IntVar], bcr: (Int, Int)): Unit

    through this method, a bulked invariant receives the bulked array of variables there is no need to register static dependencies here, this is handled by the BulkLoad Instead, one should implement the business specific initialization, and the registration to the dynamic graph here.

    through this method, a bulked invariant receives the bulked array of variables there is no need to register static dependencies here, this is handled by the BulkLoad Instead, one should implement the business specific initialization, and the registration to the dynamic graph here. Notice that the finishInitialization method should already be called during the constructor, so do not call it from this method.

    bulkedVar

    the bulked array of variables

    Definition Classes
    ArgMiaxArrayBulked
  11. var DeterminingElements : List[PropagationElement]

    Definition Classes
    PropagationElement
  12. val DynamicallyListenedElements : PermaFilteredDoublyLinkedList[PropagationElement]

    Definition Classes
    PropagationElement
  13. var DynamicallyListenedElementsFromSameComponent : PermaFilteredDoublyLinkedList[PropagationElement]

    Definition Classes
    PropagationElement
  14. val DynamicallyListeningElements : PermaFilteredDoublyLinkedList[(PropagationElement, Any)]

    Definition Classes
    PropagationElement
  15. var DynamicallyListeningElementsFromSameComponent : PermaFilteredDoublyLinkedList[(PropagationElement, Any)]

    Definition Classes
    PropagationElement
  16. def ExtremumName : String

    Definition Classes
    ArgMaxArrayArgMiaxArray
  17. var InOneComponent : Boolean

    Definition Classes
    TarjanNode
  18. var Index : Int

    Definition Classes
    TarjanNode
  19. def InitiateDynamicGraphFromSameComponent (): Unit

    Definition Classes
    PropagationElement
  20. var IsBoundary : Boolean

    set to true if the PropagationElement is one that can break or make dependency cycles in the dynamic dependency graph managed by the PropagationComponent basically, set to true if the determiningElement is not in the same component and if this PropagationElement belongs to a cycle in the static dependency graph

    set to true if the PropagationElement is one that can break or make dependency cycles in the dynamic dependency graph managed by the PropagationComponent basically, set to true if the determiningElement is not in the same component and if this PropagationElement belongs to a cycle in the static dependency graph

    Definition Classes
    PropagationElement
  21. var LowLink : Int

    Definition Classes
    TarjanNode
  22. var Miax : IntVar

    Definition Classes
    ArgMiaxArray
  23. def MyMax : Int

    Definition Classes
    ArgMiaxArrayIntSetInvariant
  24. def MyMin : Int

    Definition Classes
    ArgMiaxArrayIntSetInvariant
  25. var OnStack : Boolean

    Definition Classes
    TarjanNode
  26. def Ord (v: IntVar): Int

    Definition Classes
    ArgMaxArrayArgMiaxArray
  27. var Position : Int

    the position in the topological sort

    the position in the topological sort

    Definition Classes
    DAGNode
  28. var StaticallyListenedElements : List[PropagationElement]

    Definition Classes
    PropagationElement
  29. var StaticallyListeningElements : List[PropagationElement]

    Definition Classes
    PropagationElement
  30. var UniqueID : Int

    it gives the unique ID of the PropagationElement.

    it gives the unique ID of the PropagationElement. those uniqueID are expected to start at 0 and to increase continuously An exception is tolerated: UniqueID is set to -1 if the Propagation Element is not mentioned in the propagation structure, such as for constants yet is mentioned in the dependencies of registered propagation elements

    Definition Classes
    DAGNode
  31. def asInstanceOf [T0] : T0

    Attributes
    final
    Definition Classes
    Any
  32. def canEqual (arg0: Any): Boolean

    Definition Classes
    ArgMaxArrayArgMiaxArray → Equals
  33. val ccond : IntSetVar

    is the condition, supposed fully acceptant if not specified (must be specified if varss is bulked)

  34. def checkInternals (): Unit

    To override whenever possible to spot errors in invariants.

    To override whenever possible to spot errors in invariants. this will be called for each invariant after propagation is performed. It requires that the Model is instantiated with the varible debug set to true.

    Definition Classes
    ArgMiaxArrayInvariantPropagationElement
  35. def clone (): AnyRef

    Attributes
    protected[lang]
    Definition Classes
    AnyRef
    Annotations
    @throws()
  36. def compare (that: DAGNode): Int

    Attributes
    final
    Definition Classes
    PropagationElement → Ordered
  37. def compareTo (that: DAGNode): Int

    Definition Classes
    Ordered → Comparable
  38. var component : StrognlyConnexComponent

    this refers to the propagationComponent that contains the PropagationElement.

    this refers to the propagationComponent that contains the PropagationElement. it is managed by the propagation structure

    Definition Classes
    PropagationElement
  39. val cond : IntSetVar

    Definition Classes
    ArgMiaxArray
  40. def decrementAndAccumulateFront (acc: List[PropagationElement]): List[PropagationElement]

    Definition Classes
    PropagationElement
  41. def decrementSucceedingAndAccumulateFront (acc: List[PropagationElement]): List[PropagationElement]

    Definition Classes
    PropagationElement
  42. val default : Int

    is the value returned when cond is empty update is O(log(n))

    is the value returned when cond is empty update is O(log(n))

    Definition Classes
    ArgMaxArrayArgMiaxArray
  43. def determineBoundary (): Unit

    this sets the value of IsBoundary according to the definition of this variable

    this sets the value of IsBoundary according to the definition of this variable

    returns

    the value of IsBoundary

    Definition Classes
    PropagationElement
  44. def dropStaticGraph (): Unit

    Definition Classes
    PropagationElement
  45. def eq (arg0: AnyRef): Boolean

    Attributes
    final
    Definition Classes
    AnyRef
  46. def equals (arg0: Any): Boolean

    Definition Classes
    ArgMaxArrayArgMiaxArray → Equals → AnyRef → Any
  47. def finalize (): Unit

    Attributes
    protected[lang]
    Definition Classes
    AnyRef
    Annotations
    @throws()
  48. def finishInitialization (model: Model = null): Unit

    this must be called by all invariant after they complete their initialization that is: before they get their output variable.

    this must be called by all invariant after they complete their initialization that is: before they get their output variable. This performs some registration to the model, which is discovered by exploring the variables that are statically registered to the model no more variable can be registered statically after this method has been called.

    Definition Classes
    Invariant
  49. def getClass (): java.lang.Class[_]

    Attributes
    final
    Definition Classes
    AnyRef → Any
  50. def getDAGPrecedingNodes : Iterable[DAGNode]

    Attributes
    final
    Definition Classes
    PropagationElementDAGNode
  51. def getDAGSucceedingNodes : Iterable[DAGNode]

    Attributes
    final
    Definition Classes
    PropagationElementDAGNode
  52. def getDeterminingElements : Iterable[PropagationElement]

    the variable that influence on the dependencies of the proapgation element these are propagated first to constitute the dynamic propagatoin graph

    the variable that influence on the dependencies of the proapgation element these are propagated first to constitute the dynamic propagatoin graph

    Definition Classes
    PropagationElement
  53. def getDotNode : String

    This returns the dot node to display on the DOT output for the node.

    This returns the dot node to display on the DOT output for the node. Only the argument of the nodes example: "[label= \"toto\" shape=diamond color=red]"

    Definition Classes
    InvariantPropagationElement
  54. def getDynamicallyListenedElements : Iterable[PropagationElement]

    Attributes
    final
    Definition Classes
    PropagationElement
  55. def getDynamicallyListeningElements : Iterable[(PropagationElement, Any)]

    Attributes
    final
    Definition Classes
    PropagationElement
  56. def getMax : IntVar

    returns an IntVar equal to the value of the returned indices.

    returns an IntVar equal to the value of the returned indices. not specified if cond is empty

  57. def getPropagationStructure : Model

    returns a reference to the propagationStructure where the PropagationElement is registered

    returns a reference to the propagationStructure where the PropagationElement is registered

    Definition Classes
    InvariantPropagationElement
  58. def getStaticallyListenedElements : Iterable[PropagationElement]

    through this method, the PropagationElement must declare which PropagationElement it is listening to in the static dependency graph.

    through this method, the PropagationElement must declare which PropagationElement it is listening to in the static dependency graph. The result must be stable after the call to setupPropagationStructure. to override

    Attributes
    final
    Definition Classes
    PropagationElement
  59. def getStaticallyListeningElements : Iterable[PropagationElement]

    through this method, the PropagationElement must declare which PropagationElement listen to it in the static dependency graph.

    through this method, the PropagationElement must declare which PropagationElement listen to it in the static dependency graph. The result must be stable after the call to setupPropagationStructure. to override

    Attributes
    final
    Definition Classes
    PropagationElement
  60. var h : BinomialHeapWithMoveExtMem[Int]

    Definition Classes
    ArgMiaxArray
  61. def hashCode (): Int

    Definition Classes
    ArgMaxArrayArgMiaxArray → AnyRef → Any
  62. def isInstanceOf [T0] : Boolean

    Attributes
    final
    Definition Classes
    Any
  63. var isScheduled : Boolean

    set to true if the PropagationElement is scheduled for propagation, false otherwise.

    set to true if the PropagationElement is scheduled for propagation, false otherwise. this is managed by the PropagationElement

    Definition Classes
    PropagationElement
  64. var keyForRemoval : Array[KeyForElementRemoval]

    Definition Classes
    ArgMiaxArray
  65. var model : Model

    Definition Classes
    Invariant
  66. def name : String

    Definition Classes
    ArgMaxArrayArgMiaxArray
  67. def ne (arg0: AnyRef): Boolean

    Attributes
    final
    Definition Classes
    AnyRef
  68. def notify (): Unit

    Attributes
    final
    Definition Classes
    AnyRef
  69. def notifyAll (): Unit

    Attributes
    final
    Definition Classes
    AnyRef
  70. def notifyDeleteOn (v: IntSetVar, value: Int): Unit

    Definition Classes
    ArgMiaxArrayInvariant
  71. def notifyDeleteOn (v: IntSetVar, i: Int, value: Int): Unit

    Definition Classes
    Invariant
  72. def notifyDeleteOnAny (v: IntSetVar, i: Any, value: Int): Unit

    Definition Classes
    Invariant
  73. def notifyInsertOn (v: IntSetVar, value: Int): Unit

    Definition Classes
    ArgMiaxArrayInvariant
  74. def notifyInsertOn (v: IntSetVar, i: Int, value: Int): Unit

    Definition Classes
    Invariant
  75. def notifyInsertOnAny (v: IntSetVar, i: Any, value: Int): Unit

    Definition Classes
    Invariant
  76. def notifyIntChanged (v: IntVar, index: Int, OldVal: Int, NewVal: Int): Unit

    Definition Classes
    ArgMiaxArrayInvariant
  77. def notifyIntChanged (v: IntVar, OldVal: Int, NewVal: Int): Unit

    Definition Classes
    Invariant
  78. def notifyIntChangedAny (v: IntVar, i: Any, OldVal: Int, NewVal: Int): Unit

    Definition Classes
    Invariant
  79. var output : IntSetVar

    Definition Classes
    ArgMiaxArray
  80. def performBulkComputation (bulkedVar: Array[IntVar]): (Int, Int)

    Definition Classes
    ArgMiaxArrayBulked
  81. def performPropagation (): Unit

    this is the propagation method that should be overridden by propagation elements.

    this is the propagation method that should be overridden by propagation elements. notice that it is only called in a propagation wave if: 1: it has been registered for propagation since the last time it was propagated 2: it is included in the propagation wave: partial propagation wave do not propagate all propagation elements; it only propagates the ones that come in the predecessors of the targeted propagation element overriding this method is optional, so an empty body is provided by default

    Definition Classes
    PropagationElement
  82. def productArity : Int

    Definition Classes
    ArgMaxArrayArgMiaxArray → Product
  83. def productElement (arg0: Int): Any

    Definition Classes
    ArgMaxArrayArgMiaxArray → Product
  84. def productIterator : Iterator[Any]

    Definition Classes
    Product
  85. def productPrefix : String

    Definition Classes
    ArgMaxArrayArgMiaxArray → Product
  86. def propagate (): Unit

    Performs the propagation, and some bookkeeping around it.

    Performs the propagation, and some bookkeeping around it.

    Definition Classes
    PropagationElement
  87. def registerBulkDependency (bulk: Bulk): Unit

    Attributes
    final
    Definition Classes
    Bulked
  88. def registerDeterminingDependency (v: Variable, i: Any = 1): Unit

    register to determining element.

    register to determining element. It must be in the static dependency graph

    Definition Classes
    Invariant
  89. def registerDeterminingElement (p: PropagationElement, i: Any): Unit

    must belong to the statically listened elements.

    must belong to the statically listened elements. cannot be added to the dynamically listened ones (it is added through this method, so you cannot remove it)

    p

    the element that determines the dynamic dependencies of the propagation element

    i

    an additional value that is stored in this element together with the reference to this, can be use for notification purposes

    Attributes
    protected final
    Definition Classes
    PropagationElement
  90. def registerDynamicDependency (v: Variable, i: Any = 1): KeyForElementRemoval

    Call this from within the invariant to notify that you will listen to this variable.

    Call this from within the invariant to notify that you will listen to this variable. The variable must be registered in the static propagation graph. You CANNOT register a variable twice. It is undetected, but will lead to unexpected behavior.

    v

    the variable that you want to listen to (and be notified about change)

    returns

    a handle that is required to remove the listened var from the dynamically listened ones

    Definition Classes
    Invariant
  91. def registerDynamicallyListenedElement (p: PropagationElement, i: Any): KeyForElementRemoval

    this registers to the element in the dynbamic propagation graph.

    this registers to the element in the dynbamic propagation graph. this element must have been registered o the static propagation graph before, or be accessible through a bulk

    p

    the element that we register to

    i

    a value that can be exploited by the element to notify its updates. normally, this value should be an int, if other type is used, the invariant should override a dedicated notification method.

    returns

    a key that is needed to unregister the element in the dynamic propagation graph

    Attributes
    protected
    Definition Classes
    PropagationElement
  92. def registerStaticAndDynamicDependencies (v: (Variable, Any)*): Unit

    Definition Classes
    Invariant
  93. def registerStaticAndDynamicDependenciesNoID (v: Variable*): Unit

    Definition Classes
    Invariant
  94. def registerStaticAndDynamicDependency (v: Variable, i: Any = 1): Unit

    this method is an alternative to the two call to the registration methods it performs the registration to the static and dynamic graphs at once.

    this method is an alternative to the two call to the registration methods it performs the registration to the static and dynamic graphs at once. just to spare one call

    v

    the variable that we want to register to

    i

    the integer value that will be passed to the invariant to notify some changes in the value of this variable

    Definition Classes
    Invariant
  95. def registerStaticAndDynamicDependencyAll (v: Iterable[(Variable, Any)]): Unit

    Definition Classes
    Invariant
  96. def registerStaticAndDynamicDependencyAllNoID (v: Iterable[Variable]): Unit

    Definition Classes
    Invariant
  97. def registerStaticAndDynamicDependencyArrayIndex (v: Array[Variable], offset: Int = 0): Unit

    registers static and dynamic dependency to all items in the array let be i, a position in the array, the idenx used for dynamic dependency registration is i+offset

    registers static and dynamic dependency to all items in the array let be i, a position in the array, the idenx used for dynamic dependency registration is i+offset

    v

    the variable that are registered

    offset

    and offset applied to the position in the array when reigstering the dynamic dependency

    Definition Classes
    Invariant
  98. def registerStaticDependencies (v: Variable*): Unit

    Definition Classes
    Invariant
  99. def registerStaticDependency (v: Variable): Unit

    Call this from within the invariant to notify that you will statically listen to this variable.

    Call this from within the invariant to notify that you will statically listen to this variable. You CANNOT register a variable twice. It is undetected, but will lead to unexpected behavior.

    v

    the variable that you want to listen to (and be notified about change)

    Definition Classes
    Invariant
  100. def registerStaticDependencyAll (v: Iterable[Variable]): Unit

    Definition Classes
    Invariant
  101. def registerStaticallyListenedElement (p: PropagationElement): Unit

    registers an element in the static dependency graph.

    registers an element in the static dependency graph. Beware that you also need to register elements in the dynamic propagation graph for something to happen.

    p

    the element that we register to

    Attributes
    protected final
    Definition Classes
    PropagationElement
  102. def scheduleForPropagation (): Unit

    to invoque to force inclusion of the propagation element in the current or next propagation wave.

    to invoque to force inclusion of the propagation element in the current or next propagation wave.

    Attributes
    final
    Definition Classes
    PropagationElement
  103. def setCounterToPrecedingCount (): Boolean

    Sets the Position oto the number of element that need to be decremented, not belonging to same connex component for connex component, set it to the number of element that are referenced from othercomponents

    Sets the Position oto the number of element that need to be decremented, not belonging to same connex component for connex component, set it to the number of element that are referenced from othercomponents

    returns

    true if there is a dependency, false otherwise

    Definition Classes
    PropagationElement
  104. def setOutputVar (v: IntSetVar): Unit

    this method is called by the output variable basically, the invariant does not know what is its output variable at creation time.

    this method is called by the output variable basically, the invariant does not know what is its output variable at creation time. if this is an issue, you can always create an output variable internally, and implement this method with en identity invariant. see IdentityInt and IdentityIntSet

    v

    the variable that is the output variable of the invariant.

    Definition Classes
    ArgMiaxArrayIntSetInvariant
  105. def synchronized [T0] (arg0: ⇒ T0): T0

    Attributes
    final
    Definition Classes
    AnyRef
  106. implicit def toIntSetVar : IntSetVar

    Attributes
    implicit
    Definition Classes
    IntSetInvariant
  107. def toString (): String

    Definition Classes
    ArgMaxArrayArgMiaxArray → AnyRef → Any
  108. def unregisterDynamicDependency (k: KeyForElementRemoval): Unit

    Call this from within the invariant to notify that you stop listen to this variable.

    Call this from within the invariant to notify that you stop listen to this variable. The variable must have been be registered in the static propagation graph.

    k

    the handle that was returned when the variable added to the dynamic graph

    Definition Classes
    Invariant
  109. def unregisterDynamicallyListenedElement (p: KeyForElementRemoval): Unit

    unregisters an element in the dynamic propagation graph.

    unregisters an element in the dynamic propagation graph.

    p

    the key that was given when the eement was registered in the dynamic propagation graph

    Attributes
    protected
    Definition Classes
    PropagationElement
  110. var vars : Array[IntVar]

    Definition Classes
    ArgMiaxArray
  111. val varss : Array[IntVar]

    is an array of IntVar, which can be bulked

  112. var visited : Boolean

    supposed to be false between each pass of the algorithm

    supposed to be false between each pass of the algorithm

    Definition Classes
    DAGNode
  113. var visited2 : Boolean

    Definition Classes
    DAGNode
  114. def wait (): Unit

    Attributes
    final
    Definition Classes
    AnyRef
    Annotations
    @throws()
  115. def wait (arg0: Long, arg1: Int): Unit

    Attributes
    final
    Definition Classes
    AnyRef
    Annotations
    @throws()
  116. def wait (arg0: Long): Unit

    Attributes
    final
    Definition Classes
    AnyRef
    Annotations
    @throws()

Deprecated Value Members

  1. def productElements : Iterator[Any]

    Definition Classes
    Product
    Annotations
    @deprecated
    Deprecated

    use productIterator instead

Inherited from ArgMiaxArray

Inherited from Serializable

Inherited from Serializable

Inherited from Product

Inherited from Equals

Inherited from Bulked[IntVar, (Int, Int)]

Inherited from IntSetInvariant

Inherited from Invariant

Inherited from PropagationElement

Inherited from TarjanNode

Inherited from DAGNode

Inherited from Ordered[DAGNode]

Inherited from Comparable[DAGNode]

Inherited from AnyRef

Inherited from Any