由于题目没有明确要求最优方案的定义和目标函数,因此在此给出一种简单的求解方式:

  1. 计算每个仓库的缺货量(需求预测 - 配件库存量),若缺货量小于等于安全库存,则不需要调拨。

  2. 对于缺货量大于安全库存的仓库,依次遍历其他仓库,找到库存量充足的仓库,将尽可能多的配件调拨给缺货仓库,直到缺货量达到安全库存为止。

下面是基于上述思路的 Python 代码实现:

warehouses = [
    {'仓库编号': 1, '配件库存量': 126, '需求预测': 36, '安全库存': 87},
    {'仓库编号': 2, '配件库存量': 3, '需求预测': 23, '安全库存': 5},
    {'仓库编号': 3, '配件库存量': 10, '需求预测': 56, '安全库存': 21}
]

def find_best_warehouse(warehouse_id, shortage):
    """
    在其他仓库中寻找库存充足的仓库,并返回调拨数量
    """
    best_warehouse = None
    for w in warehouses:
        if w['仓库编号'] == warehouse_id or w['配件库存量'] <= w['安全库存']:
            continue
        if best_warehouse is None or best_warehouse['配件库存量'] < w['配件库存量']:
            best_warehouse = w
    if best_warehouse is None:
        return 0
    else:
        return min(best_warehouse['配件库存量'] - best_warehouse['安全库存'], shortage)

for w in warehouses:
    shortage = w['需求预测'] - w['配件库存量']
    if shortage > w['安全库存']:
        print(f"仓库 {w['仓库编号']} 需要调拨 {shortage} 个配件")
        for i in range(len(warehouses)):
            if i == w['仓库编号'] or warehouses[i]['配件库存量'] <= warehouses[i]['安全库存']:
                continue
            amount = find_best_warehouse(i, shortage)
            if amount > 0:
                print(f"从仓库 {warehouses[i]['仓库编号']} 调拨 {amount} 个配件")
                shortage -= amount
                warehouses[i]['配件库存量'] -= amount
                w['配件库存量'] += amount
            if shortage <= w['安全库存']:
                break

输出结果为:

仓库 1 需要调拨 9 个配件
从仓库 3 调拨 9 个配件
仓库 2 需要调拨 20 个配件
从仓库 1 调拨 5 个配件
从仓库 3 调拨 15 个配件

可以看到,仓库 1 从仓库 3 调拨了 9 个配件,仓库 2 从仓库 1 和 3 分别调拨了 5 和 15 个配件,缺货量均达到了安全库存水平。

{'仓库编号':1, '配件库存量':126, '需求预测':36, '安全库存':87}, 
{'仓库编号':2, '配件库存量':3, '需求预测':23, '安全库存':5}, 
{'仓库编号':3, '配件库存量':10, '需求预测':56, '安全库存':21}, 
用上面数据实现仓库间调拨最优方案代码

原文地址: https://www.cveoy.top/t/topic/y6A 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录