/*------------------------------------------------------------------------------- P||Szum(Ci) Utemezesi fedadat megoldasa MSPT ütemezési szabály alkalmazásával. Párhuzamos gépes termelésütemezési feladat. Az ütemezés célja a munkák befejezési időpontjai összegének minimalizálása, ezáltal az átlagos készletszint minimalizálása. MSPT Modified Shortest Processing Time módosított legrövidebb műveleti idejű munka előre: Alkalmazzuk az SPT szabályt a munkák sorbarendezésére (műveleti idők alapján nemcsökkenő sorrendbe), ezután képezzünk a gépek számának (m) megfelelő hosszú csoportokat. Az első csoport munkái az elsők rendre az egyes gépeken, a második csoport munkái a másodikok rendre az egyes gépeken stb. Feltétel, hogy a munkák és a gépek számának hányadosa (n/m) egész legyen, ezt teljesíthetjük, ha bizonyos számú 0 műveleti idejű fiktív munkát hozzáadunk a rendeléscsoporthoz. A megoldás optimális ütemtervet eredményez. -------------------------------------------------------------------------------*/ #include #include #include typedef struct{ long id, SetT, ProcT, OptT, StartT, EndT; }T_JOB; int SPT(int* r, T_JOB* job, int n); long simulation(int* Sch, T_JOB* job, int n, long ref_T); int main(int argc, char* argv[]) { T_JOB* job; int n; //jobok darabszama int m; //gepek szama int i; //job futoindex int j; //gepek futoindex int ** Sch; //utemterv int *r; //rendezes SPT alapjan int *l; //jobok szama gepenkent (terheles load) int x; //fiktiv munkak szama int gep; //kivalasztott gep int munka; //kivalasztott munka long sum_EndT; //virtualis adatbazis lekerdeze randomize(); printf("\n Kerem a jobok szamat:"); scanf("%d", &n); //n erteket kap bill-rol job = (T_JOB*) calloc(n, sizeof(T_JOB) ); for (i=0; i job[ r[j] ].OptT) { //nem csokkeno OptT ertek szerint temp = r[i]; r[i] = r[j]; r[j] = temp; } return 1; } long simulation(int* Sch, T_JOB* job, int z, long ref_T) { long sum_EndT = 0; int i; job[Sch[0]].StartT = ref_T; //kezdet job[Sch[0]].EndT = job[Sch[0]].StartT + job[Sch[0]].OptT; sum_EndT = job[Sch[0]].EndT; for (i=1; i