Sorry 班级应当是 班级 Group[1] - Group[NG]NG 而 不是 NC, 否则和约束部分的混了

解决方案 »

  1.   

    room有没有大小:人数限制;班级的人数
      

  2.   


    现在还没到决定是否用数据库,或者用什么语言实现先给这个问题建立一个模型,然后再考虑怎么解决楼上说 Room 大小限制到的确是一个约束
      

  3.   

    Room还有类型限制:语音室、电教室、电脑室、体育课用操场
      

  4.   

    我作过排课系统,给你点我的相法吧,解决是用的遗传算法,不过排课在数学是已经证明是NP难问题,没有什么最优解
    如果想做的灵活,教师,教室,年纪
    这就是3个类,
    1。教师的TDATE[10,7];[1,1]表示周1 的1课时,教师的课程冲突,还有就是所有的[0,i]存放当天的课程数目,教师的课程分配问题。
    2。专业课程和公共课程的问题不用一起解决因为公共课程的定植要晚于专业课程(很多大学是不变除外)
    3。关于ROOM,可以用一个共享变量,比方操场的就要用croom[i,j]=5;5就代表可以5个年纪上
    这些是关于如何避免冲突的一部分,其实我认为程序的主要是线形搜索的,遗传酸法的体现主要是为了
    避免进入死循环,和局部的调整优化
      

  5.   

    做过但不成功!
       教室还要考虑是不是在同一校区,不能第一节课在一校区上,而第二节课在二校区上,不然不管学生还是老师都要迟到了。
       总的来说,排课有点向博弈,我用的是穷举法来做,可惜就算我不惜运行时间也不能很好的解决学校的要求。排课也是一个最大匹配的问题,但不能用图论里的 Hall 算法,因为排课太复杂了,也不可能就用数据库就搞定,数据库只能检测是否有冲突,但不能解决冲突。