装箱问题(Bin Packing)算法可视化

装箱问题(Bin Packing)算法可视化
几何画板及绘图内容加载中,请稍等……
2021-01-18 00:22
该范例用于演示装箱问题中“如何在若干容器(箱子/bin)里放入不同重量(或物品)以使装箱数量或利用率达到最优”,并通过图形与分组信息直观看到不同策略的效果。核心数学概念包括优化思想、容量约束(bin capacity)与权重集合的组织、通过多次试验/迭代得到装箱方案,以及将方案映射到几何可视化(如矩形/四边形表示箱体与装载情况)。作图要点:利用构造摘要中的 Sequence、PolyLine、Textfield、Mod 等命令生成物品权重序列与位置连接/边界描绘;对象 wtMax、wtMin、MaxWeights、T1~T20、numWeights、binW、binH、binCap、binSep、MaxBins、numBins 等用于定义权重范围、箱体尺寸、容量与数量;Quads 与 D、W、C 等用于承载每个箱及其装载区域的几何四边形表示;其中 Mod 结合 i 用于循环索引或分配流程。适合高中到大学的算法导论、离散数学与运筹优化入门课程中的演示与课堂探究。

GeoGebra 命令及参数

  1. Sequence(Random[wtMin, wtMax], t, 1, MaxWeights) → W
  2. PolyLine(A, B, C, D) → i
  3. Sequence(Polygon[A + (t, 0), B + (t, 0), C + (t, 0), D + (t, 0)], t, 0, numBins - 1) → Quads
  4. Textfield(binCap) → InputBox1
  5. Textfield(Wcur) → InputBox2
  6. Sequence(Text["Bin " + (t), B + (t - 1 + 0.2, -0.25)], t, 1, numBins) → txtbinlabels
  7. Sequence(PolyLine[A + (t, 0), B + (t, 0), C + (t, 0), D + (t, 0)], t, 0, numBins - 1) → Bins
  8. Sequence(Sum[Sequence[If[IsInRegion[T(i), Quads(t)], Wcur(i), 0], i, 1, numWeights]], t, 1, numBins) → BinSums
  9. Sequence(Text["(" + (binCap - BinSums(t)) + ")", B + (t - 1 + 0.2, -0.95)], t, 1, numBins) → txtbinremain
  10. Textfield(numWeights) → InputBox3
  11. Textfield(wtMin) → InputBox4
  12. Textfield(wtMax) → InputBox5
  13. Sequence(Text["" + (BinSums(t)), B + (t - 1 + 0.2, -0.6)], t, 1, numBins) → txtbinsums
  14. Mod(11.2, 5) → a

AI 绘图提示语参考

绘制一个展示装箱问题的优化算法可视化图形。图形包含多个容量有限的箱子,每个箱子用几何形状表示,箱子内用不同颜色或填充表示装入的物品重量。通过滑块和文本标签显示每个箱子的当前装入重量和剩余容量,以及物品的总重量和箱子数量。物品重量随机生成并按序列排列,箱子按一定间距水平排列。图形需体现物品如何被分配到不同箱子中,以及如何通过调整策略来优化箱子的使用数量和装入效率。
以上提示语为根据原始绘图命令整理而来,仅供参考。