00001 /* #start# *********************************************************** 00002 00003 Scheduling Simulator 00004 Lehrstuhl f"ur Effiziente Algorithmen 00005 Technische Universit"at M"unchen 00006 00007 File : $Id: SJackson.h,v 1.4 2003/01/08 18:57:10 meierb Exp $ 00008 00009 Purpose : implementation of Jackson's algorithm for J2 | n_i<=2 | C_max 00010 00011 RCS-Log: 00012 $Log: SJackson.h,v $ 00013 Revision 1.4 2003/01/08 18:57:10 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.2 2002/11/13 18:18:29 taeubig 00020 Workarounds for using LEDA 4.4 and also the former releases 00021 00022 Revision 1.1 2002/08/29 12:59:58 taeubig 00023 Added the sources 00024 00025 Revision 1.5 2000/07/05 21:51:22 mayerh 00026 added method getLeaBibEntry and made some changes 00027 00028 Revision 1.4 2000/05/24 12:21:02 taeubig 00029 New compiler (gcc-2.95) and new Qt (2.1) 00030 Replaced "list" by "leda_list" etc. 00031 00032 Revision 1.3 2000/03/30 19:13:50 mayerh 00033 added member-functions getClassification() and getName() 00034 00035 Revision 1.2 2000/01/12 11:31:38 zoidl 00036 added javadoc comments and cosmetic changes in getDescription 00037 00038 Revision 1.1 2000/01/06 17:16:12 zoidl 00039 added Jackson's alg for J2 | n_i<=2 | C_max 00040 00041 00042 * #end# ************************************************************* */ 00043 00044 // from: 00045 // 00046 // P.Brucker, Scheduling Algorithms, 1995 00047 // Chap. 6.4.1, p.167 00048 00049 // complexity: O(n log(n)) 00050 00051 #ifndef SJACKSON_H 00052 #define SJACKSON_H 00053 00054 // system header files 00055 00056 // project header files 00057 #include "SSchedAlgorithm.h" 00058 00061 class SJackson : public SSchedAlgorithm 00062 { 00063 public: 00064 SJackson() {}; 00065 virtual ~SJackson() {}; 00066 virtual void startup(); 00067 virtual double innerLoop(const leda_list<STSysSchedEvent>& rEvents); 00068 virtual const leda_string getDescription() const; 00069 virtual const leda_string &getName() const; 00070 virtual const SClassification &getClassification() const; 00071 virtual SLeaBibEntry &getLeaBibEntry() const; 00072 private: 00073 // schedules for machine 0 and 1 00074 leda_array< leda_list<int> > _schedule; 00075 // current position in schedule for machine 0 and 1 00076 leda_array< leda_list_item > _pos; 00077 }; 00078 00079 #endif