|
|
1
16
http://en.wikipedia.org/wiki/Knapsack_problem
|
|
2
6
|
|
|
3
4
您需要约束为0·includeItem的变量includeItem1,…,includeItemN 我 我 ,和includeItem1+…+includeItemN?15和includeItem1*价格项目1+。。。?10,最大化includeItem1*kilojouleItem1+。。。。 将其粘贴到您最喜欢的整数线性规划解算器中,并获得解决方案:) 另见 http://en.wikipedia.org/wiki/Linear_programming 说你的特定问题是NP完全问题是没有意义的,但它是NP完全问题的一个实例,所以可能没有问题 理论上 我不认为你的问题是ILP的一个特例,这使得它特别容易解决。把它看作一个类似背包的问题,你可以把自己限制在1..100的所有子集上,这些子集最多(或正好)有15个元素,这是n中的多项式——它是n-choose-15,小于(n^15)/(15!),但当n=100时,这并不是非常有用。 如果您想要为解算器程序提供建议,我已经尝试过glpk,并发现它使用起来很愉快。如果你想要花钱的东西,我的讲师总是以CPLEX为例。 |
|
4
1
这听起来很像背包问题。有多种方法(例如,按能量密度降序)。 |
|
|
5
1
这是背包问题,如果你可以选择一个产品或不。如果你可以选择乘积的分数,那么你可以用单纯形法来解决这个问题,但是分数背包问题有一个简单的解决方案。 按能量/价格比订购物品,从最高的物品中挑选100%直到你的钱用完,然后从剩余的最高物品中挑选一个零值。 例如,如果价格为4,3,5,4,能量为3,5,2,7,则订购为
所以你会选择第4项和第2项,花费7美元,剩下的3美元,你会以3美元的价格和3*.75=2.25的能量购买第一项的75%
请注意,与仅允许0%或100%相比,允许分数值将为您提供更高的目标值,因此没有任何整数解决方案优于14.25(或14,因为目标值必须是整数)。
请注意,当您创建子问题时,您必须选择一个项目,只需从预算中减去其价格并将其值添加到利润中,现在您有一个较小的问题要解决。 有关更详细的说明,请参阅 Branch and Bound |
|
|
6
1
Stony Brook算法存储库列表 implementations for the knapsack problem. 他们的书 The Algorithm Design Manual 有关于大量问题的此类信息。 |
|
|
7
1
|
|
|
8
0
这让我想起了著名的背包算法 |
|
|
9
0
应该可以用计算机解决这个问题 Cream for Java . 还有一个C#版本可用 CSharpCream . |
|
|
10
0
如果你想移植到c#,请随意。
这样你就可以:
|
|
|
feasega · 聚合物模拟-2个节点之间的最短路线,适用于所有节点 1 年前 |
|
|
Alisa Petrova · 在有向图中更改一对顶点以创建循环 1 年前 |
|
|
b39b332d · 使用C++标准库实现高效间隔存储 2 年前 |
|
ABGR · 二叉树的直径——当最长路径不通过根时的失败案例 2 年前 |
|
|
EpicAshman · 数独棋盘程序中同一列和同一行出现两次的数字 2 年前 |