Stay organized with collections
Save and categorize content based on your preferences.
C++ Reference: class CumulativeIsAfterSubsetConstraint
Note: This documentation is automatically generated.
Given that the "tasks" are part of a cumulative constraint, this adds a
constraint that propagate the fact that: var >= max(end of substasks) +
offset.
TODO(user): I am not sure this is the best way, but it does at least push
the level zero bound on the large cumulative instances.
[[["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\u003eThe \u003ccode\u003eCumulativeIsAfterSubsetConstraint\u003c/code\u003e enforces that a given variable's value must be greater than or equal to the maximum end time of a subset of tasks plus an offset, within a cumulative constraint.\u003c/p\u003e\n"],["\u003cp\u003eIt aims to improve the lower bound (level zero bound) on large cumulative instances by propagating this constraint.\u003c/p\u003e\n"],["\u003cp\u003eIt is implemented with methods like \u003ccode\u003ePropagate\u003c/code\u003e and \u003ccode\u003eRegisterWith\u003c/code\u003e for constraint propagation and integration with the solver.\u003c/p\u003e\n"],["\u003cp\u003eIt requires parameters such as the variable, capacity, subtasks, offsets, and helper classes for scheduling and demand management within the model.\u003c/p\u003e\n"]]],["The `CumulativeIsAfterSubsetConstraint` class in C++ enforces that a variable (`var`) is greater than or equal to the maximum end time of a subset of tasks (`subtasks`) plus an offset. It aims to push the bound on large cumulative instances. Key methods include the constructor, `Propagate` (returns a boolean), and `RegisterWith` (registers with a watcher). The constraint is defined using integer variables, affine expressions, task subsets, offsets, and helper classes.\n"],null,["# CumulativeIsAfterSubsetConstraint\n\nC++ Reference: class CumulativeIsAfterSubsetConstraint\n======================================================\n\n\nNote: This documentation is automatically generated.\nGiven that the \"tasks\" are part of a cumulative constraint, this adds a constraint that propagate the fact that: var \\\u003e= max(end of substasks) + offset. \n\nTODO(user): I am not sure this is the best way, but it does at least push the level zero bound on the large cumulative instances.\n\n| Method ||\n|-------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| [`CumulativeIsAfterSubsetConstraint`](https://github.com/google/or-tools/blob/v9.4/ortools/sat/cumulative_energy.h#L81) | \u003cbr /\u003e Arguments: `IntegerVariable var, AffineExpression capacity, const std::vector\u003cint\u003e& subtasks, const std::vector\u003cIntegerValue\u003e& offsets, SchedulingConstraintHelper* helper, SchedulingDemandHelper* demands, Model* model` \u003cbr /\u003e |\n| [`Propagate`](https://github.com/google/or-tools/blob/v9.4/ortools/sat/cumulative_energy.h#L89) | Return type: `bool ` \u003cbr /\u003e |\n| [`RegisterWith`](https://github.com/google/or-tools/blob/v9.4/ortools/sat/cumulative_energy.h#L90) | Return type: `void ` Arguments: `GenericLiteralWatcher* watcher` \u003cbr /\u003e |"]]