/*------------------------------------------------------------------------------- 1. F2|permut|max(Ci) Utemezesi fedadat megoldasa Johnson-algoritmus alkalmazásával. Kétgépes egyutas előzés nélküli termelésiütemezési feladat. Az ütemezés célja a legkésőbbi befejezési időpont minimalizálása, ezáltal a teljes rendeléscsoport átfutási idejének minimalizálása. A megoldás optimális ütemtervet eredményez. 2. F|permut|max(Ci) Utemezesi fedadat megoldasa CDS-algoritmus alkalmazásával. Többgépes egyutas előzés nélküli termelésiütemezési feladat. Az ütemezés célja a legkésőbbi befejezési időpont minimalizálása, ezáltal a teljes rendeléscsoport átfutási idejének minimalizálása. CDS-algoritmus: A Campbell-Dudek-Smith algoritmus a többgépes feladatot kétgépes problémákra vezeti vissza. Az algoritmus az eredeti m gépes feladatból m-1 darab mesterséges kétgépes problémát generál úgy, hogy az egymást követő gépek lesznek a kétgépes feladat gépei. A kétgépes feladatok egyenként megoldhatók a Johnson-algoritmussal. Kiválasztva közülük a teljes feladatra vonatkozó átfutási idő szempontjából a legjobbat, az lesz az m-gépes probléma megoldása. A megoldás nem optimális mert a feladat NP-hard, de jó közelítő ütemtervet eredményez. -------------------------------------------------------------------------------*/ #include #include #include typedef struct{ long id, * SetT, * ProcT, * OptT, * StartT, * EndT; }T_JOB; long simulation(int* S, T_JOB* job, int n, int m, long ref_T); void job_print(int* Sch, T_JOB* job, int n, int m); void sim_data_print(int* Sch, T_JOB* job, int n, int m); void Johnson_ald(int* Sch, T_JOB* job, int n, int x, int y ); 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 Johnson alg. elott int x, y; //elso masodik Johnson long Cmax; //maximalis befejezesi ido long Cbest; //kereses soran legjobb celfv ertek int *Sch_best; //kereses soran talalt legjobb megoldas //virtualis adatbazis lekerdeze randomize(); printf("\n Kerem a jobok szamat:"); scanf("%d", &n); //n erteket kap bill-rol printf("\n Kerem a gepek szamat:"); scanf("%d", &m); //m erteket kap bill-rol job = (T_JOB*) calloc(n, sizeof(T_JOB) ); randomize(); for (i=0; i Cmax ) { Cbest = Cmax; for(i=0; i tj) { temp = r[i]; r[i] = r[j]; r[j] = temp; } } b=0; l=n-1; for(i=0; i