The Changeover (Setup) Constraint

Ioan Popescu

Purpose

The changeover (set-up) constraint.

By running an activity A the state of the manufacturing environment is changed. The start of an activity B depends on the state of the manufacturing environment also.

There is a changeover constraint between activity A and activity B if the following situation happens. If activity A and B run on the same machine M such as A is right before B then there is need to run between them a special activity CBA, called changeover. The purpose of the activity CBA is to bring the manufacturing environment (usually the machine M) into a state such as the activity B is able to start.

PODL Keywords

	before-or-after-changeover
	:before-co
	:after-co
	:mechanism
	:interval

PODL syntax and semantics

Suppose we have the activities A and B which may use the same machine to run. In order to start activity B after A (on the same machine) we have to run the changeover (setup) activity C1 first. In order to start activity A after B (on the same machine) we have to run the changeover (setup) activity C2 first. This relationship can be easily expressed by a table:

Changeover relationship
	___________________________
	|     |    A   |    B     |
	|_____|________|__________|
	| A   |        |    C1    |
	|_____|________|__________|
	| B   |   C2   |          |
	|____ |________|__________|

In PODL, we first declare the changeover activities as having the type “changeover”:

		   :activity-type changeover

Here is the declaration of C1 and C2 in PODL:

#===================================================================
# Changeovers
#===================================================================
( activity :name C1
	   :activity-type changeover
	   :duration 2
	   :uses ( role :role-name MACHINE :amount 1)
	   )
( activity :name C2
	   :activity-type changeover
	   :duration 18
	   :uses ( role :role-name MACHINE :amount 1)
	   )

The changeover constraint between all the activities A, C1, C2 and B is expressed as a temporal constraint, as is shown in the following PODL code:

	       ( activity :name A
			  :duration     1
			  :uses 
			  ( role :role-name MACHINE
				 :amount      1 )
			  :produces 
			  ( resource-set :set-name A-RAW
					 :role-name   raw
					 :amount      1 )
			  )

	       ( activity :name B
			  :duration     1
			  :uses 
			  ( role :role-name MACHINE
				 :amount      1 )
			  :produces 
			  ( resource-set :set-name B-RAW
					 :role-name   raw
					 :amount      1 )
			:temporal-relation
			  ( before-or-after-changeover 	:activity A
							:before-co C1
							:after-co  C2
							:mechanism machine1
							:interval 0
							)
			  )

The changeover constraint is declared inside the declaration of the
activity B and has the following syntax:

			  :temporal-relation
			  ( before-or-after-changeover 	:activity A
							:before-co C1
							:after-co  C2
							:mechanism machine1
							:interval 0
							)

and has the following meaning:

  • The changeover C1 will be used when the activity A is right before the activity B and all of them on the same :mechanism machine1.
  • The changeover C2 will be used when the activity A is right after the activity B and all of them on the same :mechanism machine1.
  • There is an :interval of 0 units of time between activity B and any of its changeover: C1 and C2.

Implementation

It has been implemented as a :temporal-relation.

The difficulty of this constraint is its disjunctive nature. To emphasis this characteristic let us decompose the initial changeover relationship into smaller relations. We say that the activity A and B are in a “changeover” relation

( A changeover B )

if there is a situation in the manufacturing process such us there is need for a changeover activity to run between them. We consider the “changeover relation” as a symmetric one. We can extend this relation for all pairs of activities (except changeover activities, themselves) by adding to the model the “empty changeover activity”. We use the following notations:

( A B on-machine M )
 activities A and B are both running on the machine M
( changeover-of B A on-machine M is CBA )
 if B is before A and there is no other activity between B and A and both are running on machine A then there is a changeover CBA between them
( A right-changeover CAB )
 CAB is a changeover that can run after A
( CAB left-changeover B )
 CAB is a changeover that can run before B

Using these notation, the changeover constraint can be expressed as follows

 ( A changeover B ) =
       if   ( A B on-machine M ) and
            ( changeover-of B A on-machine M is CBA )  and
            ( changeover-of A B on-machine M is CAB )
       then ( A right-changeover CAB ) and
            ( CAB left-changeover  B )
            or
            ( B right-changeover CBA ) and
            ( CBA left-changeover  A )

 
 ( A right-changeover CAB ) =
            ( A before CAB ) and
            ( A on-same-machine CAB)

 ( CBA left-changeover A ) =
            ( CBA before A ) and
            ( CBA on-same-machine A)

The algorithm evaluates the truth value of the “if” condition. If true, propagates the branches of the or and keeps the results into

  • the bit vector of the IntervalVariable:
    start times for A and B
  • the activity list of the Schedule object:
    here instances of the changeover activities are asserted or retracted

Future work has to be done for:

  • incorporating the changeover constraint into texture measurements
  • minimizing the capacity used by changeovers