返回最佳数量的产品以“填充”一定大小的变量

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了返回最佳数量的产品以“填充”一定大小的变量相关的知识,希望对你有一定的参考价值。

我有一个对象数组,其属性称为size。请参阅下面的示例数组。

   var products = [{"name":"product 1", "size":25},{"name":"product 2", "size":15},{"name":"product 3", "size":3}]

我正在寻找一种算法,该算法可返回最佳数量的产品以“填充”一定的尺寸。“最优”是指它返回的产品量最少,剩余尺寸最小。

例如,假设目标尺寸为72。我想退货以下产品:2 x产品11 x产品23 x产品3

数组从最大到最小顺序排列。

我已经尝试了以下操作(这是我的代码的简化版本)。现在,我只是控制台记录结果。

var totalSize = 72
products.forEach(function (arrayItem) {
  if(multiplierSize / arrayItem.size >= 1) {
    var minTimes = Math.floor(totalSize / arrayItem.size);
    var minAmount = (minTimes * arrayItem.size);
    multiplierSize -= minAmount;
    console.log(arrayItem.name + " x " + minTimes)
  }
});

以上示例无法正确填写总大小,将导致以下结果:2 x产品11 x产品22 x产品3可以向我指出正确方向的任何帮助将不胜感激。

答案

您可以尝试针对js的线性优化库,例如https://www.npmjs.com/package/simple-simplex

只需定义您的优化问题,例如Knapsack problem

以上是关于返回最佳数量的产品以“填充”一定大小的变量的主要内容,如果未能解决你的问题,请参考以下文章

如何增加 Sqlite FTS4 片段大小

创建表格的最佳方式,其中包含产品选项和版本的每种可能组合

填充到一定数量

在片段中调用 getActivity() 以使其不返回 null 的最佳做法是啥? [复制]

结构体变量字节填充

使用 jQuery 和 Node 在 DOM 上填充数据的最佳方法