Schedule
Tasks and resources form a schedule. The cp_schedule method allows to optimize a schedule with respect to any objective variable and implements advanced scheduling techniques specialized in makespan minimization. The creation of the schedule makespan can be automated by calling the getmakespan method that ensures automatically its computation.
A custom scheduling optimization strategy can be specified by using the task_serialize branching scheme to select the task to be scheduled and value choice heuristics for its start and duration variables.
The task selection method can be any user Mosel method or it may be configured with the predefined strategies of Xpress Kalis:
- KALIS_SMALLEST_ECT
- KALIS_SMALLEST_EST
- KALIS_SMALLEST_LCT
- KALIS_SMALLEST_LST
- KALIS_LARGEST_ECT
- KALIS_LARGEST_EST
- KALIS_LARGEST_LCT
- KALIS_LARGEST_LST
The picture below illustrates the definition of a task-based branching strategy:

Xpress Kalis defines a set of functions for accessing and modifying cptask and cpresource states:
addpredecessors |
Adds a set of predecessors for a task
|
addsuccessors |
Adds a set of tasks as successors of a task
|
consumes |
Sets the minimal and maximal amount of resource consumed by a task for a particular resource
|
cp_close_schedule |
Close the schedule.
|
cp_get_default_schedule_strategy |
Gets the default schedule search strategy of cp_schedule
|
cp_schedule |
Optimizes the schedule with respect to an objective variable.
|
cp_set_schedule_strategy |
Sets the schedule search strategy for cp_schedule
|
cp_show_schedule |
Shows a textual representation of the current schedule
|
getassignment |
Gets the cpvar representing the assignment of a task for a particular resource.
|
getcapacity |
Get the maximal capacity of a resource for a specific time period.
|
getconsumption |
Gets the cpvar representing the consumption of a task for a particular resource
|
getduration |
Gets the cpvar representing a task duration
|
getend |
Gets the cpvar representing a task completion time
|
getmakespan |
Gets the cpvar representing the makespan of the schedule.
|
getproduction |
Gets the cpvar representing the production of a task for a particular resource
|
getprovision |
Gets the cpvar representing the provision of a task for a particular resource
|
getrequirement |
Gets the cpvar representing the requirement of a task for a particular resource
|
getsetuptime |
Gets the sequence dependent setup times between two tasks
|
getstart |
Gets the cpvar representing a task start time
|
has_assignment |
Tests whether an assignment decision variable for a task and a particular resource exists.
|
is_consuming |
Tests whether a task consumes a specific resource
|
is_fixed |
Tests if the variable passed in argument is instantiated
|
is_idletime |
Tests if a timestep is an idle timestep for a resource.
|
is_producing |
Tests whether a task produces a specific resource
|
is_providing |
Tests whether a task provides a specific resource
|
is_requiring |
Tests whether a task requires a specific resource
|
produces |
Sets the minimal and maximal amount of resource produced by a task for a particular resource
|
provides |
Sets the minimal and maximal amount of resource provided by a task for a particular resource.
|
requires |
Sets the minimal and maximal amount of resource required by a task for a particular resource
|
resusage |
Creates a resource usage
|
set_resource_attributes |
Sets some attributes for a resource
|
set_task_attributes |
Sets some attributes for a task
|
setcapacity |
Sets the maximal capacity of a resource between two time bounds.
|
setduration |
Sets the duration of a task
|
setidletimes |
Specifies the set of timesteps where a resource is idle.
|
setmaxavailability |
Sets the maximal capacity of a resource between two time bounds.
|
setminusage |
Sets the minimum usage of a resource between two time bounds.
|
setpredecessors |
Sets the tasks that must precede a task
|
setsetuptime |
Sets sequence dependent setup times between two tasks
|
setsuccessors |
Sets the set of tasks that must succeed a task
|