• 沒有找到結果。

第六章 結論與未來發展

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);

} }

相關文件