has_assignment
| has_assignment | 
  Purpose
 
 In the following example, either task A requires resource R1 with resource profile [1,2,1,1,2,1,1,2], or task A requires resource R2 with resource profile [2,2,1,1,1,1,1,2]. The choice depends on the value of the decision variables A.assignment(R1) and A.assignment(R2) that can both take a value of 0 (the task is not assigned to this resource) or a value of 1 (the task is assigned to this resource).
 
  
 
 
 
  Synopsis
 
function has_assignment(task:cptask, resource:cpresource) : boolean
 
  Arguments
 
| 
     task 
     | 
     the task
     | 
| 
     resource 
     | 
     the resource
     | 
  Return value
 
 true IFF a cpvar representing the assignment of 'task' to 'resource' exists
  Example
 
 The following example illustrates this:
 
model "Alternative resources and non constant resource usage"
 uses "kalis"
 declarations
  res1,res2   : cpresource
  taska,taskb : cptask
  arr1,arr2   : list of integer
 end-declarations
! Fix start times and durations
 taska.start   = 3
 taska.duration = 4
 taskb.start   = 3
 taskb.duration = 4
! Define 2 cumulative resources
 set_resource_attributes(res1, KALIS_DISCRETE_RESOURCE, 4)
 set_resource_attributes(res2, KALIS_DISCRETE_RESOURCE, 4)
 setname(taska,"taska"); setname(taskb,"taskb")
 setname(res1,"R1"); setname(res2,"R2")
! Define alternative resources for both tasks
 arr1 := [1,3,2,3]
 arr2 := [2,4,1,3]
 requires(taska, {resusage(res1,arr1),resusage(res2,arr2)}, 1, 1)
 requires(taskb, {resusage(res1,1,1),resusage(res2,1,1)}, 1, 1)
! Find all solutions
 while (cp_find_next_sol) do
  cp_show_sol
 end-do
end-model
 
  Related topics
 
 
