algorithm - 计算prestashop中承载模块的多个产品的盒子尺寸

标签 algorithm prestashop

我目前正在为 Kuroneko 开发一个载体模块这是一家门到门的日本送货公司。该载体连同重量一起考虑了盒子的大小。但是它不使用音量,那太容易了。它使用三个维度(高度、重量和深度)的总和。

如果您只有一种产品需要装箱,这仍然很容易,但是当您需要装箱 2 种产品时会怎样?假设您有两个维度 (x1,y1,z1) 和 (x2,y2,z2) 的乘积,您如何以保持 X+Y+Z 最小的方式计算最终框大小 X、Y、Z?

这是我的临时解决方案,但请告诉我是否有更好的计算方法: 令 m1 为第一个产品的最小尺寸,min(x1,y1,z1) 和 m2 为第二个产品。您必须考虑产品在箱子中的旋转,以便以最佳方式适合它们,从而为两种产品定义新的尺寸 nx、ny、nz。假设 nx = m。如果 m = x,则 ny = y,nz = z,否则,如果 m=y,则,ny = x,nz = z,否则,如果 m = z,ny = y,nz = x。总框大小因此变为 2*nx,max(ny1,ny2),max(nz1,nz2)。

但据我所知,我不认为这种方法适用于超过 2 种产品。有什么想法吗?

最佳答案

  • 回答演示 Here .
  • 您可以查看代码here (我添加了 Canvas 来可视化)

逻辑:

  1. 查找总体积 (w*h*d)[+(w*h*d)..]

  2. 收集所有可能的宽度高度和深度值,将每个值从低到高排序

  3. 找到宽度的所有可能总和排列,然后是高度,然后是宽度

    3a。 示例:宽度范围 1、2、3 的总和排列将为 1、2、3、4、5、6

    3b。我们需要这个,因为基于示例 (3a.),宽度的最终值绝不能为 1.5

  4. 根据 (3.) 计算出的排列找到宽度、高度和深度的所有可能组合

  5. 存储总体积等于或大于 (1.) 的总体积的所有组合

    5a。这是因为最终体积不可能小于实际体积 (1.)

    5b。对于大于 (1.) 的体积,这意味着这是死空间。

  6. 排序所有组合从 (5.) 升序,第一个结果将是最准确的 Volume
  7. 最准确的体积可能仍然有不同的尺寸

    7a。 示例:第 16 卷可以是 2x2x4 或 4x4x1 或 2x1x8 或 16x1x1

    7b。 每个维度的 W+H+D 之和,最小的和将是更准确的维度。

    7c。来自 (7a.) 的示例 2+2+4 = 8, 4+4+1 = 9, 2+1+8 = 11, 16+1+1 = 18 .... 所以我们的脚本会选择 2 x 2 x 4

关于algorithm - 计算prestashop中承载模块的多个产品的盒子尺寸,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12338431/

相关文章:

php - 如何获取prestashop中的所有属性

php - 如何在 Prestashop 中将类别页面设置为主页

c++ - 用 C++ 设计 map

algorithm - 最低成本路径,目的地未知

android - 在Android中实现SWT(Stroke Width Transform)算法

php - 在 Presatshop : i made PHP page for create TXT file. 在本地它可以工作,但在服务器上不写

algorithm - 计算一组被随机子集覆盖的概率

algorithm - 图像压缩 - 离散余弦变换后的锯齿形

javascript - Prestashop:修改mailalert模块,使产品数量更加可见

templates - 如何在 prestashop 的 smarty 翻译中使用 html 标签?