用python生成随机块
我需要创建一个时间表的自动生成器 我的想法是生成n个时间表,然后根据我的条件给它打分。得分高的时间表获胜 我有以下变量: 学科 教授 列表项 教室 每个专业都有一个代码和每周需要的小时数。 让我们调用小时数块 所以我有一个块数组用python生成随机块,python,timetable,Python,Timetable,我需要创建一个时间表的自动生成器 我的想法是生成n个时间表,然后根据我的条件给它打分。得分高的时间表获胜 我有以下变量: 学科 教授 列表项 教室 每个专业都有一个代码和每周需要的小时数。 让我们调用小时数块 所以我有一个块数组 array = [5,4,3,2,1]; 这个数组表示在本例中我们有5个规程,以及它们每周需要的小时数。第一个专业需要5小时,第二个专业需要4小时,第三个专业需要3小时,第四个专业需要2小时,第五个专业需要1小时 我的时间表是从周一到周五的5x5二维数组,我需要将学科
array = [5,4,3,2,1];
这个数组表示在本例中我们有5个规程,以及它们每周需要的小时数。第一个专业需要5小时,第二个专业需要4小时,第三个专业需要3小时,第四个专业需要2小时,第五个专业需要1小时
我的时间表是从周一到周五的5x5二维数组,我需要将学科数组分配到5x5数组中。所以我需要它能产生的所有解决方案
例如:
array = [5,4,3,2,1];
我可以把第一项训练安排在周一5小时,第二项训练安排在周二4小时,第三项和第四项训练安排在周三3小时2小时,最后一项训练安排在周二1小时。大概是这样的:
discipline = {A,B,C,D,E};
array = {5,4,3,2,1};
ABC
ABC
ABC
ABD
AED
这只是一个可能的解决方案,但我需要所有的组合,并将这些组合保存在一个数组中
我已经做了一个函数,将5x5时间表数组转换成我理解的代码,反之亦然。因此,每次生成解决方案时,我都将代码保存到一个数组中
基本上我想要一个包含5x5时间表数组代码的数组,但我被困在这一部分
对不起,我的英语不好。我想可能是这样的
def greedy_bag(items,limit):
weighted_items = sorted(items,key=lambda x:x["cost"],reverse = True)
items_in_bag = []
for item in weighted_items:
if item["cost"] < limit:
items_in_bag.append(item)
limit -= item["cost"]
return items_in_bag
disiplines = "ABCDE"
costs = [5,4,3,2,1]
items = [{"item":d,"cost":c} for d,c in zip(disiplines,costs)]
schedule = []
while items:
bagged_items = greedy_bag(items,5)
if not bagged_items:
break
for item in bagged_items:
items.remove(item)
schedule.append(bagged_items)
print schedule
我想那会有用的。。。虽然如果您有任何不合适的物品,它会断裂…是否有每天最长工作时间?一门学科的时间可以在几天内分配吗?如果是,增量是多少?是的,可以拆分。您所说的项目和限制是什么意思?一个项目包括一个专业,以及该专业的成本小时数。。。。limit是一个给定的行李或日程日最多可以包含5个的限制,例如…我有一个错误:“teste.py”:缩进错误:未缩进与任何外部缩进级别不匹配,第8ahh行返回行中有一个空间过多。。。现在修好它