Pyomo建模:如何处理按月索引的产品集构建问题
产品分配优化问题:Pyomo中月度产品集合的构建
场景背景
仓库存储的产品需分配给多家零售店,每家零售店有月度需求需满足,目标是向每家店收取尽可能高的价格。拥有零售店集合和产品集合,但产品仅能在特定月份使用。
核心目标:最大化avgPrice(其余变量可自行处理)
avgPrice指门店支付的月度产品价格的平均值,假设门店全年有需求,因此除以12:每月为n家门店分配产品,计算每家门店的总支付价格,再求这些值的平均值。
数学模型关键定义
- (x_{i,j}):产品i分配给门店n的数量
- 已知参数:(r_n)(门店风险系数)、(\pi_n)(门店当前利润)、(p_n)(门店当前支付价格)、(demand_n)(门店需求)
- (P_t):t月可用产品集合,存储在按月份索引的字典结构中
现有数据结构
需求字典
demand_dict = {('store_1', 'jan'): 237.2, ('store_1', 'feb'): 239, ('store_1', 'mar'): 216, ('store_1', 'apr'): 119, ('store_2', 'may'): 624} # 包含50+门店,每家有12个月的需求
已通过该字典创建门店集合:store_set = demand_dict.keys()
月份集合
mon_set = ['jan', 'feb', ..., 'dec']
产品字典
每个月份对应产品的可用数量和单价:
prod_dict['jan'] = {'Product Amount': {123: 50, 456: 31, 789: 50, 101: 31, 102: 70, 103: 33, 104: 30, 105: 14}, 'Unit price': {123: 9, 456: 9, 789: 7.6, 101: 7.2, 102: 6.4, 103: 5.5, 104: 5.2, 105: 5.1} prod_dict['feb'] = {'Product Amount': {200: 50, 201: 31, 202: 50, 203: 31, 204: 70, 205: 33, 206: 30, 207: 14}, 'Unit price': {200: 9, 201: 9, 202: 7, 203: 7, 204: 6, 205: 5, 206: 5, 207: 5}
核心问题
每个产品按ID索引,可分配给各门店(只要不超过可用数量,该约束可自行处理),但由于产品集按月索引,不知道如何在Pyomo中创建对应的产品集合。
注:该问题实际为二次规划(QP),因风险系数(r_n)包含变量,并非简单分配高价产品即可。
内容的提问来源于stack exchange,提问作者BenBernke
相关产品推荐
相关产品推荐

