时间表生成器

编程入门 行业动态 更新时间:2024-10-25 02:23:20
本文介绍了时间表生成器的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

Assalam o alaikum! 这里的问题是 我想生成有10个科目的学院时间表,让xi = 5 xii = 5假设每个8个房间在xi和xii中4个科目有4个学分,2个在一周内有3个学分。 如何使用遗传算法的所有功能来解决这个问题,即健身,人口和健身功能的生存等。板块形式的c ++ OOps !!!!!! 现在我确定问题z清楚 我不知道我如何使用遗传算法??????? ??????? 请回复所以我以良好的方式完成我的项目并且耗时很少

Assalam o alaikum ! here the Question is I wann to generate time table of College having 10 subject and let xi = 5 xii= 5 suppose 8 rooms each in xi and xii 4 subject have 4 credits and 2 have 3 credits in a week. how this can be solved using all functions of Genetic Algoritham i.e Fitness ,population ,and survival of fitness function etc on the plate form of a c++ OOps!!!!!! now im sure the question z clear im not getting how i use Genetic Algoritm ?????????????? please reply so that i complete my project in agood way and in little time consumption

推荐答案

查看此链接 projectabstracts/2068/class-time-table-generation-in-cpp.html [ ^ ]但请注意,您的老师会很好地了解此链接。 以下是其他一些可以做的事情。研究 www.google.co.uk/#q=timetable+generator + c%2B%2B [ ^ ] 和 www.google.co.uk/#q=genetic+algorithm [ ^ ] See this link projectabstracts/2068/class-time-table-generation-in-cpp.html[^] but be aware that your teacher will know this link very well. Here are some other places to do the research www.google.co.uk/#q=timetable+generator+c%2B%2B[^] and www.google.co.uk/#q=genetic+algorithm[^]

