00001 /* #start# *********************************************************** 00002 00003 Scheduling Simulator 00004 Lehrstuhl f"ur Effiziente Algorithmen 00005 Technische Universit"at M"unchen 00006 00007 File : $Id: SPinedo.h,v 1.5 2003/01/08 18:57:11 meierb Exp $ 00008 00009 Purpose : implementation of Pinedo's algorithm for O2||C_max 00010 00011 RCS-Log: 00012 $Log: SPinedo.h,v $ 00013 Revision 1.5 2003/01/08 18:57:11 meierb 00014 added randomized release times 00015 00016 Revision 1.1.1.1 2002/12/02 22:26:19 meierb 00017 my_schedule 00018 00019 Revision 1.3 2002/11/13 18:18:29 taeubig 00020 Workarounds for using LEDA 4.4 and also the former releases 00021 00022 Revision 1.2 2002/11/10 13:32:52 taeubig 00023 namespace and header include changes 00024 00025 Revision 1.1 2002/08/29 12:59:58 taeubig 00026 Added the sources 00027 00028 Revision 1.5 2000/07/05 21:51:42 mayerh 00029 added method getLeaBibEntry and made some changes 00030 00031 Revision 1.4 2000/05/24 12:21:09 taeubig 00032 New compiler (gcc-2.95) and new Qt (2.1) 00033 Replaced "list" by "leda_list" etc. 00034 00035 Revision 1.3 2000/03/30 19:13:58 mayerh 00036 added member-functions getClassification() and getName() 00037 00038 Revision 1.2 2000/01/12 11:31:38 zoidl 00039 added javadoc comments and cosmetic changes in getDescription 00040 00041 Revision 1.1 2000/01/05 20:19:50 zoidl 00042 added Pinedo's alg 00043 00044 00045 * #end# ************************************************************* */ 00046 00047 // from: 00048 00049 // P. Brucker, Scheduling Algorithms, 1995 00050 // Chap. 6.2.1, p. 146f 00051 00052 // complexity: O(n) 00053 00054 #ifndef SPINEDO_H 00055 #define SPINEDO_H 00056 00057 // system header files 00058 00059 // project header files 00060 #include "SSchedAlgorithm.h" 00061 00064 class SPinedo : public SSchedAlgorithm 00065 { 00066 public: 00067 SPinedo() {}; 00068 virtual ~SPinedo() {}; 00069 virtual void startup(); 00070 virtual double innerLoop(const leda_list<STSysSchedEvent>& rEvents); 00071 virtual const leda_string getDescription() const; 00072 virtual const leda_string &getName() const; 00073 virtual const SClassification &getClassification() const; 00074 virtual SLeaBibEntry &getLeaBibEntry() const; 00075 private: 00076 // schedule for machine A and B 00077 leda_array< leda_list<int> > _schedule; 00078 // current position in schedule for machine A and B 00079 leda_array< leda_list_item > _pos; 00080 00081 // flag, if we have to interchange machines and sets 00082 bool _interchange; 00083 // flag, if innerLoop is called the first time 00084 bool _first; 00085 }; 00086 00087 #endif //SPINEDO_H