教室-课时-课程随机动态排课时课室简单实现,python

Posted zhangphil

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了教室-课时-课程随机动态排课时课室简单实现,python相关的知识,希望对你有一定的参考价值。

教室-课时-课程随机动态排课时课室简单实现,python

根据一定的约束条件实现排课室系统。现假设一个学校有15个班级,6个教室。要求这15个班级从周二到周五这四天,每一个班级每一天都只安排上一节英语课。其中,学校的课时表上午四节(上午1,上午2,上午3,上午4),下午三节(下午1,下午2,下午3)。

(1)将上述问题抽象为数学-计算模型,则可以是,在以横坐标为教室(1,2,3,4,5,6),纵坐标为课时(1,2,3,4,5,6,7)组合形成的6X7平面坐标图,随机放入15个班级,当然,这些班级落入到坐标轴的点不能重复(重复意味着可是课室安排重叠-冲突)。

(2)在(1)中放入15个班级后,相当于一张二维坐标平面图形成,但只是一天的,所以循环4次(四天),即形成最终周二到周五的四天完整课时课室排表。

import random

times = ['上午1', '上午2', '上午3', '上午4', '下午1', '下午2', '下午3']
rooms = ['教室1', '教室2', '教室3', '教室4', '教室5', '教室6']
classes = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]

ROOM = 'room'
TIME = 'time'
CLASS = 'class'
CHOOSE = 'choose'
WEEK_DAY = 'week_day'


def class_sort(week_day):
    everyday = []
    for i in range(len(rooms)):
        for j in range(len(times)):
            p = ROOM: rooms[i], TIME: times[j]
            everyday.append(p)

    seed = [i for i in range(30)]

    ids = sorted(random.sample(seed, 15))
    grade = 1
    for id in ids:
        everyday[id][CLASS] = grade
        grade = grade + 1

        everyday[id][CHOOSE] = True
        everyday[id][WEEK_DAY] = week_day

    for ed in everyday:
        try:
            if ed[CHOOSE]:
                print(ed, end='')
        except:
            pass
    print()


if __name__ == '__main__':
    for i in range(4):
        class_sort(i + 2)

输出:

