/*-------------------------------------------------------------------------------- P||Cszum 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 #include typedef struct{ int id; long pt; long st; long et; }T_JOB; int main(int argc, char* argv[]) { int M, N, i, j, m, temp; T_JOB* job; int* r; //rendezett SPT int** l; //hozzarendeles es sorrend int * db; //gepek terhelese int x; //fiktiv munkak szama int k; long szumC; clrscr(); printf("\n Egszeru pelda P utemezesi modellre Szum(Ci) celfuggveny eseten"); printf("\n Kerem a munkak szamat:"); scanf("%d", &N); printf("\n Kerem a gepek szamat:"); scanf("%d", &M); job = (T_JOB*) calloc(N, sizeof(T_JOB)); r = (int*) calloc(N, sizeof(int)); x = M-N%M; k = (N+x)/M; //memter fogl. load-nak l = (int**) calloc(M, sizeof(int*)); for (i=0; i job[r[j]].pt ) { temp=r[i]; r[i]=r[j]; r[j]=temp; } //2. lepes: szetosztas for (i=0; i