public void ItemsZeroValueCounterSolverTest() { int[] value = new int[90]; int[] weight = new int[90]; int capacity = 1000; for (int i = 0; i < weight.Length; i++) { weight[i] = 10; value[i] = 0; } //act var result = KnapsackSolver.Solve(capacity, weight, value, weight.Length); var selection = result.selection; var message = ""; var selectedItems = string.Join(" ", selection); message += $"SELECTION [{result.selection.Count}] : {selectedItems}"; Debug.Log($"RESULT {result.maxValue} Selection:\n {message}"); Assert.That(result.selection.Count == 0); }
static void Main() { KnapsackSolver solver = new KnapsackSolver( KnapsackSolver.SolverType.KNAPSACK_MULTIDIMENSION_BRANCH_AND_BOUND_SOLVER, "test"); long[] profits = { 360, 83, 59, 130, 431, 67, 230, 52, 93, 125, 670, 892, 600, 38, 48, 147, 78, 256, 63, 17, 120, 164, 432, 35, 92, 110, 22, 42, 50, 323, 514, 28, 87, 73, 78, 15, 26, 78, 210, 36, 85, 189, 274, 43, 33, 10, 19, 389, 276, 312 }; long[,] weights = { { 7, 0, 30, 22, 80, 94, 11, 81, 70, 64, 59, 18, 0, 36, 3, 8, 15, 42, 9, 0, 42, 47, 52, 32, 26, 48, 55, 6, 29, 84, 2, 4, 18, 56, 7, 29, 93, 44, 71, 3, 86, 66, 31, 65, 0, 79, 20, 65, 52, 13 } }; long[] capacities = { 850 }; long optimalProfit = 7534; Console.WriteLine("Solving knapsack with " + profits.Length + " items, and " + weights.GetLength(0) + " dimension"); solver.Init(profits, weights, capacities); long computedProfit = solver.Solve(); Console.WriteLine("Optimal Profit = " + computedProfit + ", expected = " + optimalProfit); }
static void Main() { // [START solver] KnapsackSolver solver = new KnapsackSolver( KnapsackSolver.SolverType.KNAPSACK_MULTIDIMENSION_BRANCH_AND_BOUND_SOLVER, "test"); // [END solver] // [START data] long[] values = { 360, 83, 59, 130, 431, 67, 230, 52, 93, 125, 670, 892, 600, 38, 48, 147, 78, 256, 63, 17, 120, 164, 432, 35, 92, 110, 22, 42, 50, 323, 514, 28, 87, 73, 78, 15, 26, 78, 210, 36, 85, 189, 274, 43, 33, 10, 19, 389, 276, 312 }; long[,] weights = { { 7, 0, 30, 22, 80, 94, 11, 81, 70, 64, 59, 18, 0, 36, 3, 8, 15, 42, 9, 0, 42, 47, 52, 32, 26, 48, 55, 6, 29, 84, 2, 4, 18, 56, 7, 29, 93, 44, 71, 3, 86, 66, 31, 65, 0, 79, 20, 65, 52, 13 } }; long[] capacities = { 850 }; // [END data] // [START print_solution] Console.WriteLine("Solving knapsack with " + values.Length + " items, and " + weights.GetLength(0) + " dimension"); solver.Init(values, weights, capacities); long computedValue = solver.Solve(); Console.WriteLine("Optimal Value = " + computedValue); // [END print_solution] }
static void Main() { KnapsackSolver solver = new KnapsackSolver( KnapsackSolver.KNAPSACK_MULTIDIMENSION_BRANCH_AND_BOUND_SOLVER, "test"); long[] profits = { 360, 83, 59, 130, 431, 67, 230, 52, 93, 125, 670, 892, 600, 38, 48, 147, 78, 256, 63, 17, 120, 164, 432, 35, 92, 110, 22, 42, 50, 323, 514, 28, 87, 73, 78, 15, 26, 78, 210, 36, 85, 189, 274, 43, 33, 10, 19, 389, 276, 312 }; long[,] weights = { { 7, 0, 30, 22, 80, 94, 11, 81, 70, 64, 59, 18, 0, 36, 3, 8, 15, 42, 9, 0, 42, 47, 52, 32, 26, 48, 55, 6, 29, 84, 2, 4, 18, 56, 7, 29, 93, 44, 71, 3, 86, 66, 31, 65, 0, 79, 20, 65, 52, 13 } }; long[] capacities = { 850 }; long optimalProfit = 7534; Console.WriteLine("Solving knapsack with " + profits.Length + " items, and " + weights.GetLength(0) + " dimension"); solver.Init(profits, weights, capacities); long computedProfit = solver.Solve(); Console.WriteLine("Optimal Profit = " + computedProfit + ", expected = " + optimalProfit); }
private void DataSet_1_Test(KnapsackSolver solver) { var items = new[] { new Item(value: 175, weight: 65), new Item(value: 170, weight: 60), new Item(value: 230, weight: 80), new Item(value: 260, weight: 90), new Item(value: 690, weight: 210) }; var capacity = 760; var expected = 2420; var actual = solver.Solve(items, capacity); Assert.AreEqual(expected, actual); }
private void DataSet_2_Test(KnapsackSolver solver) { var items = new[] { new Item(value: 25, weight: 20), new Item(value: 63, weight: 32), new Item(value: 70, weight: 35), new Item(value: 61, weight: 50), new Item(value: 89, weight: 48), new Item(value: 99, weight: 50), new Item(value: 103, weight: 51) }; var capacity = 120; var expected = 239; var actual = solver.Solve(items, capacity); Assert.AreEqual(expected, actual); }
public void SelectedItemsSolverTest() { int[] value = { 10, 50, 70, 100, 20, 30 }; int[] weight = { 10, 20, 30, 35, 40, 50 }; int capacity = 100; //act var result = KnapsackSolver.Solve(capacity, weight, value, weight.Length); var selection = result.selection; var message = ""; var selectedItems = string.Join(" ", selection); message += $"SELECTION: {selectedItems}"; Debug.Log($"RESULT {result.maxValue} Selection:\n {message}"); Assert.That(result.maxValue == 230); Assert.That(result.selection.Count == 4); Assert.That(result.selection.SequenceEqual(new List <int>() { 3, 2, 1, 0 })); }