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

寻找最小化换漆次数的排列算法(喷漆件场景)

最小化喷涂换漆次数的排列算法问题

问题背景

我有一批需要喷涂两种颜色的工件,示例如下:

  • Pc1:红、蓝
  • Pc2:黄、绿
  • Pc3:黄、红
  • Pc4:黑、黄

目标是找到一种排列算法,最小化序列中的换漆次数。比如示例里,顺序1→2→3→4需要换漆4次,而顺序2→4→3→1仅需3次。

已尝试的解法

  • 暴力解法:基于Heap permutation实现,但最多只能处理10个工件,工件数量增多(约30个)时排列组合数过大,无法运行。
  • 缩减工件列表:尝试移除“双异色”工件(如Pc5:粉、紫),但对缩减列表规模没有明显效果。

遇到的新问题

我尝试了@Stef的解决方案,但输出结果错误,出现大量重复工件。推测原因是部分工件的两种颜色相同(如['yellow', 'yellow'])。

我的样本数据:

[[' 254 C PURPLE', ' 2C NOIR'], ['YELLOW C', 'BLEU 072 C'], [' 342 C GREEN', ' 430 C  GREY'], [' 254 C PURPLE', 'WHITE'], [' 392 C KAKI ', ' 392 C KAKI'], [' 342 C GREEN ', ' 342 C GREEN'], ['RUBINE RED C', ' 153 C OCRE'], [' 196 C MAUVE', ' VERT 375 C'], ['YELLOW C', 'YELLOW C'], [' 331 C VERT', ' 331 C VERT'], [' 072 C BLEU', ' 155 C BEIGE'], [' 263 C VIOLET', 'BLEU 072 C'], ['GREEN C', ' 153 C OCRE'], [' 427 C GRIS', 'RUBINE RED  C'], ['YELLOW C', ' 254 C PURPLE'], ['PROCESS BLUE C', ' 342 C GREEN']]

该方案输出结果:

[2, 8, 1, 8, 10, 7, 12, 6, 15, 5, 11, 4, 8, 14, 8, 9, 13, 8, 0, 3]

可以看到编号8的工件多次重复出现,不符合需求。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 23:42:52