'room': '教室1', 'time': '上午3', 'class': 1, 'choose': True, 'week_day': 2'room': '教室1', 'time': '下午2', 'class': 2, 'choose': True, 'week_day': 2'room': '教室1', 'time': '下午3', 'class': 3, 'choose': True, 'week_day': 2'room': '教室2', 'time': '上午3', 'class': 4, 'choose': True, 'week_day': 2'room': '教室2', 'time': '下午1', 'class': 5, 'choose': True, 'week_day': 2'room': '教室2', 'time': '下午3', 'class': 6, 'choose': True, 'week_day': 2'room': '教室3', 'time': '上午1', 'class': 7, 'choose': True, 'week_day': 2'room': '教室3', 'time': '上午3', 'class': 8, 'choose': True, 'week_day': 2'room': '教室3', 'time': '上午4', 'class': 9, 'choose': True, 'week_day': 2'room': '教室4', 'time': '上午1', 'class': 10, 'choose': True, 'week_day': 2'room': '教室4', 'time': '上午2', 'class': 11, 'choose': True, 'week_day': 2'room': '教室4', 'time': '上午4', 'class': 12, 'choose': True, 'week_day': 2'room': '教室4', 'time': '下午2', 'class': 13, 'choose': True, 'week_day': 2'room': '教室4', 'time': '下午3', 'class': 14, 'choose': True, 'week_day': 2'room': '教室5', 'time': '上午2', 'class': 15, 'choose': True, 'week_day': 2
'room': '教室1', 'time': '上午1', 'class': 1, 'choose': True, 'week_day': 3'room': '教室1', 'time': '上午2', 'class': 2, 'choose': True, 'week_day': 3'room': '教室1', 'time': '下午1', 'class': 3, 'choose': True, 'week_day': 3'room': '教室1', 'time': '下午2', 'class': 4, 'choose': True, 'week_day': 3'room': '教室1', 'time': '下午3', 'class': 5, 'choose': True, 'week_day': 3'room': '教室2', 'time': '上午1', 'class': 6, 'choose': True, 'week_day': 3'room': '教室2', 'time': '下午1', 'class': 7, 'choose': True, 'week_day': 3'room': '教室3', 'time': '下午1', 'class': 8, 'choose': True, 'week_day': 3'room': '教室3', 'time': '下午2', 'class': 9, 'choose': True, 'week_day': 3'room': '教室4', 'time': '上午1', 'class': 10, 'choose': True, 'week_day': 3'room': '教室4', 'time': '上午4', 'class': 11, 'choose': True, 'week_day': 3'room': '教室4', 'time': '下午1', 'class': 12, 'choose': True, 'week_day': 3'room': '教室4', 'time': '下午2', 'class': 13, 'choose': True, 'week_day': 3'room': '教室4', 'time': '下午3', 'class': 14, 'choose': True, 'week_day': 3'room': '教室5', 'time': '上午2', 'class': 15, 'choose': True, 'week_day': 3
'room': '教室1', 'time': '上午1', 'class': 1, 'choose': True, 'week_day': 4'room': '教室1', 'time': '上午3', 'class': 2, 'choose': True, 'week_day': 4'room': '教室1', 'time': '上午4', 'class': 3, 'choose': True, 'week_day': 4'room': '教室1', 'time': '下午3', 'class': 4, 'choose': True, 'week_day': 4'room': '教室2', 'time': '上午1', 'class': 5, 'choose': True, 'week_day': 4'room': '教室2', 'time': '上午4', 'class': 6, 'choose': True, 'week_day': 4'room': '教室2', 'time': '下午1', 'class': 7, 'choose': True, 'week_day': 4'room': '教室3', 'time': '上午2', 'class': 8, 'choose': True, 'week_day': 4'room': '教室3', 'time': '上午3', 'class': 9, 'choose': True, 'week_day': 4'room': '教室3', 'time': '下午1', 'class': 10, 'choose': True, 'week_day': 4'room': '教室3', 'time': '下午2', 'class': 11, 'choose': True, 'week_day': 4'room': '教室3', 'time': '下午3', 'class': 12, 'choose': True, 'week_day': 4'room': '教室4', 'time': '上午4', 'class': 13, 'choose': True, 'week_day': 4'room': '教室4', 'time': '下午2', 'class': 14, 'choose': True, 'week_day': 4'room': '教室4', 'time': '下午3', 'class': 15, 'choose': True, 'week_day': 4
'room': '教室1', 'time': '上午2', 'class': 1, 'choose': True, 'week_day': 5'room': '教室1', 'time': '下午2', 'class': 2, 'choose': True, 'week_day': 5'room': '教室2', 'time': '上午2', 'class': 3, 'choose': True, 'week_day': 5'room': '教室2', 'time': '上午3', 'class': 4, 'choose': True, 'week_day': 5'room': '教室2', 'time': '上午4', 'class': 5, 'choose': True, 'week_day': 5'room': '教室2', 'time': '下午2', 'class': 6, 'choose': True, 'week_day': 5'room': '教室2', 'time': '下午3', 'class': 7, 'choose': True, 'week_day': 5'room': '教室3', 'time': '上午1', 'class': 8, 'choose': True, 'week_day': 5'room': '教室3', 'time': '上午4', 'class': 9, 'choose': True, 'week_day': 5'room': '教室3', 'time': '下午2', 'class': 10, 'choose': True, 'week_day': 5'room': '教室4', 'time': '上午1', 'class': 11, 'choose': True, 'week_day': 5'room': '教室4', 'time': '上午2', 'class': 12, 'choose': True, 'week_day': 5'room': '教室4', 'time': '下午2', 'class': 13, 'choose': True, 'week_day': 5'room': '教室4', 'time': '下午3', 'class': 14, 'choose': True, 'week_day': 5'room': '教室5', 'time': '上午1', 'class': 15, 'choose': True, 'week_day': 5

因为是随机生成,所以每次跑出的结果不相同:

