如何使用PuLP实现符合特定权重模式的最大化目标函数
解决方案
首先默认你存储卡车重量、容积参数的数组为truck_params,索引和lp_trucks_items的卡车索引一一对应,即truck_params[truck_idx] = [重量上限, 容积上限],比如你举的例子对应truck_params = [[2000,30], [3000,100]]。
直接使用如下代码构建目标函数即可:
obj_expr = 0 for truck_idx, truck_item_vars in enumerate(lp_trucks_items): max_weight, max_volume = truck_params[truck_idx] # 计算当前卡车所有装载物品变量的总和 truck_load_sum = lpSum(truck_item_vars.values()) # 按规则累加目标项 obj_expr += truck_load_sum / max_weight obj_expr += truck_load_sum / max_volume # 将构建好的目标函数加入规划问题 prob += obj_expr
如果需要保持和你原有遍历df_items的逻辑兼容,也可以将truck_load_sum替换为以下写法,运行效果无差异:
truck_load_sum = lpSum([truck_item_vars[item['name']] for _, item in df_items.iterrows()])
内容的提问来源于stack exchange,提问作者Sourav Roy
相关产品推荐
相关产品推荐

