/*------------------------------------------------------------------------------- A termelésinformatikai alapjai c. tantrárgy GEIAK150-B Miskolci Egyetem, Alkalmazott Informatikai Intézeti Tanszék Dr. Kulcsár Gyula, egyetemi docens TIA gyakorlat 01 Egy eroforrást tartalmazó gyártócella működésének szimulációja. TIA gyakorlat 02 Egy eroforrást tartalmazó gyártócella ütemezése. 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. ------------------------------------------------------------------------------- */ #include #include typedef struct { int id; long ProcT; long StartT; long EndT; } T_JOB; void generate_data( T_JOB* job, int NJ ); void create_schedule(int* s, int NJ); void simulation( T_JOB* job, int NJ, int* s, long t0); void print_execution_data( T_JOB* job, int NJ, int* s); void Evaluate( T_JOB* job, int NJ, double* obj_f ); void print_obj_f( double* obj_f ); void SPT_rule( T_JOB* job, int NJ, int* s); int main(int argc, char* argv[]) { //int NM; //number of machines //egyetlen gep dolgoyik int NJ; //number of jobs T_JOB* job; //strukturara mutato pointer int i; int* s; //utemtervre mutato pointer double obj_f[3]; //celfuggvenyek tombje printf("\n Demo program egygepes gyartocella szimulaciojara"); printf("\n Munkak szama = "); scanf("%d", &NJ); //mem. foglalas job = (T_JOB*) calloc(NJ, sizeof(T_JOB) ); //dinamikus tomb s = (int*) calloc(NJ, sizeof(int) ); //dinamikus tomb //adatok generalasa generate_data( job, NJ ); //utemezes create_schedule(s, NJ); //simulacio simulation( job, NJ, s, 0); //nulla ref. ido //vegrehajtasi eredmeny print_execution_data( job, NJ, s); //evaluate(); Evaluate( job, NJ, obj_f ); //celfuggvenyek megjelenitese print_obj_f( obj_f ); //SPT optimalis eredmenyt ad SPT_rule( job, NJ, s); simulation( job, NJ, s, 0); //nulla ref. ido print_execution_data( job, NJ, s); Evaluate( job, NJ, obj_f ); print_obj_f( obj_f ); free( job ); //mem. felszabaditas free( s ); printf("\n Kesz! Bill. lenyomasra kilep"); getch(); return 0; } //--------------------------------------------------------------------------- void generate_data( T_JOB* job, int NJ ) { //Valos kornyezetben adatbazisbol lekerdezheto int i; for ( i=0; i job[ s[j] ].ProcT ) index = j; if ( index != i ) { //csere temp = s[index]; s[index] = s[i]; s[i] = temp; } } }