我正在为生产优化做这个程序。我工作很好,给我正确的结果。有许多工作需要在许多机器上进行。
现在我想给机器增加一个工作速度,每台机器以不同的速度工作。我已经给了作业一个持续时间,程序通过random.randint添加到作业中。
机器的工作速度也需要在0,5和1,5的速度之间随机变化,这样,如果作业的持续时间为2,但机器的工作速度为0,5,则需要4个持续时间才能完成,如果机器的工作速度为1,5,则只需要1个持续时间
我只是不知道如何才能把这个添加到我的程序中。目前我的程序是这样的
import random
random.seed(1)
number_of_jobs = 30 #define the number of Jobs
number_of_machines = 3 #define the number of machines
class Job(object):
def __init__(self, duration, duedate, done): #characteristics for the jobs
self.duration = duration
self.duedate = random.randint(12,22)
self.done = done
all_jobs = [] #list of all jobs
for i in range(number_of_jobs):
all_jobs.append(Job(random.randint(1,3),{},False)) # defines characteristics for all jobs
all_jobs.sort(key = lambda x: x.duedate, reverse = False)
print("\nAusgangssituation: \n")
for job in all_jobs:
print(job.duration, job.duedate, job.done)
class Machine(object):
def __init__(self, workload, workspeed): #characteristics of the machines
self.workload = workload
print("") #add space for clear separation
all_machines =[] #list of all machines
for i in range(number_of_machines):
all_machines.append(Machine(0)) #inizialisation for all machines workload to 0
for machine in all_machines:
print(machine.workload)
##### here starts the loop #####
for job in all_jobs:
iterations = 0
while iterations < number_of_machines:
if job.duration + all_machines[iterations].workload <= job.duedate:
job.done = True
all_machines[iterations].workload = all_machines[iterations].workload + job.duration
iterations = 0
all_machines.sort(key = lambda x: x.workload, reverse = False)
break
else:
iterations = iterations + 1
continue
#### Results #####
print("\nErgebnis: \n")
for job in all_jobs:
print(job.duration, job.duedate, job.done)
print("")
for machine in all_machines:
print(machine.workload)
possible_jobs = sum(job.done == True for job in all_jobs)
print("\nDie Anzahl der pünktlichen Jobs ist:",possible_jobs,"\n")
我想我应该在机器类中添加一个类似这样的东西: self.workspeed = random.randint(0.5,1.5)
但是我不知道我怎么能告诉程序连接随机的工作速度,这样一个特定的工作可以在不同的时间内完成,这取决于它是在机器上生产的。
一些想法甚至解决方案将不胜感激。
提前谢谢!
暂无答案!
目前还没有任何答案,快来回答吧!