供应链-库存管理之补货计算模型(二)

一.用AI造数据

在上篇excel推演模型的基础上,本篇尝试用AI造一批数据,用AI写python代码做数据清洗,来实现这个补货计算模型。

1.1 期初库存表

本来希望AI能直接给出excel表格的,尝试了deepseek,豆包,Kimi,结果都不能给出excel数据表。只能按照操作步骤转换。

不过AI直接给出了数据生成代码,复制出来运行一遍也挺方便。

python 复制代码
import pandas as pd
import random

data = {
    "样品编号": [f"A.S{str(i).zfill(4)}" for i in range(1, 1001)],
    "月初库存": [random.randint(1, 1000) for _ in range(1000)],
    "月份": ["M"] * 1000
}

df = pd.DataFrame(data)
df.to_excel("本月期初库存表.xlsx", index=False)
print("Excel文件已生成!")
1.2 需求预测表

这个也只能看看出的数据是不是自己想要的,最好要给出参考文件。

同样,也给出了生成数据的代码。

python 复制代码
import pandas as pd
import random

# 从"本月期初库存表"中随机抽取样品编号(假设有1000个编号)
sample_ids = [f"A.S{str(i).zfill(4)}" for i in range(1, 1001)]

# 生成400条数据
data = []
for month in ["M", "M+1", "M+2", "M+3"]:
    for _ in range(100):
        row = {
            "样品编号": random.choice(sample_ids),
            "月销售预测": random.randint(100, 300),
            "月份": month,
            "安全库存天数": 45,
            "月均天数": 30
        }
        data.append(row)

df = pd.DataFrame(data)
df.to_excel("需求预测表.xlsx", index=False)
print("生成完成!")

最后生成的数据质量,还不错。描述越清晰,数据越准!

二.用AI辅助写代码

试着起了个开头,让deepseek读excel里面的逻辑写代码,比较惊喜的是,它会读取excel里面的公式,根据公式的逻辑写部分代码。但总体上,代码需要修改,不能直接使用。

三.规整代码

修改完的代码如下。整体来看,这个过程用AI还是很省事的。关键是要把每个开始状态,想要的结果,想实现的功能跟AI说清楚。

ini 复制代码
import pandas as pd
import numpy as np

## 读取文件路径
#文件路径
path = 'C:/Users/Desktop/产销存补货模型PSI/'
path_jg = 'C:/Users/Desktop/产销存补货模型PSI/'

da_xuqiu = pd.read_excel(path+"数据源.xlsx", sheet_name="需求预测表")
da_kucun = pd.read_excel(path+"数据源.xlsx", sheet_name="本月期初库存表")

# 1.筛选M月数据并计算补货需求
def calculate_replenishment(demand, inventory):
    # 筛选M月数据
    m_demand = demand[demand['月份'] == 'M'].copy()
    
    # 合并库存数据
    m_data = pd.merge(m_demand, inventory, on='样品编号', how='left')
    
    # 计算关键指标
    m_data['日均需求数量'] = m_data['月销售预测'] / m_data['月均天数']
    m_data['M满足周转所需库存'] = m_data['月销售预测'] + m_data['安全库存天数'] * m_data['日均需求数量']
    m_data['M月末库存'] = np.maximum(m_data['月初库存'] - m_data['月销售预测'],0)
    m_data['M月底需补货量'] = np.maximum(m_data['M满足周转所需库存'] - m_data['M月末库存'], 0)
    
    return m_data

m_result = calculate_replenishment(da_xuqiu, da_kucun)
m_result = m_result[['样品编号', '月份_x' , 'M满足周转所需库存','月初库存', 'M月末库存', 'M月底需补货量']]
m_result = m_result.rename(columns={'月份_x': 'M月','月初库存':'M月初库存'})

# 2.筛选M+1月数据并计算补货需求,M+1月初库存,等于该样品编码上月的【M月末库存】+【M月底需补货量】
def calculate_replenishment_a(demand, shangyue,str_m,str_m1):#需求,上月数据,,str_m='M',str_m1='M+1'
    
    m1_demand = demand[demand['月份'] == str_m1].copy()
  #上月数据
  # 获取M月计算结果作为M+1月的期初库存
    m1_initial_inv = shangyue[['样品编号', str_m+'月末库存', str_m+'月底需补货量']].copy()
    m1_initial_inv[str_m1+'月初库存'] = m1_initial_inv[str_m+'月末库存'] + m1_initial_inv[str_m+'月底需补货量']
    
    # 合并库存数据
    m1_data = pd.merge(m1_demand, m1_initial_inv, on='样品编号', how='left')
    
    # 计算关键指标
    m1_data['日均需求数量'] = m1_data['月销售预测'] / m1_data['月均天数']
    m1_data[str_m1+'满足周转所需库存'] = m1_data['月销售预测'] + m1_data['安全库存天数'] * m1_data['日均需求数量']
    m1_data[str_m1+'月末库存'] = np.maximum(m1_data[str_m1+'月初库存'] - m1_data['月销售预测'],0)
    m1_data[str_m1+'月底需补货量'] = np.maximum(m1_data[str_m1+'满足周转所需库存'] - m1_data[str_m1+'月末库存'], 0)
    
    return m1_data

