代码 基于产线产能限制的 多条产线 生产 多种产品和半成品 且考虑半成品初始库存量 将月度成品和半成品需求拆分到每天,满足切换产线次数少,
时间: 2024-05-25 07:18:26 浏览: 10
生产效率高的要求。
# 输入数据
## 产能限制
line_capacity = [100, 80, 120] # 三条产线的产能限制,分别为100、80、120
## 半成品初始库存量
initial_semi_finished_goods = [50, 60, 70] # 三种半成品的初始库存量,分别为50、60、70
## 月度成品和半成品需求
monthly_demand = {
'product1': 2000,
'product2': 1500,
'semi_finished_goods1': 1000,
'semi_finished_goods2': 800,
'semi_finished_goods3': 1200
}
## 生产时间
production_days = 20 # 一个月有20个工作日
# 处理数据
## 计算每天的成品和半成品需求量
daily_demand = {}
for key, value in monthly_demand.items():
if 'semi_finished_goods' in key:
daily_demand[key] = value / production_days
else:
daily_demand[key] = value / production_days
## 计算每种半成品的每天生产量
daily_semi_finished_goods = []
for i in range(len(initial_semi_finished_goods)):
daily_semi_finished_goods.append((monthly_demand['semi_finished_goods{}'.format(i+1)] + initial_semi_finished_goods[i]) / production_days)
## 初始化每条产线的生产情况
line_production = []
for i in range(len(line_capacity)):
line_production.append({
'product1': 0,
'product2': 0,
'semi_finished_goods1': 0,
'semi_finished_goods2': 0,
'semi_finished_goods3': 0
})
## 计算每天的生产情况
for day in range(production_days):
## 按照产线产能限制,分配生产任务
for i in range(len(line_capacity)):
for key, value in daily_demand.items():
if key.startswith('product'):
if line_capacity[i] - sum(line_production[i].values()) >= value:
line_production[i][key] += value
daily_demand[key] -= value
else:
## 检查半成品库存是否充足
if i == 0:
semi_finished_goods_inventory = initial_semi_finished_goods
else:
semi_finished_goods_inventory = []
for j in range(len(daily_semi_finished_goods)):
semi_finished_goods_inventory.append(sum([line_production[k]['semi_finished_goods{}'.format(j+1)] for k in range(i)]) + initial_semi_finished_goods[j])
if semi_finished_goods_inventory[i] >= daily_semi_finished_goods[i]:
line_production[i][key] += daily_semi_finished_goods[i]
daily_demand[key] -= daily_semi_finished_goods[i]
else:
continue
## 检查是否已满足每天的需求
if sum(daily_demand.values()) == 0:
break
# 输出结果
for i in range(len(line_production)):
print('line{} production:'.format(i+1))
for key, value in line_production[i].items():
print('{}: {}'.format(key, value))
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)