Beruflich Dokumente
Kultur Dokumente
Graduate School of Policy and Planning Sciences, University of Tsukuba, Tsukuba, Japan
Institute of Policy and Planning Sciences, University of Tsukuba, Tennodai 1-1-1, Tsukuba, Ibaraki, Japan
Received 26 June 2002; received in revised form 23 July 2003; accepted 23 July 2003
Abstract
Agile production planning and control system (APPCS) is a system for planning, scheduling, procurement, and production
control. APPCS plays an important role in the competitive environments, such as make-to-order industries, because it excels in
immediate uncertainty processing and then guarantees feasibility of the production plan. The uncertainty is often caused by
customers who make a change in the order or by suppliers who change their promised items. The customers or suppliers can
notify of the change before it really happens. Upon receipt of the change, APPCS responds immediately to achieve higher
service level of performance, better resource utilization, and less material loss.
This paper provides a UML model of APPCS. The proposed model concretely defines the APPCS and makes the immediate
planning and scheduling possible. In order to testify the model, both instance of the model and its implementation in a simulator
are shown.
# 2003 Elsevier B.V. All rights reserved.
Keywords: Agile production planning and control system; UML; Planning and scheduling; Production control; Uncertainty
1. Introduction
This paper provides a universal modeling language
(UML) description of the agile production planning
and control system (APPCS). APPCS, proposed by
Sato and Tsai [9], is an integrated system of material
requirement planning, job oriented scheduling, procurement, and production control for uncertainty processing on a basis of inventory, released purchased
orders, and work-in-process (WIP).
The APPCS has the following characters [9]. (1) A
set of demands from master production scheduling
(MPS), inventory, purchased orders, and WIP are
*
0166-3615/$ see front matter # 2003 Elsevier B.V. All rights reserved.
doi:10.1016/j.compind.2003.07.003
134
135
136
137
138
class. The association is also represented by a reference shown in the attribute area of the Part class. The
reference begins with a / to distinguish it from the
other attributes.
Attributes of the Operation class including setupTime, and processTime are used in calculating the total
processing time. A BOM of a part can be regarded as a
set of links that connect the part to its input parts, and
in each link a unit quantity is specified. An association
with its both ends attaching to the Part class is
abstracted from the links, and an association class
Bom is necessary for the association to contain the
attribute unitQty. There are constraints on preventing
139
140
the root job. Conversely, the root job and its input
assignment jobs can pass the finished product to the
demand through the same connection. Hence, a bidirectional association is specified between the
Demand class and the Job class. In Fig. 6, a dotted
line between the demand d and the job i represents
such connection.
Net requirement of a manufacturing job is transformed to a set of schedules by scheduling process.
The Schedule class is abstracted from the schedules.
For a valid schedule, the processing operation and a
workable interval within a shift of a resource must be
specified. The operation is abstracted as operation
reference to the Operation class. The workable interval of a resource is modeled as attributes startEpk and
finishEpk, and a shift reference to the Shift class.
To prevent a resource from assigning a reserved
area of its shifts to the other jobs, the reserved areas
within a shift should be managed. A schedule reference of the Shift class to the Schedule class is established for this purpose. It is necessary for a
manufacturing job to access its schedules. Hence, a
composition association from the Job class to the
Schedule class is designed. A schedule reference
specified in the Job class plays a role in distinguishing
a manufacturing job with a procurement job.
The net requirements of procurement jobs are supplied by releasing purchase orders. The Supply class is
an abstraction of the purchase orders. For a purchase
order, request part (normally raw material), promised
delivery epoch, supply quantity are specified. These
values are kept in part, promiseEpk, supplyQty, the
reference or attributes of the Supply class. A purchase
order can supply one or more than one procurement
job. Since there is no need to divide the net requirement into more than two purchase orders, a job can
only be supplied by a purchase order. An association
between the Supply class and the Job class abstracts
such supplement links.
3.2. Constraints
The UML model of APPCS should satisfy certain
conditions. The conditions are specified to restrict
some actions of the model elements. A constraint is
a semantic relationship that must be maintained;
otherwise, the system described by the model is
invalid [8]. The semantics is described in terms of
141
142
143
144
145
146
147
Acknowledgements
5. Conclusion
We have proposed a UML model of APPCS. In the
model, Part, Bom, Operation, WorkCenter, Resource,
Shift, Demand, and Supply classes and their associations are defined. Job and Link classes and their
associations abstract the hierarchy structure of jobs.
The Schedule class is an abstraction of the feasible
schedules, each of which describes who, where, when,
and how long of an operation. The Assign class
abstracts the assignments from in-processing jobs to
the planning jobs when planning and scheduling is
executed again because of uncertainties.
This research was partially supported by the Ministry of Education, Science, Sports and Culture of
Japan, Grant-in-Aid for Scientific Research (C)
13630132, and by the University of Tsukuba, Special
Research Grant (S). The authors are grateful to SAP
JapanTM and FrontStep JapanTM (formerly, SIMIX
Japan) for their support and help.
Appendix A.
A method of the operation in Fig. 5 is listed in the
appendices for reference. The procedure of the method
148
149
150
BREAK;
ENDIF
ENDFOR
this.netReq : reqQty;
RETURN
void Job.backwardScheduling( )
//Scheduling a job backwardly from the due finish epoch of the job
Epoch dueFinishEpk : this.getDueFinishEpk( );
IF this.part.operation
this.finishEpk : dueFinishEpk;
this.startEpk : dueFinishEpk this.part.procureLeadTime;
ELSE
FOR ALL o 2 this.part.operation DESCENDING BY o.no
Time reqTime : o.setupTime o.processTime this.netReq;
Resource r : o.processWkCtr.chooseResource (dueFinishEpk, reqTime);
WHILE reqTime > 0
Interval i : r.getPrevFreeInterval(dueFinishEpk);
reqTime : reqTime (i.finishEpk i.startEpk);
IF reqTime < 0 THEN i.startEpk : i.startEpk reqTime;
Schedule s : NEW Schedule (job this, operation o, shift i.shift,
startEpk i.startEpk, finishEpk i.finishEpk);
this.schedule.add(s);
i.schedule.add(s);
dueFinishEpk : i.startEpk;
ENDWHILE
ENDFOR
this.startEpk : dueFinishEpk;
this.finishEpk : Max{s.finishEpk | s 2 this.schedule};
ENDIF
RETURN
void Job.forwardScheduling(now Epoch)
//Scheduling a job forwardly from the present time or from the due start epoch of the job.
IF this.part.operation
this.startEpk : now;
this.finishEpk : this.startEpk this.part.procureLeadTime
ELSE
Epoch dueStartEpk : this.getDueStartEpk( );
FOR ALL o 2 this.part.operation ASCENDING BY o.no
Time reqTime : o.setupTime o.processTime this.netReq;
Resource r : o.processWkCtr.chooseResource (dueStartEpk, reqTime);
WHILE reqTime > 0
Interval i : r.getNextFreeInterval(dueStartEpk);
reqTime : reqTime (i.finishEpk i.startEpk);
IF reqTime < 0 THEN i.finishEpk : i.finishEpk reqTime;
Schedule s : NEW Schedule (job this, operation o, shift i.shift,
startEpk i.startEpk, finishEpk i.finishEpk);
this.schedule.add(s);
i.schedule.add(s);
dueStartEpk : i.finishEpk;
ENDWHILE
ENDFOR
this.finishEpk : dueStartEpk;
this.startEpk : Min{s.startEpk | s 2
this.schedule};
ENDIF
RETURN
void Job.cancelPlanning( )
//Canceling the result of job planning
this.netReq : 0;
DESTROY ALL this.inAssign;
FOR ALL il 2 this.inLink DO il.linkQty : 0;
RETURN
void Job.cancelScheduling( )
//Canceling the result of job scheduling, either
backward scheduling or forward scheduling
this.startEpk : Null;
this.finishEpk : Null;
this.supply: Null;
DESTROY ALL this.schedule;
RETURN
151
152
IF ol.requestJob.allInJobScheduled( ) True
THEN FSet.add(ol.requestJob);
ENDFOR
ENDWHILE
ENDIF
RETURN
void Demand.cancelPlanningScheduling
(now: Epoch)
//Canceling the result of planning and scheduling
of a demand
Job Cset :{this.offerJob};
WHILE CSet 6
Job cj : CSet.get( );
IF cj.startEpk > now THEN
cj.cancelScheduling( ); cj.cancelPlanning( );
FOR ALL il 2 cj.inLink
il.linkQty : 0;
IF il.offerJob.startEpk 6 Null THEN
CSet.add(il.offerJob);
ENDFOR
ENDWHILE
RETURN
References
[1] A. Hatchuel, D. Saidi-Kabeche, J.C. Sardas, Toward a new
planning and scheduling approach for multistage production
system, International Journal of Production Research 35 (3)
(1997) 867886.
[2] A.W. Scheer, Business Process Engineering, 2nd ed., Springer, Berlin, 1994.
[3] D.C. Whybark, J.G. Williams, Material requirements planning under uncertainty, Decision Sciences 7 (1976) 595
606.
[4] D.E. Shobrys, D.C. White, Planning, scheduling and control
system: why cannot they work together, Computers and
Chemical Engineering 26 (2002) 149160.
[5] E.A. Silver, D.F. Pyke, R. Peterson, Inventory Management
and Production Planning and Scheduling, 3rd ed., Wiley, New
York, 1998.