You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于Pulp的365天FC库存与订单优化模型编码问题

配送中心库存优化模型编码问题

变量定义

  • $x_1,x_2,...,x_{365}$:365天内从FC(配送中心)发往客户的订单量
  • $o_1,..,o_{365}$:从DC(分销中心)发往FC的补货量
  • $d_1,d_2,...,d_{365}$:每日客户需求量(参数,来自final.csv文件)
  • $l_1,l_2,...,l_{365}$:每日缺货量,定义为 $l_i=d_i-x_i$
  • $I_1,I_2,...,I_{365}$:FC的每日库存量,库存递推关系:
    • $I_1=50-x_1$(初始库存为50)
    • $I_2=I_1-x_2+o_1$
    • $I_3=I_2-x_3+o_2$
    • $I_4=I_3-x_4+o_2$(补货需1天到达)
    • ...
    • $I_{365}=I_{364}-x_{365}+o_{362}$

目标函数

最小化总成本:
$$50(x_1+\dots+x_{365}) + 2(o_1+\dots+o_{365}) + 3(l_1+\dots+l_{365}) + 1(o_1+\dots+o_{365})$$

问题描述

已使用Python Pulp库实现上述优化模型,但运行后所有变量返回零值,且未满足缺货约束,需正确的编码指导。

示例需求数据(final.csv)

days    orders
1       0
2       4
3       1
4       4
5       0
6       1
7       2
8       0
9       5
10      2
11      5

现有Pulp代码

import pandas as pd 
from pulp import LpMaximize, LpProblem, LpStatus, lpSum, LpVariable,LpMinimize,LpInteger
from pulp import LpBinary
from pulp import LpSolverDefault
import pulp 

k3=pd.read_csv("final.csv")
w2=k3["orders"]
demandStore=w2.tolist()

model = LpProblem(name="small", sense=LpMinimize)

# 每日发往客户的订单量
xs = [LpVariable("xs{}_var".format(i+1), lowBound=0, upBound=50, cat="Integer") for i in range(0,365)]  
# 每日从DC发往FC的补货量
os=  [LpVariable("os{}_var".format(i+1), lowBound=0, upBound=50, cat="Integer") for i in range(0,365)] 
# 每日缺货量
ls=  [LpVariable("ls{}_var".format(i+1), lowBound=0, upBound=50, cat="Integer") for i in range(0,365)] 
# 每日库存量
iv=[LpVariable("iv{}_var".format(i+1), lowBound=0, upBound=50, cat="Integer") for i in range(0,365)]

# 缺货约束
k=[]
for i in range(0,365):
    w=ls[i]==demandStore[i]-xs[i]
    k.append(w)
for i in range(0,365):
    model+=k[i]

# 库存递推约束
cons1=iv[0]==50-xs[0]
cons2=iv[1]==iv[0]-xs[1]+os[0]
cons3=iv[2]==iv[1]-xs[2]+os[1]
model+=cons1
model+=cons2
model+=cons3

# 发货量不超过库存量约束
k2=[]
for i in range(0,365):
    cool2=xs[i]<=iv[i]
    k2.append(cool2)
for i in range(0,365):
    model+=k2[i]

# 后续天数库存递推约束
k3=[]
for i in range(3,365):
    cool=iv[i]==iv[i-1]-xs[i]+os[i-1]
    k3.append(cool)
for i in range(0,362):
    model+=k3[i]

# 目标函数
One=pulp.lpSum([50*xs[i]+2*os[i]+60*ls[i]+1*iv[i] for i in range(0,365)])
model+=One

model.solve()

# 输出变量结果
name=[]
value=[]
for var in model.variables():
    print(var.name, " ",var.value())
    name.append(var.name)
    value.append(var.value())

内容的提问来源于stack exchange,提问作者Fernando Martinez

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 08:01:35