我有一个表格提供了轮胎每周的需求为0到5时的概率与累计概率,假定补给进货的订货提前期为1到3天,当前有7个库存轮胎且无订单,发出一个订单的费用为20元,每天每个轮胎的库存费为0.02元,每当不能满足一位顾客的需求时顾客离开,假定每位离开的顾客给公司带来的损失为8元,公司每周运营七天,每天24小时,帮我用存储模型确定订货量与订货点以减少总费用与平均费用,写一个python代码
时间: 2023-06-16 22:04:07 浏览: 87
首先,我们需要确定存储模型。由于需求是随机的,我们可以使用随机过程模型来描述。在这个模型中,我们将使用马尔可夫过程来描述轮胎需求的变化。具体来说,我们将使用一个具有三个状态的马尔可夫链:1表示需求少于或等于订货点,2表示需求大于订货点但小于等于订货点加订货量,3表示需求大于订货点加订货量。我们将用一个3x3的转移矩阵来描述从一个状态到另一个状态的概率。
接下来,我们需要确定成本函数。我们的成本函数包括订货成本、库存成本和缺货成本。订货成本是订货量乘以订货费用,库存成本是库存量乘以库存费用,缺货成本是每个顾客离开时的损失乘以离开的顾客数。我们的目标是最小化总成本,即订货成本加库存成本加缺货成本。
最后,我们需要确定优化算法。由于成本函数是非线性的,我们将使用遗传算法来寻找最优解。我们将使用Python的DEAP库来实现遗传算法。
下面是完整的Python代码:
相关问题
我有一个表格提供了轮胎每周的需求为0到5时的频率、概率与累计概率,假定补给进货的订货提前期为1到3天,当前有7个库存轮胎且无订单,发出一个订单的费用为20元,每天每个轮胎的库存费为0.02元,每当不能满足一位顾客的需求时顾客离开,假定每位离开的顾客给公司带来的损失为8元,公司每周运营七天,每天24小时,帮我用存储模型确定订货量与订货点以减少总费用与平均费用,写一个python代码
为了求解最优的订货量与订货点,可以使用动态规划算法,具体步骤如下:
1. 构建状态空间:每个状态表示当前库存量和距离下一次订货点的时间(即订货提前期),状态空间即为所有可能的状态的集合。
2. 确定决策集合:每个状态下,可以做出一个决策,即订货量,决策集合即为所有可能的订货量的集合。
3. 确定状态转移方程:根据当前状态和所做的决策,可以得到下一个状态以及转移的概率和费用。
4. 确定边界条件:当时间为0时,状态为结束状态,此时费用为0。
5. 使用动态规划算法求解最优策略:从结束状态开始,逐步向前推导,得到每个状态下的最优策略,最终得到总费用和平均费用。
下面是相应的Python代码实现:
写一段python代码:钢带辐射形轮胎每周补给进货,其需求量如我的电脑桌面“a.xlsx”表所示。假定:补给进货的订货提前期为1至3天,当前有7个库存轮胎且无订单,发出一个订单的费用是20元,每天每个轮胎的库存费是0.02元,每当不能满足一位顾客的需求时,顾客就离开,假定每位离开的顾客给公司带来8元的损失,公司每周运营7天,每天24小时。请确定订货量和订货点以减少总费用和平均费用。
这是一个典型的库存管理问题,可以使用经典的EOQ模型来解决。
首先,我们需要读取“a.xlsx”表中的需求量数据,可以使用pandas库完成:
```python
import pandas as pd
df = pd.read_excel('a.xlsx', sheet_name='Sheet1')
demand = df['Demand'].tolist()
```
然后,我们需要定义一些参数:
```python
# 每周运营天数
DAYS = 7
# 每天运营小时数
HOURS = 24
# 每个轮胎的库存费用
HOLDING_COST = 0.02
# 发出一个订单的费用
ORDER_COST = 20
# 每位离开的顾客对公司的损失
LOST_PROFIT = 8
# 当前库存数量
current_inventory = 7
# 订货提前期
LEAD_TIME = 3
# 订货点
reorder_point = LEAD_TIME * sum(demand) / (DAYS * HOURS) + current_inventory
```
接下来,我们可以计算最优订货量Q和最小总费用:
```python
import math
# 计算最优订货量
Q = math.sqrt(2 * LEAD_TIME * sum(demand) * ORDER_COST / HOLDING_COST)
# 修正为整数
Q = int(Q)
# 计算最小总费用
total_cost = ORDER_COST * sum(demand) / Q + HOLDING_COST * Q / 2
```
最后,我们可以模拟一周的库存变化和顾客的需求,并计算平均费用:
```python
import random
# 模拟一周的库存变化和顾客的需求
lost_profit = 0
for day in range(DAYS):
inventory = current_inventory
for hour in range(HOURS):
# 减少库存
inventory -= demand[day * HOURS + hour]
if inventory < 0:
# 不能满足顾客的需求,顾客离开
lost_profit += LOST_PROFIT
inventory = 0
# 判断是否需要订货
if inventory <= reorder_point:
# 订货
inventory += Q
current_inventory = inventory
# 计算平均费用
average_cost = total_cost / sum(demand) + HOLDING_COST * Q / 2 / sum(demand) + lost_profit / sum(demand)
```
完整代码如下:
阅读全文