价格-需求模型论文复现

价格-需求模型论文复现

背景描述

给定N个商品集合,确定包含K组商品价格的价格集合以及每个商品的库存约束后,希望通过观察T=1,2,…,t时的价格-需求关系推测出T=t+1时满足库存约束的利润最大价格K

需求

主要涉及到三个算法:BZ,GP-TS,GP-PTS

Daniel Ringbeck, Dynamic Pricing & Learning: An Application of Gaussian Process Regression

image-20201029125537209

按照论文中给出的步骤实现相应算法并按照论文中的参数设置进行仿真实验

实现过程

  1. 定义价格集合price,库存约束I,初始化需求集合demand
  2. 调用sklearn中GaussianProcess训练高斯过程模型,预测price中每个价格k对应的需求demand
  3. 将模拟出的需求demand及其对应价格以及库存约束作为输入,输入到线性规划模型中,求出当前最优的价格
  4. 更新价格集合和需求集合
  5. 绘制结果图

其中比较关键的点在于:

  • 调用GaussianProcess进行高斯过程模型的训练
  • 线性规划求解
  • 各个数组的形状对应

结果

图1:数值模拟的结果,与论文结果基本一致,收敛

image-20201029130206792

图2:基于某酒店数据集的真实数据仿真,由于数据集的数据问题导致模型最终结果偏离正常值,但是趋势也是基本收敛,说明了算法的实现还是没问题的。

image-20201029130049196

部分代码

for t in range(T): 
    if t <= interval:
    # 建立高斯过程模型
        GPList = GaussProcess(price_GP, demand_GP)
	# 根据GP,对每个价格进行采样
    demand_temp = np.zeros((K, N))  # 存放GPs采样后的需求矩阵
    prob_price = []     # 存放M次价格抽样的结果
    prob_demand = []    # 存放M次价格抽样后的需求结果
    for m in range(M):
        for k in range(K):
            for idx, GPs in enumerate(GPList):
                GPs_demand = GPs(price[k].reshape(1, -1))
                demand_temp[k, idx] = max(GPs_demand, 0)
        idx = np.argmax(LinPro(price, demand_temp, a_coeff, c))
        prob_price.append(price[idx])
        prob_demand.append(np.maximum(np.minimum(RealDemandFunc(price[idx], t, I), c), np.zeros((N,))))
        if 0 not in prob_demand[-1]:
            ratio_temp.append(demand_temp[idx] / prob_demand[-1])
    if ratio_temp != []:
        ratio.append(np.array(ratio_temp).mean(axis=0))
    # 更新用于构建GPs的价格-需求数组
    price_GP = np.concatenate((price_GP, np.array(prob_price)), axis=0)
    demand_GP = np.concatenate((demand_GP, np.array(prob_demand)), axis=0)

GitHub地址:https://github.com/Staaaying/record-repo/tree/main/price-demand-model

如有daixie需要或者相关问题交流可加vx:NumNull404,email:2044174075@qq.com

欢迎交流讨论

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
complex-yolov4-pytorch是一个基于PyTorch实现的复杂目标检测算法,其复现过程涉及到模型结构、参数设置以及训练测试流程等多个方面。 首先,复现complex-yolov4-pytorch需要详细了解论文中提出的模型结构和损失函数等细节,然后根据论文中的描述在PyTorch框架下构建模型,包括网络层的搭建、激活函数的选择等,并且要注意模型参数的初始化和正则化操作。 其次,对于训练数据的处理也是复现过程中的重要环节,需要根据论文中提供的数据集或自己的数据集进行预处理,包括数据增强、标签生成等操作,以及构建数据加载器并进行合适的数据分割。 接着,需要根据论文中给出的训练策略和超参数设置来实现模型的训练过程,包括学习率的调度、优化器的选择、损失函数的定义等,同时要注意在训练过程中记录和保存模型参数和训练日志。 最后,针对复现模型的性能进行评估和测试,可以使用论文中提出的评价指标来计算模型在测试集上的表现,并根据实际需求模型进行调优和改进。 总之,复现complex-yolov4-pytorch是一个综合性的任务,需要对目标检测算法有深入的理解,并具备较高的PyTorch编程能力和实践经验。在复现过程中要注重细节,对比论文中的描述和代码实现进行验证,并根据实际情况进行适当的调整和优化,以获得更好的模型性能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值