'room': '教室1', 'time': '上午3', 'class': 1, 'choose': True, 'week_day': 2'room': '教室1', 'time': '上午4', 'class': 2, 'choose': True, 'week_day': 2'room': '教室1', 'time': '下午2', 'class': 3, 'choose': True, 'week_day': 2'room': '教室2', 'time': '上午1', 'class': 4, 'choose': True, 'week_day': 2'room': '教室2', 'time': '下午2', 'class': 5, 'choose': True, 'week_day': 2'room': '教室3', 'time': '上午1', 'class': 6, 'choose': True, 'week_day': 2'room': '教室3', 'time': '上午2', 'class': 7, 'choose': True, 'week_day': 2'room': '教室3', 'time': '上午3', 'class': 8, 'choose': True, 'week_day': 2'room': '教室3', 'time': '上午4', 'class': 9, 'choose': True, 'week_day': 2'room': '教室3', 'time': '下午1', 'class': 10, 'choose': True, 'week_day': 2'room': '教室4', 'time': '上午1', 'class': 11, 'choose': True, 'week_day': 2'room': '教室4', 'time': '上午4', 'class': 12, 'choose': True, 'week_day': 2'room': '教室4', 'time': '下午3', 'class': 13, 'choose': True, 'week_day': 2'room': '教室5', 'time': '上午1', 'class': 14, 'choose': True, 'week_day': 2'room': '教室5', 'time': '上午2', 'class': 15, 'choose': True, 'week_day': 2
'room': '教室1', 'time': '上午2', 'class': 1, 'choose': True, 'week_day': 3'room': '教室1', 'time': '上午3', 'class': 2, 'choose': True, 'week_day': 3'room': '教室1', 'time': '上午4', 'class': 3, 'choose': True, 'week_day': 3'room': '教室2', 'time': '上午2', 'class': 4, 'choose': True, 'week_day': 3'room': '教室2', 'time': '下午1', 'class': 5, 'choose': True, 'week_day': 3'room': '教室2', 'time': '下午3', 'class': 6, 'choose': True, 'week_day': 3'room': '教室3', 'time': '上午1', 'class': 7, 'choose': True, 'week_day': 3'room': '教室3', 'time': '上午3', 'class': 8, 'choose': True, 'week_day': 3'room': '教室3', 'time': '下午2', 'class': 9, 'choose': True, 'week_day': 3'room': '教室4', 'time': '上午1', 'class': 10, 'choose': True, 'week_day': 3'room': '教室4', 'time': '上午3', 'class': 11, 'choose': True, 'week_day': 3'room': '教室4', 'time': '上午4', 'class': 12, 'choose': True, 'week_day': 3'room': '教室4', 'time': '下午2', 'class': 13, 'choose': True, 'week_day': 3'room': '教室5', 'time': '上午1', 'class': 14, 'choose': True, 'week_day': 3'room': '教室5', 'time': '上午2', 'class': 15, 'choose': True, 'week_day': 3
'room': '教室1', 'time': '下午1', 'class': 1, 'choose': True, 'week_day': 4'room': '教室1', 'time': '下午2', 'class': 2, 'choose': True, 'week_day': 4'room': '教室2', 'time': '上午1', 'class': 3, 'choose': True, 'week_day': 4'room': '教室2', 'time': '上午3', 'class': 4, 'choose': True, 'week_day': 4'room': '教室2', 'time': '上午4', 'class': 5, 'choose': True, 'week_day': 4'room': '教室2', 'time': '下午1', 'class': 6, 'choose': True, 'week_day': 4'room': '教室2', 'time': '下午3', 'class': 7, 'choose': True, 'week_day': 4'room': '教室3', 'time': '上午3', 'class': 8, 'choose': True, 'week_day': 4'room': '教室3', 'time': '上午4', 'class': 9, 'choose': True, 'week_day': 4'room': '教室3', 'time': '下午1', 'class': 10, 'choose': True, 'week_day': 4'room': '教室4', 'time': '上午1', 'class': 11, 'choose': True, 'week_day': 4'room': '教室4', 'time': '上午3', 'class': 12, 'choose': True, 'week_day': 4'room': '教室4', 'time': '下午1', 'class': 13, 'choose': True, 'week_day': 4'room': '教室4', 'time': '下午3', 'class': 14, 'choose': True, 'week_day': 4'room': '教室5', 'time': '上午2', 'class': 15, 'choose': True, 'week_day': 4
'room': '教室1', 'time': '上午2', 'class': 1, 'choose': True, 'week_day': 5'room': '教室1', 'time': '上午3', 'class': 2, 'choose': True, 'week_day': 5'room': '教室1', 'time': '上午4', 'class': 3, 'choose': True, 'week_day': 5'room': '教室2', 'time': '上午1', 'class': 4, 'choose': True, 'week_day': 5'room': '教室2', 'time': '上午2', 'class': 5, 'choose': True, 'week_day': 5'room': '教室2', 'time': '上午3', 'class': 6, 'choose': True, 'week_day': 5'room': '教室2', 'time': '上午4', 'class': 7, 'choose': True, 'week_day': 5'room': '教室2', 'time': '下午2', 'class': 8, 'choose': True, 'week_day': 5'room': '教室2', 'time': '下午3', 'class': 9, 'choose': True, 'week_day': 5'room': '教室3', 'time': '上午1', 'class': 10, 'choose': True, 'week_day': 5'room': '教室3', 'time': '上午4', 'class': 11, 'choose': True, 'week_day': 5'room': '教室3', 'time': '下午1', 'class': 12, 'choose': True, 'week_day': 5'room': '教室4', 'time': '上午1', 'class': 13, 'choose': True, 'week_day': 5'room': '教室4', 'time': '上午4', 'class': 14, 'choose': True, 'week_day': 5'room': '教室5', 'time': '上午1', 'class': 15, 'choose': True, 'week_day': 5

以上是关于教室-课时-课程随机动态排课时课室简单实现,python的主要内容,如果未能解决你的问题,请参考以下文章

排座椅

排座椅

排座椅

P1056 排座椅

codevs 1147 排座椅

luogu P1056 排座椅