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

如何匹配32个纸箱与8个托盘的重量组合以完成分配?

问题:纸箱与托盘的重量匹配分配方案

现有8个装载了纸箱的托盘,不清楚每个托盘具体装了哪些纸箱。已知信息:

  • 共32个纸箱,每个纸箱的重量已知
  • 共8个托盘,每个托盘去除自身重量后的装载重量已知(附重量截图:托盘重量、32个纸箱各自重量)

尝试过Excel的Solver功能,但只能找到单个托盘的组合;用SUMPRODUCT查找组合也只能逐个匹配托盘,无法找到满足所有托盘要求的完整分配方案。

可行的解决思路

优化Excel Solver的配置

不要仅针对单个托盘设置求解目标,而是构建多约束的整数规划模型:

  • 建立一个32行×8列的二进制矩阵:单元格值为1表示对应纸箱属于该托盘,0则不属于
  • 为每个托盘设置重量约束:用SUMPRODUCT计算该列与纸箱重量列的乘积和,约束其等于对应托盘的装载重量
  • 为每个纸箱设置唯一性约束:约束每行的数值和等于1,确保每个纸箱仅被分配到一个托盘
  • 运行Solver时选择整数规划求解模式,即可尝试找到满足所有条件的完整分配方案

使用专业组合优化工具

如果Excel Solver处理大规模组合问题效率较低或无法求解,可以用Python的专业库来建模:

  • 推荐使用pulp或ortools库,这类工具更擅长处理多约束的整数规划问题
  • 核心建模逻辑:
    1. 定义二进制变量x[i,j],表示第i个纸箱是否分配到第j个托盘
    2. 添加约束:每个纸箱只能属于一个托盘(sum(x[i,j] for j in 托盘集合) = 1,覆盖所有纸箱)
    3. 添加约束:每个托盘的总重量等于目标值(sum(x[i,j] * 纸箱重量[i] for i in 纸箱集合) = 托盘目标重量[j],覆盖所有托盘)
    4. 调用求解器获取分配结果

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 19:04:57