/*------------------------------------------------------------------------------ TIA 2. gyakorlat Egygépes termelésütemezési feladat modellezése és megoldása. Az ütemezés célja a befejezési idők összegének minimalizálása, ezáltal az átlagos készletszint minimalizálása. Az SPT (Shortest Processing Time) műveleti idő szerint nemcsökkenő munkasorrend optimális ütemtervet eredményez. Továbbfejlesztés: Határidős munkák utemezése a legnagyobb késés minimalizálása érdekében. Egygépes termelésiütemezési feladat. Minden munkának saját határideje van. Az ütemezés célja a legnagyobb késés minimalizálása. EDD Earliest Due Date (határidő szerint nemcsökkenő munkasorrend) A megoldás optimális ütemtervet eredményez. -------------------------------------------------------------------------------*/ #include #include #include #define N_OBJF 4 typedef struct { int id; //azonosito long ProcT; //muveleti ido long StartT; //inditasi idopont long EndT; //befejezesi idopont long d; //hatarido long L; //keses } T_JOB; void Simulation( T_JOB* job, int NJ, int* s, long ref_time); void Evalute( T_JOB* job, int NJ, double* objf); void Print_objf( double* objf); void SPT_rule( T_JOB* job, int NJ, int* s); void EDD_rule( T_JOB* job, int NJ, int* s); void Print_Sch( T_JOB* job, int NJ); int main ( ) { time_t t; int NJ; //number of jobs int i; //job index int* s; //utemterv double objf[N_OBJF]; //statikus T_JOB* job; srand( (unsigned) time(&t) ); printf("\n Demo utemeyes egy eroforrasra Csum celfv-vel"); printf("\n Kerem a munkak szamat:"); scanf("%d", &NJ); //nincs ellenorzes job = (T_JOB*) calloc(NJ, sizeof(T_JOB) ); //strukturatomb s = (int*) calloc(NJ, sizeof(int) ); //input generalasa for ( i=0; i job[ s[j] ].ProcT ) index = j; if ( index != i ) { //csere temp = s[index]; s[index] = s[i]; s[i] = temp; } } } void EDD_rule( T_JOB* job, int NJ, int* s) { int i,j, index, temp; //inic. for ( i=0; i job[ s[j] ].d ) index = j; if ( index != i ) { //csere temp = s[index]; s[index] = s[i]; s[i] = temp; } } } void Print_Sch( T_JOB* job, int NJ) { int i; printf("\n id \t Start \t ProcT \t End \t d \t L"); for ( i=0; i