这里是时间表生成器的算法.. 希望它能帮到你 Here an algo for Time table generator.. hope it will help you #include string.h #include stdbool.h void print(); struct course { char name[20]; char subject[20][15]; int creadit[20]; int room; int totsub; int ctchr[20]; int allsub; int breaks; }; struct course co[20]; /***********************************************/ struct teach { char name[20]; int sub[11]; int cors[11]; int totsub; int allsub; struct { struct { bool busy; } busy[10]; } busy[10]; }; struct teach th[20]; /***********************************************/ struct room { char room[10]; int allsub; struct { struct { bool busy; } busy[10]; } busy[10]; struct { struct { bool lunch; } lunch[10]; } lunch[2]; };struct room ro[20]; /***********************************************/ struct tmpsub { struct { struct { char tmpsub[20]; } tmpsub[20]; } tmpsub[20]; } tmpsub[20]; /***********************************************/ struct tmptchr { struct { struct { char tmptchr[20]; } tmptchr[20]; } tmptchr[20]; } tmptchr[20]; /***********************************************/ struct fisub { struct { struct { char fisub[20]; } fisub[20]; } fisub[20]; } fisub[20]; /***********************************************/ struct fitch { struct { struct { char fitch[20]; } fitch[10]; } fitch[20]; } fitch[20]; /***********************************************/ long int crs,tch,room,dys,lects,tmptch,tmproom,set,settmp,done; /***********************************************/ void input() { int i,j,k; printf("enter total days,lectures,cources,teachers,rooms"); scanf("%d %d %d %d %d",&dys,&lects,&crs,&tch,&room); //rooms... for(i=0;i<room;i++)> { printf("enter room name %d ",i); scanf("%s",ro[i].room); } //tchrs for(i=0;i<tch;i++)> { printf("enter teachr name %d ",i); scanf("%s",th[i].name); } //courses for(i=0;i<crs;i++)> { printf("enter course name "); scanf("%s",co[i].name); printf("enter total subjects ");//less than m x n scanf("%d",&co[i].totsub); for(j=0;j<co[i].totsub;j++)> { printf("enter subject name "); scanf("%s",co[i].subject[j]); printf("enter subject creadit "); scanf("%d",&co[i].creadit[j]); co[i].allsub+=co[i].creadit[j];//less than m x m printf("select a teacher for subject %d",j); for(k=0;k<tch;k++)> printf(" %d.%s\t",k,th[k].name); scanf("%d",&tmptch); co[i].ctchr[j]=tmptch; th[tmptch].sub[th[tmptch].totsub]=j; //not used yet th[tmptch].cors[th[tmptch].totsub]=i;//not used yet th[tmptch].totsub++; // less than m x n th[tmptch].allsub+=co[i].creadit[j]; if(th[tmptch].allsub>lects*dys-dys)//check total sub limit for a teacher { printf("more than limited sub to a teacher"); getch(); exit(0); } } printf("enter a room for this course\n"); for(j=0;j<room;j++)> { printf(" room %d %s",j,ro[j].room); } scanf("%d",&tmproom); co[i].room=tmproom; ro[tmproom].allsub+=co[i].allsub; if(ro[tmproom].allsub>lects*dys-dys)//check total room sub limit { printf("more than limited sub in a room"); getch(); exit(0); } } } /************************/ void save(int x) { int i,j,k; for(i=0;i<=x;i++) for(j=0;j<lects;j++)> for(k=0;k<dys;k++)> { strcpy(fitch[i].fitch[j].fitch[k].fitch,tmptchr[i].tmptchr[j].tmptchr[k].tmptchr); strcpy(fisub[i].fisub[j].fisub[k].fisub,tmpsub[i].tmpsub[j].tmpsub[k].tmpsub); } } void generate(int i,int j,int k) { int x; if((i<crs)&&(set><crs))> { if(((j==(lects/2)-1 && (ro[co[i].room].busy[j+1].busy[k].busy==false)) && (ro[co[i].room].lunch[0].lunch[k].lunch==false)) || (j==(lects/2) && (ro[co[i].room].busy[j-1].busy[k].busy==true) && (ro[co[i].room].lunch[1].lunch[k].lunch==false)) ) { strcpy(tmptchr[i].tmptchr[j].tmptchr[k].tmptchr," "); strcpy(tmpsub[i].tmpsub[j].tmpsub[k].tmpsub,"lunch"); if(j==(lects/2)-1) ro[co[i].room].lunch[0].lunch[k].lunch=true; else ro[co[i].room].lunch[1].lunch[k].lunch=true; co[i].breaks++; generate(i+(j+(k+1)/dys)/lects,(j+(k+1)/dys)%lects,(k+1)%dys); if(!done) { if(j==(lects/2)-1) ro[co[i].room].lunch[0].lunch[k].lunch=false; else ro[co[i].room].lunch[1].lunch[k].lunch=false; co[i].breaks--;} } for(x=0;x<co[i].totsub;x++)> { if((th[co[i].ctchr[x]].busy[j].busy[k].busy==false) && (ro[co[i].room].busy[j].busy[k].busy==false) && (co[i].creadit[x]>0) && (co[i].allsub<=((dys*lects)-co[i].breaks))) { strcpy(tmptchr[i].tmptchr[j].tmptchr[k].tmptchr,th[co[i].ctchr[x]].name); strcpy(tmpsub[i].tmpsub[j].tmpsub[k].tmpsub,co[i].subject[x]); co[i].creadit[x]--; th[co[i].ctchr[x]].busy[j].busy[k].busy=true; ro[co[i].room].busy[j].busy[k].busy=true; if(j==(lects-1) && k==(dys-1)) set++; if(settmp<set)> { settmp=set; save(i); } generate(i+(j+(k+1)/dys)/lects,(j+(k+1)/dys)%lects,(k+1)%dys); if(!done) { if(j==(lects-1) && k==(dys-1)) //backtrack start set--; co[i].creadit[x]++; th[co[i].ctchr[x]].busy[j].busy[k].busy=false; ro[co[i].room].busy[j].busy[k].busy=false; tmptchr[i].tmptchr[j].tmptchr[k].tmptchr[0]='\0'; tmpsub[i].tmpsub[j].tmpsub[k].tmpsub[0]='\0'; } } } //breaks************ if(co[i].allsub<((lects*dys)-(co[i].breaks))) { co[i].breaks++; strcpy(tmptchr[i].tmptchr[j].tmptchr[k].tmptchr,"Nill"); strcpy(tmpsub[i].tmpsub[j].tmpsub[k].tmpsub,"brk"); if(j==(lects-1) && k==(dys-1)) set++; if(settmp<set)> { settmp=set; save(i); //print(); } generate(i+(j+(k+1)/dys)/lects,(j+(k+1)/dys)%lects,(k+1)%dys); if(!done) { if(j==(lects-1) && k==(dys-1)) //backtrack start set--; co[i].breaks--; } } } else { done=1; printf("..............................done..........................\n"); } } /***************************************/ void print() { int i,j,k; for(i=0;i<crs;i++)> { printf("\t"); for(j=0;j<dys;j++)> printf("\t day %d\t",j+1); printf("\n............................................................................\n"); for(j=0;j<lects;j++)> { printf(" lecture %d ",j+1); for(k=0;k<dys;k++)> { //printf("%s \t",fitch[i].fitch[j].fitch[k].fitch);//tmptchr[i].tmptchr[j].tmptchr[k].tmptchr); printf(" %9s\t",fisub[i].fisub[j].fisub[k].fisub);// //printf("%s ",tmpsub[i].tmpsub[j].tmpsub[k].tmpsub); } printf("\n "); for(k=0;k<dys;k++)> { printf(" %9s\t",fitch[i].fitch[j].fitch[k].fitch);//tmptchr[i].tmptchr[j].tmptchr[k].tmptchr); //printf("\t %9s ",fisub[i].fisub[j].fisub[k].fisub);// //printf("%s ",tmpsub[i].tmpsub[j].tmpsub[k].tmpsub); } printf("\n\n"); }printf("\n\n"); } } int main() { input(); generate(0,0,0); print(); return 0; }

更多推荐

时间表生成器

本文发布于:2023-11-29 08:19:52,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1645847.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:生成器   时间表

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!