To address the problem of disjunctive process plan in a pre-processing stage.
The problem is to choose from the alternative pathes given by the process plan.
See also Float Percentage Demand Assignment.
:status :min-status :max-status :fixed-status
PODL syntax and semantics
With each activity A we attache a :status variable which represents
the percent of usage of this activity in the entire solution of the scheduling.
If the status is not specified, the implicit values are:
:status 100 :min-status 0 :max-status 100 :fixed-status 1
We deal here with the case where the status is fixed:
hence the variables :min-status and :max-status are not discussed here,
but in Float Percentage Demand Assignment.
The status variable can be use to model the choice of alternative paths in
disjunctive process plans. It has to obey the following rules:
- the status variables of all activities of one path has to be equal
- the status variables of the activities involved into a disjunctive point
of the network has to obey Kirchhoff’s law.
Here, by path we understand a path in the graph of the process plan, such as
it has no disjunctive nodes.
In the following example, in order to produce inventory INV we may use either
the slow cure activity SC or the fast cure activity FC.
The preference is given to SC which produces better quality, but consumes
more capacity (time). This preference is expressed through the :status
variables of each activity.
(activity :name SC #slow cure :min-duration 100 :max-duration 400 :status 65 :min-status 60 :max-status 90 :fixed-status 1 :temporal-relation (after :activity A :interval 0) :uses ( role :role-name storage :amount 1 ) :consumes ( resource-set :set-name INV-RAW :role-name raw :amount 1 ) :produces ( resource-set :set-name INV :role-name cooked :amount 1 ) ) (activity :name FC #fast cure :min-duration 50 :max-duration 200 :status 35 :min-status 10 :max-status 40 :fixed-status 1 :temporal-relation (after :activity A :interval 0) :uses ( role :role-name storage :amount 1 ) :consumes ( resource-set :set-name INV-RAW :role-name raw :amount 1 ) :produces ( resource-set :set-name INV :role-name cooked :amount 1 ) )
The implementation is done as a preprocessing stage when the actual quantities
from the orders are translated into instances of activities.
At that time, we can control the number of instances of each activity and set
it according to the status variable.