getproduction
getproduction |
Purpose
Gets the cpvar representing the production of a task for a particular resource.
A task produces some amount of processing power for a resource at its start. The capacity produced is considered as non-renewable which means that the produced capacity remains available even after the termination of the task.
A task produces some amount of processing power for a resource at its start. The capacity produced is considered as non-renewable which means that the produced capacity remains available even after the termination of the task.
Synopsis
function getproduction(task:cptask, resource:cpresource) : cpvar
function getproduction(task:cptask, resource:cpresource, p:integer) : integer
Arguments
|
task
|
the task
|
|
resource
|
the resource
|
|
p
|
the timestep
|
Return value
The cpvar representing the production of 'resource' by 'task'
Example
The following example illustrates this:
model "Producer Consumer"
uses "kalis"
declarations
Masonry, Carpentry, Roofing, Windows, Facade, Garden, Plumbing,
Ceiling, Painting, MovingIn : cptask ! Declaration of tasks
money_available : cpresource ! Resource declaration
end-declarations
! 'money_available' is a cumulative resource with max. amount of 29$
set_resource_attributes(money_available,KALIS_DISCRETE_RESOURCE,29)
! Limit resource availability to 20$ in the time interval [0,14]
setcapacity(money_available, 0, 14, 20)
! Setting the task durations and predecessor sets
set_task_attributes(Masonry , 7 )
set_task_attributes(Carpentry, 3, {Masonry} )
set_task_attributes(Roofing , 1, {Carpentry} )
set_task_attributes(Windows , 1, {Roofing} )
set_task_attributes(Facade , 2, {Roofing} )
set_task_attributes(Garden , 1, {Roofing} )
set_task_attributes(Plumbing , 8, {Masonry} )
set_task_attributes(Ceiling , 3, {Masonry} )
set_task_attributes(Painting , 2, {Ceiling} )
set_task_attributes(MovingIn , 1, {Windows,Facade,Garden,Painting})
! Setting the resource consumptions
consumes(Masonry , 7, money_available )
consumes(Carpentry, 3, money_available )
consumes(Roofing , 1, money_available )
consumes(Windows , 1, money_available )
consumes(Facade , 2, money_available )
consumes(Garden , 1, money_available )
consumes(Plumbing , 8, money_available )
consumes(Ceiling , 3, money_available )
consumes(Painting , 2, money_available )
consumes(MovingIn , 1, money_available )
! Find the optimal schedule (minimizing the makespan)
if cp_minimize(getmakespan) then
cp_show_sol
else
writeln("No solution found")
end-if
end-model
Related topics
