第六章 結論與未來發展
6.2 未來研究與發展
本研究僅考量如何建立推拉式指標,並無評量指標的好壞。在推拉式指標的設計 方面,本論文主要只設計推拉式指標,尚未考量到各站點的比重。在生產製程中,並 非所有製程的重要性都是相同的,但目前的推拉式指標設計,基本假定所有站的重要 性是相同,在未來設定中可依考量依製程時間、成本、或製程的重要性作加權計算。
程式計算部分。裴氏圖可加註語言的發展使得在電子資料交換更加容易,又可加
註語言綱要(XML Schema)的發展,可利用 JAXB 套件將可加註語言綱要約束(Bind)為類別 (Classes)。籍由此類別,可輕易的使用 Java 語言來撰寫程式及計算推拉式指標。本程式所
使用的裴氏圖可加註語言類別由黃柏勳所撰,已加快開發程式撰寫。但並非官方所定
義之可加註語言綱要,尚有部分功能需再另撰寫。可待ISO/IEC 15909 Part-3 發表後再 由此規範修正其類別。
目前程式需先以人工對記號圖作物流、資訊流及機台資訊流作分離,未能作到全 自動化計算。未來可撰寫自動修正與分離物流資訊流及機台資訊流的相關模組,即可 直接載入檔案後直接計算,以減少人工處理時間。
參考文獻
Springer, 1998.[13] Bonney, M. C., Zhang, Z., Head, M. A., Tien, C. C., and Barson, R. J., “Are Push and Pull Systems Really So Different?,” International Journal of Production Economics, Vol. 59, pp. 53-64, 1999.
[14] British Standards Institution, BS 5192:Guide to Production Control Part I, London, 1993.
[15] Campos, J., Chiola, G., and Silva, M.,“Ergodicity and Throughput Bounds of Petri Nets with Unique Consistent Firing Count Vector,” IEEE Transactions on Software Engineering, Vol. 17, No. 2, pp. 117–125, Feb, 1991.
[16] David, R., and Alla, H., Discrete, Continuous, and Hybrid Petri Nets, Springer, 2005, [17] Goddard, W. E., and Brooks, R. B., “Just-In-Time: A Goal for MRPII, Readings in
Zero Inventory,” Conference Proceedings APICS, 1984.
[18] Hall, R.W., Zero Inventories, American Production and Inventory Control Society, 1983.
[19] Harrison, T. P., Lee, H. L., and Neale, J. J., The Practice of Supply Chain Management, Springer, 2003.
[20] Hillah, L. M., Kordon, F., Petrucci, L., and Tr`eves, N., “PNML Framework: An Extendable Reference Implementation of the Petri Net Markup Language,” Lecture Notes in Computer Science, Vol. 6126, pp. 318-327, 2010.
[21] http://druyanov.tripod.com/RDBMS/BPWin.html/, BPwin, Feb. 1, 2011.
[22] http://www.apics.org/default.htm, APICS, Feb. 1, 2011.
[23] http://www.bsigroup.tw/, BSI, Feb. 1, 2011.
[24] http://www.idef.com/, Integrated DEFinition Methods, Feb. 1, 2011.
[25] http://www.iec.ch/, International Electrotechnical Commission, Feb. 1, 2011.
[26] http://www.informatik.uni-hamburg.de/TGI/PetriNets/, Petri Net World., Feb. 1, 2011.
[27] http://www.iso.org/iso/home.html/, International Organization for Standardization, Feb. 1, 2011.
[28] http://www.Java.com/zh_TW/, Java, Feb. 1, 2011.
[29] http://www.pnml.org/, Petri Net Markup Language, Feb. 1, 2011.
[30] http://www.standardsinfo.net/info/index.html/, ISO/IEC, Feb. 1, 2011.
[31] http://www.w3.org/, World Wide Web Consortium, Feb. 1, 2011.
[32] http://www.w3.org/DOM/, Document Object Model, Feb. 1, 2011.
[33] http://www.w3.org/XML/, Extensible Markup Language, Feb. 1, 2011.
[34] http://www2.informatik.hu-berlin.de/lehrstuehle/automaten/tools/, Integrated Net Analyzer, Feb. 1, 2011.
[35] James, F. C. and John, H. B., APICS Dictionary, APICS, 2005.
[36] Kenworthy, J. and Little, D., “When Push Comes to Shove is MRPII Infinite Push or Pull?,” BPICS Control, University of Liverpool, pp. 31-32, 1995.
[37] Lee, L. C., “A Comparative Study of The Push and Pull Productions Systems,”
International Journal of Operations and Production Management, Vol. 9, No. 4, pp.
5-18, 1989.
[38] Liang, G. R. and Hong, H. M. “Hierarchy Transformation Method for Repetitive Manufacturing System Specification, Design, Verification and Implementation”, Computer Integrated Manufacturing Systems, Vol. 7, No. 3, pp. 191-205, 1994.
[39] Magott, J., “Performance Evaluation of Concurrent System Using Petri Net,”
Information Processing Letters, Vol. 18, pp. 7-13, 1984.
[40] Mascolo, M. D., Frein, Y., Dallery, Y., and David, R., “A Unified Modeling of Kanban Systems Using Petri Nets,” The International Journal of Flexible Manufacturing Systems, Vol. 3, No. 3-4, pp. 275-307, 1991.
[41] Morioka, S. and Yamada, T., “Performance Evaluation of Marked Graphs by Linear Programming,” International Journal of Systems Science, Vol. 22, No. 9, pp.
1541-1552, 1991.
[42] Murata, T., “Petri Nets: Properties, Analysis and Applications,” Proceedings of The IEEE, Vol. 77, No. 4, pp. 541-580, 1989.
[43] Ohno, T., Toyota Production System: Beyond Large-Scale Production, Productivity Press Inc., 1989.
[44] Oxley, J. G., Matroid Theory, Oxford University Press, 1992.
[45] Ramamoorthy, C. V. and Gray, S. H., “Performance Evaluation of Asynchronous Concurrent System Using Petri Nets,” IEEE Transactions on Software Engineering, Vol. 6, No. 5, pp. 440-449, 1980.
[46] Shingō, S., A Study of the Toyota Production System from an Industrial Engineering Viewpoint, Productivity Press, 1989.
[47] Toni, D. A., Caputo, M., and Vinelli, A. M., “Production Management Techniques:
Push-Pull Classification and Application Conditions,” International Journal of Operations and Production Management, Vol. 8, No. 2, pp. 35-51, 1984.
[48] Venkatesh, K., Zhou, M. C., Kaighobadi, M., and Caudill, R., “A Petri Net Approach to Investigating Push and Pull Paradigms In Flexible Factory Automated Systems,”
International Journal of Production Research, Vol. 34, No. 3, pp. 592-620, 1998.
[49] Villa, A. and Watanabe, T., “Production Management:Beyond the Dichotomy between
„Push‟ and „Pull‟,” Computer Integrated Manufacturing Systems, Vol. 6, pp. 53-63, 1993.
[50] Viswanadham, N., Narahari, Y., and Johnson, T. L., “Deadlock Prevention and Deadlock Avoidance in Flexible Manufacturing Systems Using Petri Net Models,”
IEEE Transactions on Robotics and Automatic, Vol. 6, No. 6, pp. 713-723, 1990.
[51] Zimmermann, A., Rodriguez, D., and Silva, A., “A Two Phase Optimization Method for Petri Net Models of Manufacturing Systems,” Journal of Intelligent Manufacturing, No. 12, pp.409-420, 2001.
附錄一
本附錄說明在推拉式指標計算之方法。下列以 Eclipe 軟體 Java 語言開發。原始 程式碼說明如下:
package Pduct.Ind;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Image;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
import java.util.Properties;
import javax.swing.AbstractAction;
import javax.swing.BorderFactory;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;
import javax.swing.WindowConstants;
import rule_design_Module.petrinet.component.PetriNet;
import rule_design_Module.petrinet.component.RG;
import rule_design_Module.petrinet.component.RGState;
import sun.awt.util.IdentityArrayList;
import usual.tool.ShowImage;
import vms.modules.INAAnalysisFileGenerator;
import vms.modules.INAInputNetGenerator;
import vms.modules.ModelPropertiesAnalysis;
import vms.modules.ReachabilityHandle;
import AMSdesigner.DesignerUI;
import analysis_Module.app.gui.DrawPane;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.io.SAXReader;
import org.omegahat.Environment.DataStructures.integer;
import cern.colt.list.IntArrayList;
public class Ind extends javax.swing.JPanel {
private JButton jButton1;
private JLabel jLl;
private AbstractAction abstractAction1;
private PetriNet pn;
private JLabel[] jLabel;
private DrawPane jp;
private File file;
private Document Doc;
private ArrayList T_I= new ArrayList();//生產規劃ID及推式生產轉移點
private ArrayList Ph_I= new ArrayList();//找出推式生產命令 private ArrayList T_S=new ArrayList();//生產順序
private ArrayList P_T=new ArrayList();//暫存點下一個轉移點 private ArrayList T_P=new ArrayList();//暫存點前一個轉移點
public Ind(){
initGUI();
}
private void initGUI() { try {
jLabel = new JLabel[0];
this.setPreferredSize(new java.awt.Dimension(295, 546));
this.setLayout(null);
this.setSize(295, 546);
{
jButton1 = new JButton();
jButton1.setBounds(12, 12, 150, 30);
jButton1.setAction(abstractAction1());
jButton1.setText("推拉式指標計算");
add(jButton1);
jButton1.setVisible(true);
}
} catch (Exception e) { e.printStackTrace();
} }
public AbstractAction abstractAction1(){
if(abstractAction1 == null) {
abstractAction1 = new AbstractAction("", null) { public void actionPerformed(ActionEvent evt) { jLl.setVisible(true);
} };
}
return abstractAction1;
}
public void setVisibelfalse() { this.removeAll();
}
public void Ck_Trn(PetriNet pn){
this.pn=pn;
//找出生產規劃(推式專用)
for (int i=0;i<pn.getTransitionNumber();i++){
if(pn.getTransition(i).getTransitionName().indexOf("生產規劃")>=0){
T_I.add(pn.getTransition(i).getTransitionID());
//System.out.println(pn.getTransition(i).getTransitionName().charAt(0));
} }
//找出生產命令(含推拉)及所有暫存點的下一個轉移點 for(int i=0;i<pn.getPlaceNumber();i++){
for(int j=0;j<pn.getTransitionNumber();j++){
for(int k=0;k<pn.getTransition(j).getInputsNumber();k++){
if(pn.getTransition(j).getInput(k)==i){
// System.out.println(pn.getTransition(j).getInput(k)+" "+i);
// System.out.println(pn.getTransition(j).getTransitionName());
// System.out.println(pn.getPlace(i).getPlaceName());
double dPT=Double.valueOf(pn.getTransition(j).getTransitionName().substring(0,2)).doubleValue();
//System.out.println(dPT);
P_T.add(dPT);//找出下一個轉移點 }
}
for(int k=0;k<pn.getTransition(j).getOutputsNumber();k++){
if(pn.getTransition(j).getOutput(k)==i){
double dPT=Double.valueOf(pn.getTransition(j).getTransitionName().substring(0,2)).doubleValue();
T_P.add(dPT);
} } }
// System.out.println(T_P.get(i)+" "+pn.getPlace(i).getPlaceName()+" "+P_T.get(i));
if(pn.getPlace(i).getPlaceName().indexOf("生產命令")>=0 ){
// P_I.add(pn.getPlace(i).getPlaceID());
P_I.add(i);
}
if(pn.getPlace(i).getPlaceName().indexOf("生產命令")>=0 && Double.valueOf(T_P.get(i).toString()).doubleValue() < Double.valueOf(P_T.get(i).toString()).doubleValue()){
Ph_I.add(pn.getPlace(i).getPlaceName());
//System.out.println(Ph_I.get(i));
//P_I.add(pn.getPlace(i).getPlaceID());
} }
System.out.println("共有"+P_I.size()+"個生產命令");
for(int i=0;i<P_I.size();i++){
System.out.println(" "+pn.getPlace(Integer.parseInt(P_I.get(i).toString())).getPlaceName());
}
System.out.println(Ph_I.size()+"個推式");
for (int i =0;i<Ph_I.size();i++){
System.out.println(" "+Ph_I.get(i));
}
jLl = new JLabel();
jLl.setText("推拉式指標: "+(float)(P_I.size()-Ph_I.size())/(float)P_I.size());
jLl.setVisible(true);
jLl.setBounds(60, 60, 160, 20);
add(jLl);
} }