新高考十二种选科情况下,5时间段考试的考室安排探索3.0版2---寻求不规则积木放到26个盒子里的最优放置办法(最后算出只有一解)

本文探讨了新高考中不同选科组合考生的考室安排问题,旨在确保每个考室最多有两种选科组合,并尽可能减少空位。通过Python进行分析,最终发现只有一种解决方案,即使每个考室只安排一种组合。这一发现对高考考务管理提供了独特视角。
摘要由CSDN通过智能技术生成

有了数据源接下来就是把各种选择各种组合的考生安排到考室,使之达到每个考室最多有两种组合且有公共选科的考生,甚至只有一种组合的考生.
分析需要各种选科的人数表,考室容量表:
这是考场容量表:容量的含义是该考室最多容纳人数,可以少,意味着40人的考室有富于的话 可以当成32和28人的考室使用,32人考室也是可以当成28人考室使用.地点 就不完整截取了.
考场考室容量表
这是各种组合的选择人数:
这是某一次的六种组合的考生数
考虑组合化生:
temp = 40i+32i2+28*i3
dx1 = temp -151
anpai=[i,i2,i3]
这样dx1 被定义为 此种安排下第一种组合富余的座位,空座位.
很明显 dx1必须要在合理范围内,最大值为:总座位数-总考生数
因为太繁琐了,这里就写出第一种组合的dx求法和对应的安排列表,
if temp - na > 0 and temp - na < 19:
这个条件被我定义为合理的安排条件,能安排下,但是空座位不超过总的空座位数.

subs = ['化生', '化政', '化地', '生政', '生地', '政地']
    # 尝试六种 不组合 排考室
    dx1 = []
    anpai1 = []
    for i in range(20):
        for ii in range(6):
            for iii in range(3):
                temp = 40 * i + 32 * ii + 28 * iii
                if temp - na > 0 and temp - na < 19:
                    dx1.append(temp - na)
                    anpai1.append([i, ii, iii])
    anpais = []
    dxs = []
    dxs.append(dx1)
    anpais.append(anpai1)

把每一种合理的可能安排用两种量来描述: dx表示 空座位
anpai[]表示具体使用的各类考室数量.,他们是成对出现的,所以在总体的列表中的偏移量是一致的.
为了更好的观察是否正确,把这些做成了一个新的df表

data1 = pd.DataFrame({
   'dx': dxs[0], "项目安排": anpais[0]})
    print(data1, '项目1')

每个组合,都这样处理一遍,就获得了dxs[],以及每个dx对应的anpai[]列表.这些安排都符合所有考室只有一种组合,现在只要满足另一个要求:考室数量不能超过每种类型的最大值.
dxs[0]是一个列表 表示组合1的空座位;
那么dxs[0][i1] +dxs[2][i2]+dxs[3][i3] +dxs[4][i4]+dxs[5][i5] +dxs[6][i6]
再把i1—i6分别在各自的范围内遍历起来,就能获得所有的安排自由搭配下空座位的总数.再把这个总数 <总座位数-总考生数,那么就可以缩小范围.

    for i1 in range(len(data1.dx))
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值