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

质量与投资双约束下货运利润最大化的求解算法咨询

货运贸易双约束利润最大化问题解答

问题属性判定

  • 该问题完全属于数学优化范畴,具体是经典的二维有界整数背包问题,属于线性组合优化的典型场景,已有非常成熟的求解方案。

可用求解算法

针对你的业务场景,两类方案都可以直接使用:

  • 若商品品类在50种以内、采购上限和约束阈值都不大,可以直接用动态规划求解,时间复杂度为O(商品数*最大载重*最大投资金额),运算速度足够满足业务需求。
  • 若商品品类多、约束阈值大,更推荐用现成的整数规划求解器,比你提到的mystic库更适配这类线性优化场景,配置门槛低、求解效率高。

Python实现参考(用PuLP库,开箱即用)

PuLP是Python生态中专门用来求解线性整数规划问题的轻量库,不需要复杂的参数配置就能直接适配你的需求:

  1. 先安装依赖
pip install pulp
  1. 适配业务的代码示例
import pulp

# 业务参数定义,可直接替换为你的实际数据
# 每个商品的属性:名称、采购价、售价、单位质量、最大可采购量
goods_list = [
    {"name": "商品A", "buy_price": 10, "sell_price": 18, "unit_weight": 2, "max_purchase": 100},
    {"name": "商品B", "buy_price": 15, "sell_price": 28, "unit_weight": 3, "max_purchase": 80},
    # 可继续添加更多商品
]
truck_max_weight = 1000  # 卡车最大载重上限
total_invest_limit = 5000  # 采购总投资金额上限

# 初始化优化问题,目标为最大化利润
problem = pulp.LpProblem("FreightProfitMaximization", pulp.LpMaximize)

# 定义决策变量:每个商品的采购数量,为非负整数,上限为对应商品的最大可采购量
purchase_qty = [
    pulp.LpVariable(f"qty_{good['name']}", lowBound=0, upBound=good["max_purchase"], cat="Integer")
    for good in goods_list
]

# 添加目标函数:总利润 = 所有商品的(售价-采购价)*采购量之和
problem += pulp.lpSum([
    purchase_qty[i] * (goods_list[i]["sell_price"] - goods_list[i]["buy_price"])
    for i in range(len(goods_list))
])

# 添加约束条件
# 约束1:所有商品总重量不超过卡车最大载重
problem += pulp.lpSum([
    purchase_qty[i] * goods_list[i]["unit_weight"]
    for i in range(len(goods_list))
]) <= truck_max_weight, "WeightLimit"

# 约束2:所有商品总采购金额不超过投资上限
problem += pulp.lpSum([
    purchase_qty[i] * goods_list[i]["buy_price"]
    for i in range(len(goods_list))
]) <= total_invest_limit, "InvestLimit"

# 执行求解(关闭日志输出,有调试需求可以去掉msg参数)
problem.solve(pulp.PULP_CBC_CMD(msg=False))

# 输出结果
print("=== 最优采购方案 ===")
total_profit = 0
total_weight_used = 0
total_invest_used = 0
for idx, good in enumerate(goods_list):
    qty = int(purchase_qty[idx].value())
    if qty <= 0:
        continue
    good_profit = qty * (good["sell_price"] - good["buy_price"])
    good_weight = qty * good["unit_weight"]
    good_invest = qty * good["buy_price"]
    print(f"{good['name']}: 采购{qty}件 | 贡献利润{good_profit}元 | 占用载重{good_weight} | 占用资金{good_invest}元")
    total_profit += good_profit
    total_weight_used += good_weight
    total_invest_used += good_invest

print(f"\n=== 总计 ===")
print(f"总利润:{total_profit}元")
print(f"总载重使用:{total_weight_used}/{truck_max_weight}")
print(f"总投资使用:{total_invest_used}/{total_invest_limit}")

关于mystic库的说明

mystic更适合非线性、黑盒类的优化场景,你的需求是纯线性整数优化,不需要用到mystic,用PuLP或者Google OR-Tools这类专门的线性规划求解器效率更高,也不需要额外配置复杂的优化参数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 04:27:03