/*------------------------------------------------------------------------------ 1||Szum(Ci) Utemezesi fedadat megoldasa SPT ütemezési szabály alkalmazásával. Egygépes termelésiütemezési feladat. Az ütemezés célja a befejezési idők összegének minimalizálása, ezáltal az átlagos készletszint minimalizálása. SPT Shortest Processing Time (műveleti idő szerint nemcsökkenő munkasorrend) A megoldás optimális ütemtervet eredményez. -------------------------------------------------------------------------------*/ /*------------------------------------------------------------------------------ 1||Tmax Utemezesi fedadat megoldasa EDD ütemezési szabály alkalmazásával. Egygépes termelésiütemezési feladat. Az ütemezés célja a legnagyobb csúszá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 #include typedef struct{ int id; long ProcT, StartT, EndT, T, /* tardiness, csuszas */ d; /* due date, hatariido */ }T_JOB; typedef struct{ long Csum, Tmax; /* Max Tardiness */ }T_OBJF; void Simulation(T_JOB* job, int N, int* sch, long t); void Evaluation(T_JOB* job, int N, T_OBJF* obj); void print_job(T_JOB* job, int N); void print_Gantt(T_JOB* job, int N, int* sch); void SPT_rule(T_JOB* job, int N, int* sch); void EDD_rule(T_JOB* job, int N, int* sch); int main(int argc, char* argv[]) { T_JOB* job; int* sch; T_OBJF obj; int N; int i; printf("\n Kerem a munkak szamat:"); scanf("%d", &N); randomize(); job = (T_JOB*) calloc( N, sizeof(T_JOB)); for (i=0; iCsum = 0; obj->Tmax = 0; for (i=0; iCsum += job[i].EndT; job[i].T = max( 0, job[i].EndT - job[i].d); /*Tardiness*/ if (i==0) obj->Tmax = job[i].T; else if ( obj->Tmax < job[i].T ) obj->Tmax = job[i].T; } } void print_job(T_JOB* job, int N) { int i; printf("\n id \t StartT \t ProcT \t EndT"); for (i=0; i job[ sch[j] ].ProcT ) { temp = sch[i]; sch[i] = sch[j]; sch[j] = temp; } } } void EDD_rule(T_JOB* job, int N, int* sch) { /* Earliest Due Date */ int temp; int i, j; for (i=0; i job[ sch[j] ].d ) { temp = sch[i]; sch[i] = sch[j]; sch[j] = temp; } } }