7// 物品的数量 每一个物品有0和1两种选择 0代表选择当前物品 1代表不选择当前物品 8const int n = 100; 9 10//算法最大迭代次数 11const int Max_Iteration = 1000; 12 13//邻域数量 14const int MaxFlip = 3; 15int flip = 1; 16 17 18//背包最大容量 19const int maxWeight = 5 * n; ...
假设我们面前有n种物品,那么我们可以将解决方案设置成一个一维数组selection[n]。数组weights[n]表示重量,数组values[n]表示价值。 selection[i] = 1 表示装入第i个物品。 selection[i] = 0 表示不装入第i个物品。 总价值total_value = selection[i] * values[i]。 (i=1,2,3,4……n) 总重量total_wei...
对于解决方案selection[n],在第i (i=1,2,3,4……n)位取反的情况下,依次将第j(j=i+1,2,3,4……n)位也取反。还是for 一个 example吧。 对于解决方案0010。产生的邻居解如下: 邻域动作3 交换第i位和第i-3位的数。如果i<3。就交换最后的,比如: selection[0]和selection[n-1]交换。 selection[1...
selectioni = 1 表示装入第i个物品。 selectioni = 0 表示不装入第i个物品。 总价值total_value = selectioni * valuesi。 (i=1,2,3,4……n) 总重量total_weight = selectioni * weightsi。(i=1,2,3,4……n) 邻域动作1 将解决方案selectionn的第i位取反(i=1,2,3,4……n)。比如: 有方案00...