Fixed Percentage Demand Pre-Processing

Ioan Popescu

Purpose

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.

PODL Keywords

	: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:

 	:fixed-status	1

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:

  1. the status variables of all activities of one path has to be equal
  2. 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 )
                         )

Implementation

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.