/*------------------------------------------------------------------------------ TIA 3. 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. TIA 4. gyakorlat ová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 typedef struct{ int id; //azonosito: 0,1, ... long ProcT; //muveleti ido long StartT; //kezdeti ido long EndT; //befejezesi ido long d; //hatarido long L; //keses } T_JOB; //munka void Simulation( T_JOB* job, int NJ, int* s, long t0); void Evaluate( T_JOB* job, int NJ, double* obj_val); void print_obj_val( double* obj_val); void print_job_Gantt(T_JOB* job, int NJ, int* s); void SPT_rule(T_JOB* job, int NJ, int* s); void EDD_rule(T_JOB* job, int NJ, int* s); int main(int argc, char* argv[]) { T_JOB* job; //munkak strukturavektora int NJ; //munkak szama int i; //munka indexe int* s; //utemterv double obj_val[4]; //celfuggvenyek printf("\n Egygepes gyartorendszer iranyitasa"); printf("\n Munkak szama="); scanf("%d", &NJ); //betolti az erteket //ellenorzes nincs job = (T_JOB*) calloc(NJ, sizeof(T_JOB) ); //vektor s = (int*) calloc(NJ, sizeof(int) ); //vektor //input adatok generalasa //valos kornyezetben ezek a term.info. rsz-bol jonnek 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; for( i=0; i job[ s[j] ].d ) //Earliest Due Date index = j; if ( index != i ) { //csere temp = s[ index ]; s[ index ] = s[i]; s[ i ] = temp; } } }