m1_result = calculate_replenishment_a(da_xuqiu, m_result,'M','M+1')
m1_result = m1_result[['样品编号','月份','M+1满足周转所需库存','M+1月初库存', 'M+1月末库存', 'M+1月底需补货量']]
m1_result = m1_result.rename(columns={'月份': 'M+1月'})


# 3.筛选M+2月数据并计算补货需求,M+2月初库存,等于该样品编码上月的【M+1月末库存】+【M+1月底需补货量】
m2_result = calculate_replenishment_a(da_xuqiu, m1_result,'M+1','M+2')
m2_result = m2_result[['样品编号','月份','M+2满足周转所需库存','M+2月初库存', 'M+2月末库存', 'M+2月底需补货量']]
m2_result = m2_result.rename(columns={'月份': 'M+2月'})


# 4.筛选M+3月数据并计算补货需求,M+32月初库存,等于该样品编码上月的【M+2月末库存】+【M+2月底需补货量】
m3_result = calculate_replenishment_a(da_xuqiu, m2_result,'M+2','M+3')
m3_result = m3_result[['样品编号','月份','M+3满足周转所需库存','M+3月初库存', 'M+3月末库存', 'M+3月底需补货量']]
m3_result = m3_result.rename(columns={'月份': 'M+3月'})


# 5.合并da_xuqiu,m_result,m1_result,m2_result,m3_result
m_result = m_result.rename(columns={'M月':'月份' , 'M满足周转所需库存':'满足周转所需库存','M月初库存':'月初库存', 'M月末库存':'月末库存','M月底需补货量':'月底需补货量'})
m1_result = m1_result.rename(columns={'M+1月':'月份','M+1满足周转所需库存':'满足周转所需库存','M+1月初库存':'月初库存', 'M+1月末库存':'月末库存', 'M+1月底需补货量':'月底需补货量'})
m2_result = m2_result.rename(columns={'M+2月':'月份','M+2满足周转所需库存':'满足周转所需库存','M+2月初库存':'月初库存', 'M+2月末库存':'月末库存', 'M+2月底需补货量':'月底需补货量'})
m3_result = m3_result.rename(columns={'M+3月':'月份','M+3满足周转所需库存':'满足周转所需库存','M+3月初库存':'月初库存', 'M+3月末库存':'月末库存', 'M+3月底需补货量':'月底需补货量'})
all_results = pd.concat([m_result, m1_result, m2_result, m3_result], axis=0)

final_result = pd.merge(da_xuqiu,all_results,on=['样品编号', '月份'],how='left')

四.最终结果

相关推荐
程序员杰哥7 分钟前
Chrome浏览器+Postman做接口测试
自动化测试·软件测试·python·测试工具·测试用例·接口测试·postman
ZCXZ12385296a9 分钟前
YOLO11-ASF-P2模型实现蚕桑业健康状态识别完整教程
python
gang_unerry13 分钟前
量子退火与机器学习(4): 大模型 1-bit 量子化中的 QEP 与 QQA 准量子退火技术
人工智能·python·机器学习·量子计算
青瓷程序设计25 分钟前
【交通标志识别系统】python+深度学习+算法模型+Resnet算法+人工智能+2026计算机毕设项目
人工智能·python·深度学习
啥都想学点39 分钟前
关于制作技术视频讲解的问卷调查
python
喵手40 分钟前
Python爬虫实战:博物馆官网的“展览预告/正在热展”栏目,抓取展览名称、精确展期、具体展厅位置以及票务/预约规则(附CSV导出)!
爬虫·python·爬虫实战·零基础python爬虫教学·博物馆信息采集·采集展览预告/正在热展等·采集数据csv导出
喵手41 分钟前
Python爬虫实战:电商实体消歧完整实战 - 从混乱店铺名到标准化知识库的工程化实现,一文带你搞定!
爬虫·python·算法·爬虫实战·零基础python爬虫教学·同名实体消除·从混乱店铺名到标准化知识库
aluluka1 小时前
Emacs折腾日记(三十六)——打造个人笔记系统
笔记·python·emacs
黎子越1 小时前
python相关练习
java·前端·python
小白学大数据1 小时前
实测数据:多进程、多线程、异步协程爬虫速度对比
开发语言·爬虫·python·php