Tightens the cumul bounds starting from the current cumul var min/max,
and propagating the precedences resulting from the next_accessor, and the
dimension's precedence rules.
Returns false iff the precedences are infeasible with the given routes.
Otherwise, the user can call CumulMin() and CumulMax() to retrieve the new
bounds of an index.
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Missing the information I need","missingTheInformationINeed","thumb-down"],["Too complicated / too many steps","tooComplicatedTooManySteps","thumb-down"],["Out of date","outOfDate","thumb-down"],["Samples / code issue","samplesCodeIssue","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2024-08-06 UTC."],[[["\u003cp\u003e\u003ccode\u003eCumulBoundsPropagator\u003c/code\u003e is a utility class within the core optimizer used for tightening cumulative bounds.\u003c/p\u003e\n"],["\u003cp\u003eIt leverages model precedences to refine the range of possible cumulative values.\u003c/p\u003e\n"],["\u003cp\u003eThe class provides methods like \u003ccode\u003eCumulMin\u003c/code\u003e and \u003ccode\u003eCumulMax\u003c/code\u003e to access the adjusted bounds.\u003c/p\u003e\n"],["\u003cp\u003e\u003ccode\u003ePropagateCumulBounds\u003c/code\u003e is a key function that performs the bound tightening based on precedences and returns a feasibility status.\u003c/p\u003e\n"],["\u003cp\u003eUsers can obtain the associated \u003ccode\u003eRoutingDimension\u003c/code\u003e via the \u003ccode\u003edimension\u003c/code\u003e method.\u003c/p\u003e\n"]]],["The `CumulBoundsPropagator` class, used within the core optimizer, tightens cumul bounds based on model precedences. Key actions involve `PropagateCumulBounds`, which refines bounds using a `next_accessor` function and dimension precedence rules. It returns `false` if precedences are infeasible. `CumulMin` and `CumulMax` methods then provide the updated bounds for a given index. The class also provides methods to get the associated dimension and the constructor that receives the dimension as parameter.\n"],null,["# CumulBoundsPropagator\n\nC++ Reference: class CumulBoundsPropagator\n==========================================\n\n\nNote: This documentation is automatically generated.\nUtility class used in the core optimizer to tighten the cumul bounds as much as possible based on the model precedences.\n\n| Method ||\n|-------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| [`CumulBoundsPropagator`](https://github.com/google/or-tools/blob/v9.4/ortools/constraint_solver/routing_lp_scheduling.h#L53) | Return type: `explicit ` Arguments: `const RoutingDimension* dimension` \u003cbr /\u003e |\n| [`CumulMax`](https://github.com/google/or-tools/blob/v9.4/ortools/constraint_solver/routing_lp_scheduling.h#L69) | Return type: `int64_t ` Arguments: `int index` \u003cbr /\u003e |\n| [`CumulMin`](https://github.com/google/or-tools/blob/v9.4/ortools/constraint_solver/routing_lp_scheduling.h#L65) | Return type: `int64_t ` Arguments: `int index` \u003cbr /\u003e |\n| [`dimension`](https://github.com/google/or-tools/blob/v9.4/ortools/constraint_solver/routing_lp_scheduling.h#L76) | Return type: `const RoutingDimension& ` \u003cbr /\u003e |\n| [`PropagateCumulBounds`](https://github.com/google/or-tools/blob/v9.4/ortools/constraint_solver/routing_lp_scheduling.h#L61) | Return type: `bool ` Arguments: ` const std::function\u003cint64_t(int64_t)\u003e& next_accessor, int64_t cumul_offset` Tightens the cumul bounds starting from the current cumul var min/max, and propagating the precedences resulting from the next_accessor, and the dimension's precedence rules. Returns false iff the precedences are infeasible with the given routes. Otherwise, the user can call CumulMin() and CumulMax() to retrieve the new bounds of an index. |"]]