返回首页

使用 LIFO 的 0.3 秒 3D 货物装箱器

基于 Django 的服务使用 MaxRects 算法实现 3D 货物装箱,考虑 LIFO 和物理。使用 Three.js 可视化,在 0.3 秒内处理 400 个 SKU。适合零售,带 Excel 集成。

闪电般快速的 3D 车队装箱:400 个箱子 0.3 秒
Advertisement 728x90

3D货物装箱0.3秒完成:MaxRects算法结合LIFO与全旋转

一个Django网络服务解决了卡车、集装箱和货车车队的3D货物装箱问题。该算法在0.19–0.3秒内处理400多个SKU物品,考虑了LIFO、90%支撑面积和6轴旋转。与Three.js的接口实时可视化结果,支持Excel上传和手动输入。

从Telegram机器人到完整平台的演进

项目始于优化引擎:0.4秒解决10,000点的旅行商问题,不到1秒打包复杂形状如三叶形。一个Telegram机器人接受带尺寸的JSON并输出坐标,但零售业需要一个网络界面。

关键产品需求:

Google AdInline article slot
  • 车队和货物的双面板界面。
  • 带验证的Excel解析。
  • 使用Three.js的交互式3D可视化。

技术栈:Python/Django、Docker中的PostgreSQL、Three.js前端。优先考虑速度和实用性——LIFO比完美密度更重要。

3D MaxRects算法:物理优先于数学

改进的3D MaxRects处理货物空间中的自由平行六面体列表,避免全坐标枚举。向量化实现了8辆车队0.19–0.3秒的性能。

物理可行性参数:

Google AdInline article slot
  • 全旋转(6个投影): 长物品(2400毫米)在尺寸允许时尝试垂直或边缘位置。
  • 支撑面积90%: 箱子至少90%面积支撑在下层,消除不稳定方案。
  • LIFO顺序: 考虑现实仓库的卸载顺序。

市场对比:竞争对手需要几分钟或几小时,常忽略LIFO和物理约束。

架构:Django、Docker和可扩展性

后端基于Docker容器中的Django + PostgreSQL。Nginx + Gunicorn(3个工作者)确保容错性。443端口的HTTPS绕过企业防火墙。在8 GB服务器上,处理400个SKU时平均内存使用率为29%。

通过Django Auth授权:数据按用户隔离,计算历史记录在ORM中。每个用户仅看到自己的车队和货物。

Google AdInline article slot

界面:灵活输入和微调

双面板布局分隔车队(右侧)和货物(左侧)。车队:尺寸、载重能力、数量。货物:大小、重量、数量、参数(LIFO、堆叠限制)。

输入选项:

  • 手动表单进行调整。
  • 带验证的批量Excel上传。

优化复选框:

  • 倾斜: 允许/限制易碎货物的旋转。
  • 车队优化: 优先填满大型车辆以减少行程。

可视化和结果导出

0.19–0.3秒的计算输出Three.js的3D场景。按SKU颜色编码,交互式旋转,LIFO和支撑检查。导出:PDF报告或带X、Y、Z坐标的Excel。

生产部署

Gunicorn带3个工作者 + Nginx反向代理。Docker确保自主性。测试:98%覆盖率,多用户负载下的稳定性。

关键要点

  • 400个SKU和8辆车队0.19–0.3秒的速度。
  • 物理约束:LIFO、90%支撑、6轴旋转。
  • 物流界面:Excel、3D可视化、数据隔离。
  • 生产栈:Django、Docker、Nginx/Gunicorn。
  • 可扩展性:低资源消耗。

— Editorial Team

Advertisement 728x90

继续阅读