我真的很感激对这个实际问题的一些评论。
快速描述。 我有可变数量的链接,可用于构成给定的皮带宽度。问题是,每个链接有多少。选择标准:最好使用较长的项目。
例子。 假设我们要创建一个皮带宽度,W = 1024.0 其中一个模型具有以下链接长度:L = [34.0, 65.0, 96.0, 126.0]
问题是,每个链接有多少来制作宽度。
这是我尝试过的一些方法。
1.贪婪(选择最长的第一个以满足标准) c = [0,0,0,8] 其中c是每个项目的计数。这留下了 16.0 的差距,我什至无法容纳 1 个最小的项目。贪婪很容易,但并不好。
2. 选择循环 不太容易,我认为这是一个难题。我尝试了很多策略:填充小物品,然后依次移除它们以适应下一个尺寸。
3. 背包法 不太合适,因为这是基于给定数量的物品。
4. 子集和问题 这是背包的一个子类,但我无法让它工作。
5. 装箱问题 听起来很相似,但我无法将其应用于我的问题。
6.蛮力(随机选择) 奇怪的是,这个找到了很多完全匹配。我使用计数的简单多项式作为评级。rating = n[0] + n[1]* 2 + n[2] *3 + n[4]**4 + ... 蛮力的解决方案之一是 [4, 0, 4, 4] 给出正好是 1024。问题是,这种方法通常会产生不同的选择,因此并不理想。
7.穷举搜索 不实用,因为选择太多。
8. 模拟退火 从蛮力的成功来看,这看起来是一个不错的选择。有人可以给我举一个简单的例子吗(请不要是另一个旅行推销员)。
9. 遗传和粒子群 不确定这些。
现在,我陷入困境和沮丧。是否有可用于此问题的直接算法?