From 6a1559f0a97cf1b5b07be8663055e810be586e06 Mon Sep 17 00:00:00 2001 From: Corentin Le Molgat Date: Mon, 17 Jan 2022 11:01:32 +0100 Subject: [PATCH] linear_solver: Fix indentation --- .clang-format | 13 ++ .../samples/AssignmentGroupsMip.cs | 101 +++++++------ .../samples/AssignmentGroupsMip.java | 136 ++++++++++-------- .../samples/AssignmentTaskSizesMip.java | 6 +- .../samples/AssignmentTeamsMip.cs | 8 +- .../samples/AssignmentTeamsMip.java | 6 +- .../linear_solver/samples/BinPackingMip.java | 9 +- .../samples/assignment_groups_mip.cc | 18 +-- .../samples/assignment_task_sizes_mip.cc | 20 +-- 9 files changed, 168 insertions(+), 149 deletions(-) create mode 100644 .clang-format diff --git a/.clang-format b/.clang-format new file mode 100644 index 0000000000..492b09dba4 --- /dev/null +++ b/.clang-format @@ -0,0 +1,13 @@ +--- +Language: Cpp +BasedOnStyle: Google +# Force pointer to align on the type for C++ +DerivePointerAlignment: false +PointerAlignment: Left +--- +Language: Java +BasedOnStyle: Google +--- +Language: CSharp +BasedOnStyle: Microsoft +... diff --git a/ortools/linear_solver/samples/AssignmentGroupsMip.cs b/ortools/linear_solver/samples/AssignmentGroupsMip.cs index 12ff990c30..a123e2a25e 100644 --- a/ortools/linear_solver/samples/AssignmentGroupsMip.cs +++ b/ortools/linear_solver/samples/AssignmentGroupsMip.cs @@ -40,28 +40,19 @@ public class AssignmentGroupsMip // Allowed groups of workers: // [START allowed_groups] - int[,] group1 = { // group of worker 0-3 - {2, 3}, - {1, 3}, - {1, 2}, - {0, 1}, - {0, 2}, + int[,] group1 = { + // group of worker 0-3 + { 2, 3 }, { 1, 3 }, { 1, 2 }, { 0, 1 }, { 0, 2 }, }; - int[,] group2 = { // group of worker 4-7 - {6, 7}, - {5, 7}, - {5, 6}, - {4, 5}, - {4, 7}, + int[,] group2 = { + // group of worker 4-7 + { 6, 7 }, { 5, 7 }, { 5, 6 }, { 4, 5 }, { 4, 7 }, }; - int[,] group3 = { // group of worker 8-11 - {10, 11}, - {9, 11}, - {9, 10}, - {8, 10}, - {8, 11}, + int[,] group3 = { + // group of worker 8-11 + { 10, 11 }, { 9, 11 }, { 9, 10 }, { 8, 10 }, { 8, 11 }, }; // [END allowed_groups] @@ -107,61 +98,65 @@ public class AssignmentGroupsMip // [END constraints] // [START assignments] - // Create variables for each worker, indicating whether they work on some task. + // Create variables for each worker, indicating whether they work on some + // task. Variable[] work = new Variable[numWorkers]; foreach (int worker in allWorkers) { - work[worker] = solver.MakeBoolVar($"work[{worker}]"); + work[worker] = solver.MakeBoolVar($"work[{worker}]"); } foreach (int worker in allWorkers) { - Variable[] vars = new Variable[numTasks]; - foreach (int task in allTasks) - { - vars[task] = x[worker, task]; - } - solver.Add(work[worker] == LinearExprArrayHelper.Sum(vars)); + Variable[] vars = new Variable[numTasks]; + foreach (int task in allTasks) + { + vars[task] = x[worker, task]; + } + solver.Add(work[worker] == LinearExprArrayHelper.Sum(vars)); } // Group1 Constraint constraint_g1 = solver.MakeConstraint(1, 1, ""); - for (int i=0; i < group1.GetLength(0); ++i) { - // a*b can be transformed into 0 <= a + b - 2*p <= 1 with p in [0,1] - // p is True if a AND b, False otherwise - Constraint constraint = solver.MakeConstraint(0, 1, ""); - constraint.SetCoefficient(work[group1[i,0]], 1); - constraint.SetCoefficient(work[group1[i,1]], 1); - Variable p = solver.MakeBoolVar($"g1_p{i}"); - constraint.SetCoefficient(p, -2); + for (int i = 0; i < group1.GetLength(0); ++i) + { + // a*b can be transformed into 0 <= a + b - 2*p <= 1 with p in [0,1] + // p is True if a AND b, False otherwise + Constraint constraint = solver.MakeConstraint(0, 1, ""); + constraint.SetCoefficient(work[group1[i, 0]], 1); + constraint.SetCoefficient(work[group1[i, 1]], 1); + Variable p = solver.MakeBoolVar($"g1_p{i}"); + constraint.SetCoefficient(p, -2); - constraint_g1.SetCoefficient(p, 1); + constraint_g1.SetCoefficient(p, 1); } // Group2 Constraint constraint_g2 = solver.MakeConstraint(1, 1, ""); - for (int i=0; i < group2.GetLength(0); ++i) { - // a*b can be transformed into 0 <= a + b - 2*p <= 1 with p in [0,1] - // p is True if a AND b, False otherwise - Constraint constraint = solver.MakeConstraint(0, 1, ""); - constraint.SetCoefficient(work[group2[i,0]], 1); - constraint.SetCoefficient(work[group2[i,1]], 1); - Variable p = solver.MakeBoolVar($"g2_p{i}"); - constraint.SetCoefficient(p, -2); + for (int i = 0; i < group2.GetLength(0); ++i) + { + // a*b can be transformed into 0 <= a + b - 2*p <= 1 with p in [0,1] + // p is True if a AND b, False otherwise + Constraint constraint = solver.MakeConstraint(0, 1, ""); + constraint.SetCoefficient(work[group2[i, 0]], 1); + constraint.SetCoefficient(work[group2[i, 1]], 1); + Variable p = solver.MakeBoolVar($"g2_p{i}"); + constraint.SetCoefficient(p, -2); - constraint_g2.SetCoefficient(p, 1); + constraint_g2.SetCoefficient(p, 1); } // Group3 Constraint constraint_g3 = solver.MakeConstraint(1, 1, ""); - for (int i=0; i < group3.GetLength(0); ++i) { - // a*b can be transformed into 0 <= a + b - 2*p <= 1 with p in [0,1] - // p is True if a AND b, False otherwise - Constraint constraint = solver.MakeConstraint(0, 1, ""); - constraint.SetCoefficient(work[group3[i,0]], 1); - constraint.SetCoefficient(work[group3[i,1]], 1); - Variable p = solver.MakeBoolVar($"g3_p{i}"); - constraint.SetCoefficient(p, -2); + for (int i = 0; i < group3.GetLength(0); ++i) + { + // a*b can be transformed into 0 <= a + b - 2*p <= 1 with p in [0,1] + // p is True if a AND b, False otherwise + Constraint constraint = solver.MakeConstraint(0, 1, ""); + constraint.SetCoefficient(work[group3[i, 0]], 1); + constraint.SetCoefficient(work[group3[i, 1]], 1); + Variable p = solver.MakeBoolVar($"g3_p{i}"); + constraint.SetCoefficient(p, -2); - constraint_g3.SetCoefficient(p, 1); + constraint_g3.SetCoefficient(p, 1); } // [END assignments] diff --git a/ortools/linear_solver/samples/AssignmentGroupsMip.java b/ortools/linear_solver/samples/AssignmentGroupsMip.java index 6d0cb30e25..5b0e9e8a54 100644 --- a/ortools/linear_solver/samples/AssignmentGroupsMip.java +++ b/ortools/linear_solver/samples/AssignmentGroupsMip.java @@ -29,10 +29,18 @@ public class AssignmentGroupsMip { // Data // [START data] double[][] costs = { - { 90, 76, 75, 70, 50, 74 }, { 35, 85, 55, 65, 48, 101 }, { 125, 95, 90, 105, 59, 120 }, - { 45, 110, 95, 115, 104, 83 }, { 60, 105, 80, 75, 59, 62 }, { 45, 65, 110, 95, 47, 31 }, - { 38, 51, 107, 41, 69, 99 }, { 47, 85, 57, 71, 92, 77 }, { 39, 63, 97, 49, 118, 56 }, - { 47, 101, 71, 60, 88, 109 }, { 17, 39, 103, 64, 61, 92 }, { 101, 45, 83, 59, 92, 27 }, + {90, 76, 75, 70, 50, 74}, + {35, 85, 55, 65, 48, 101}, + {125, 95, 90, 105, 59, 120}, + {45, 110, 95, 115, 104, 83}, + {60, 105, 80, 75, 59, 62}, + {45, 65, 110, 95, 47, 31}, + {38, 51, 107, 41, 69, 99}, + {47, 85, 57, 71, 92, 77}, + {39, 63, 97, 49, 118, 56}, + {47, 101, 71, 60, 88, 109}, + {17, 39, 103, 64, 61, 92}, + {101, 45, 83, 59, 92, 27}, }; int numWorkers = costs.length; int numTasks = costs[0].length; @@ -43,28 +51,31 @@ public class AssignmentGroupsMip { // Allowed groups of workers: // [START allowed_groups] - int[][] group1 = { // group of worker 0-3 - {2, 3}, - {1, 3}, - {1, 2}, - {0, 1}, - {0, 2}, + int[][] group1 = { + // group of worker 0-3 + {2, 3}, + {1, 3}, + {1, 2}, + {0, 1}, + {0, 2}, }; - int[][] group2 = { // group of worker 4-7 - {6, 7}, - {5, 7}, - {5, 6}, - {4, 5}, - {4, 7}, + int[][] group2 = { + // group of worker 4-7 + {6, 7}, + {5, 7}, + {5, 6}, + {4, 5}, + {4, 7}, }; - int[][] group3 = { // group of worker 8-11 - {10, 11}, - {9, 11}, - {9, 10}, - {8, 10}, - {8, 11}, + int[][] group3 = { + // group of worker 8-11 + {10, 11}, + {9, 11}, + {9, 10}, + {8, 10}, + {8, 11}, }; // [END allowed_groups] @@ -85,7 +96,7 @@ public class AssignmentGroupsMip { MPVariable[][] x = new MPVariable[numWorkers][numTasks]; for (int worker : allWorkers) { for (int task : allTasks) { - x[worker][task] = solver.makeBoolVar("x["+worker+","+task+"]"); + x[worker][task] = solver.makeBoolVar("x[" + worker + "," + task + "]"); } } // [END variables] @@ -109,61 +120,62 @@ public class AssignmentGroupsMip { // [END constraints] // [START assignments] - // Create variables for each worker, indicating whether they work on some task. + // Create variables for each worker, indicating whether they work on some + // task. MPVariable[] work = new MPVariable[numWorkers]; for (int worker : allWorkers) { - work[worker] = solver.makeBoolVar("work["+worker+"]"); + work[worker] = solver.makeBoolVar("work[" + worker + "]"); } for (int worker : allWorkers) { - //MPVariable[] vars = new MPVariable[numTasks]; - MPConstraint constraint = solver.makeConstraint(0, 0, ""); - for (int task : allTasks) { - //vars[task] = x[worker][task]; - constraint.setCoefficient(x[worker][task], 1); - } - //solver.addEquality(work[worker], LinearExpr.sum(vars)); - constraint.setCoefficient(work[worker], -1); + // MPVariable[] vars = new MPVariable[numTasks]; + MPConstraint constraint = solver.makeConstraint(0, 0, ""); + for (int task : allTasks) { + // vars[task] = x[worker][task]; + constraint.setCoefficient(x[worker][task], 1); + } + // solver.addEquality(work[worker], LinearExpr.sum(vars)); + constraint.setCoefficient(work[worker], -1); } // Group1 MPConstraint constraint_g1 = solver.makeConstraint(1, 1, ""); - for (int i=0; i < group1.length; ++i) { - // a*b can be transformed into 0 <= a + b - 2*p <= 1 with p in [0,1] - // p is True if a AND b, False otherwise - MPConstraint constraint = solver.makeConstraint(0, 1, ""); - constraint.setCoefficient(work[group1[i][0]], 1); - constraint.setCoefficient(work[group1[i][1]], 1); - MPVariable p = solver.makeBoolVar("g1_p" + i); - constraint.setCoefficient(p, -2); + for (int i = 0; i < group1.length; ++i) { + // a*b can be transformed into 0 <= a + b - 2*p <= 1 with p in [0,1] + // p is True if a AND b, False otherwise + MPConstraint constraint = solver.makeConstraint(0, 1, ""); + constraint.setCoefficient(work[group1[i][0]], 1); + constraint.setCoefficient(work[group1[i][1]], 1); + MPVariable p = solver.makeBoolVar("g1_p" + i); + constraint.setCoefficient(p, -2); - constraint_g1.setCoefficient(p, 1); + constraint_g1.setCoefficient(p, 1); } // Group2 MPConstraint constraint_g2 = solver.makeConstraint(1, 1, ""); - for (int i=0; i < group2.length; ++i) { - // a*b can be transformed into 0 <= a + b - 2*p <= 1 with p in [0,1] - // p is True if a AND b, False otherwise - MPConstraint constraint = solver.makeConstraint(0, 1, ""); - constraint.setCoefficient(work[group2[i][0]], 1); - constraint.setCoefficient(work[group2[i][1]], 1); - MPVariable p = solver.makeBoolVar("g2_p" + i); - constraint.setCoefficient(p, -2); + for (int i = 0; i < group2.length; ++i) { + // a*b can be transformed into 0 <= a + b - 2*p <= 1 with p in [0,1] + // p is True if a AND b, False otherwise + MPConstraint constraint = solver.makeConstraint(0, 1, ""); + constraint.setCoefficient(work[group2[i][0]], 1); + constraint.setCoefficient(work[group2[i][1]], 1); + MPVariable p = solver.makeBoolVar("g2_p" + i); + constraint.setCoefficient(p, -2); - constraint_g2.setCoefficient(p, 1); + constraint_g2.setCoefficient(p, 1); } // Group3 MPConstraint constraint_g3 = solver.makeConstraint(1, 1, ""); - for (int i=0; i < group3.length; ++i) { - // a*b can be transformed into 0 <= a + b - 2*p <= 1 with p in [0,1] - // p is True if a AND b, False otherwise - MPConstraint constraint = solver.makeConstraint(0, 1, ""); - constraint.setCoefficient(work[group3[i][0]], 1); - constraint.setCoefficient(work[group3[i][1]], 1); - MPVariable p = solver.makeBoolVar("g3_p" + i); - constraint.setCoefficient(p, -2); + for (int i = 0; i < group3.length; ++i) { + // a*b can be transformed into 0 <= a + b - 2*p <= 1 with p in [0,1] + // p is True if a AND b, False otherwise + MPConstraint constraint = solver.makeConstraint(0, 1, ""); + constraint.setCoefficient(work[group3[i][0]], 1); + constraint.setCoefficient(work[group3[i][1]], 1); + MPVariable p = solver.makeBoolVar("g3_p" + i); + constraint.setCoefficient(p, -2); - constraint_g3.setCoefficient(p, 1); + constraint_g3.setCoefficient(p, 1); } // [END assignments] @@ -194,8 +206,8 @@ public class AssignmentGroupsMip { // Test if x[i][j] is 0 or 1 (with tolerance for floating point // arithmetic). if (x[worker][task].solutionValue() > 0.5) { - System.out.println( - "Worker " + worker + " assigned to task " + task + ". Cost: " + costs[worker][task]); + System.out.println("Worker " + worker + " assigned to task " + task + + ". Cost: " + costs[worker][task]); } } } diff --git a/ortools/linear_solver/samples/AssignmentTaskSizesMip.java b/ortools/linear_solver/samples/AssignmentTaskSizesMip.java index c2e9b98803..ae529c79e0 100644 --- a/ortools/linear_solver/samples/AssignmentTaskSizesMip.java +++ b/ortools/linear_solver/samples/AssignmentTaskSizesMip.java @@ -68,7 +68,7 @@ public class AssignmentTaskSizesMip { MPVariable[][] x = new MPVariable[numWorkers][numTasks]; for (int worker : allWorkers) { for (int task : allTasks) { - x[worker][task] = solver.makeBoolVar("x["+worker+","+task+"]"); + x[worker][task] = solver.makeBoolVar("x[" + worker + "," + task + "]"); } } // [END variables] @@ -118,8 +118,8 @@ public class AssignmentTaskSizesMip { // Test if x[i][j] is 0 or 1 (with tolerance for floating point // arithmetic). if (x[worker][task].solutionValue() > 0.5) { - System.out.println( - "Worker " + worker + " assigned to task " + task + ". Cost: " + costs[worker][task]); + System.out.println("Worker " + worker + " assigned to task " + task + + ". Cost: " + costs[worker][task]); } } } diff --git a/ortools/linear_solver/samples/AssignmentTeamsMip.cs b/ortools/linear_solver/samples/AssignmentTeamsMip.cs index c4405b62e6..677683c08a 100644 --- a/ortools/linear_solver/samples/AssignmentTeamsMip.cs +++ b/ortools/linear_solver/samples/AssignmentTeamsMip.cs @@ -26,12 +26,8 @@ public class AssignmentTeamsMip // Data. // [START data] int[,] costs = { - {90, 76, 75, 70}, - {35, 85, 55, 65}, - {125, 95, 90, 105}, - {45, 110, 95, 115}, - {60, 105, 80, 75}, - {45, 65, 110, 95}, + { 90, 76, 75, 70 }, { 35, 85, 55, 65 }, { 125, 95, 90, 105 }, + { 45, 110, 95, 115 }, { 60, 105, 80, 75 }, { 45, 65, 110, 95 }, }; int numWorkers = costs.GetLength(0); int numTasks = costs.GetLength(1); diff --git a/ortools/linear_solver/samples/AssignmentTeamsMip.java b/ortools/linear_solver/samples/AssignmentTeamsMip.java index aee0c6fef4..dc68909b97 100644 --- a/ortools/linear_solver/samples/AssignmentTeamsMip.java +++ b/ortools/linear_solver/samples/AssignmentTeamsMip.java @@ -65,7 +65,7 @@ public class AssignmentTeamsMip { MPVariable[][] x = new MPVariable[numWorkers][numTasks]; for (int worker : allWorkers) { for (int task : allTasks) { - x[worker][task] = solver.makeBoolVar("x["+worker+","+task+"]"); + x[worker][task] = solver.makeBoolVar("x[" + worker + "," + task + "]"); } } // [END variables] @@ -130,8 +130,8 @@ public class AssignmentTeamsMip { // Test if x[i][j] is 0 or 1 (with tolerance for floating point // arithmetic). if (x[worker][task].solutionValue() > 0.5) { - System.out.println( - "Worker " + worker + " assigned to task " + task + ". Cost: " + costs[worker][task]); + System.out.println("Worker " + worker + " assigned to task " + task + + ". Cost: " + costs[worker][task]); } } } diff --git a/ortools/linear_solver/samples/BinPackingMip.java b/ortools/linear_solver/samples/BinPackingMip.java index 0551cb9a47..20a226e1d8 100644 --- a/ortools/linear_solver/samples/BinPackingMip.java +++ b/ortools/linear_solver/samples/BinPackingMip.java @@ -74,12 +74,13 @@ public class BinPackingMip { } // The bin capacity contraint for bin j is // sum_i w_i x_ij <= C*y_j - // To define this constraint, first subtract the left side from the right to get + // To define this constraint, first subtract the left side from the right to + // get // 0 <= C*y_j - sum_i w_i x_ij // - // Note: Since sum_i w_i x_ij is positive (and y_j is 0 or 1), the right side must - // be less than or equal to C. But it's not necessary to add this constraint - // because it is forced by the other constraints. + // Note: Since sum_i w_i x_ij is positive (and y_j is 0 or 1), the right + // side must be less than or equal to C. But it's not necessary to add this + // constraint because it is forced by the other constraints. for (int j = 0; j < data.numBins; ++j) { MPConstraint constraint = solver.makeConstraint(0, infinity, ""); diff --git a/ortools/linear_solver/samples/assignment_groups_mip.cc b/ortools/linear_solver/samples/assignment_groups_mip.cc index fe3a355de9..34767dbd28 100644 --- a/ortools/linear_solver/samples/assignment_groups_mip.cc +++ b/ortools/linear_solver/samples/assignment_groups_mip.cc @@ -55,7 +55,8 @@ void AssignmentTeamsMip() { using WorkerIndex = int; using Binome = std::pair; using AllowedBinomes = std::vector; - const AllowedBinomes group1 = {{ // group of worker 0-3 + const AllowedBinomes group1 = {{ + // group of worker 0-3 {2, 3}, {1, 3}, {1, 2}, @@ -63,7 +64,8 @@ void AssignmentTeamsMip() { {0, 2}, }}; - const AllowedBinomes group2 = {{ // group of worker 4-7 + const AllowedBinomes group2 = {{ + // group of worker 4-7 {6, 7}, {5, 7}, {5, 6}, @@ -71,7 +73,8 @@ void AssignmentTeamsMip() { {4, 7}, }}; - const AllowedBinomes group3 = {{ // group of worker 8-11 + const AllowedBinomes group3 = {{ + // group of worker 8-11 {10, 11}, {9, 11}, {9, 10}, @@ -129,8 +132,7 @@ void AssignmentTeamsMip() { // task. std::vector work(num_workers); for (int worker : all_workers) { - work[worker] = - solver->MakeBoolVar(absl::StrFormat("work[%d]", worker)); + work[worker] = solver->MakeBoolVar(absl::StrFormat("work[%d]", worker)); } for (int worker : all_workers) { @@ -144,7 +146,7 @@ void AssignmentTeamsMip() { // Group1 { MPConstraint* g1 = solver->MakeRowConstraint(1, 1); - for (int i=0; i < group1.size(); ++i) { + for (int i = 0; i < group1.size(); ++i) { // a*b can be transformed into 0 <= a + b - 2*p <= 1 with p in [0,1] // p is true if a AND b, false otherwise MPConstraint* tmp = solver->MakeRowConstraint(0, 1); @@ -159,7 +161,7 @@ void AssignmentTeamsMip() { // Group2 { MPConstraint* g2 = solver->MakeRowConstraint(1, 1); - for (int i=0; i < group2.size(); ++i) { + for (int i = 0; i < group2.size(); ++i) { // a*b can be transformed into 0 <= a + b - 2*p <= 1 with p in [0,1] // p is true if a AND b, false otherwise MPConstraint* tmp = solver->MakeRowConstraint(0, 1); @@ -174,7 +176,7 @@ void AssignmentTeamsMip() { // Group3 { MPConstraint* g3 = solver->MakeRowConstraint(1, 1); - for (int i=0; i < group3.size(); ++i) { + for (int i = 0; i < group3.size(); ++i) { // a*b can be transformed into 0 <= a + b - 2*p <= 1 with p in [0,1] // p is true if a AND b, false otherwise MPConstraint* tmp = solver->MakeRowConstraint(0, 1); diff --git a/ortools/linear_solver/samples/assignment_task_sizes_mip.cc b/ortools/linear_solver/samples/assignment_task_sizes_mip.cc index 932856dc73..793b11c6eb 100644 --- a/ortools/linear_solver/samples/assignment_task_sizes_mip.cc +++ b/ortools/linear_solver/samples/assignment_task_sizes_mip.cc @@ -27,16 +27,16 @@ void AssignmentTeamsMip() { // Data // [START data] const std::vector> costs = {{ - {{90, 76, 75, 70, 50, 74, 12, 68}}, - {{35, 85, 55, 65, 48, 101, 70, 83}}, - {{125, 95, 90, 105, 59, 120, 36, 73}}, - {{45, 110, 95, 115, 104, 83, 37, 71}}, - {{60, 105, 80, 75, 59, 62, 93, 88}}, - {{45, 65, 110, 95, 47, 31, 81, 34}}, - {{38, 51, 107, 41, 69, 99, 115, 48}}, - {{47, 85, 57, 71, 92, 77, 109, 36}}, - {{39, 63, 97, 49, 118, 56, 92, 61}}, - {{47, 101, 71, 60, 88, 109, 52, 90}}, + {{90, 76, 75, 70, 50, 74, 12, 68}}, + {{35, 85, 55, 65, 48, 101, 70, 83}}, + {{125, 95, 90, 105, 59, 120, 36, 73}}, + {{45, 110, 95, 115, 104, 83, 37, 71}}, + {{60, 105, 80, 75, 59, 62, 93, 88}}, + {{45, 65, 110, 95, 47, 31, 81, 34}}, + {{38, 51, 107, 41, 69, 99, 115, 48}}, + {{47, 85, 57, 71, 92, 77, 109, 36}}, + {{39, 63, 97, 49, 118, 56, 92, 61}}, + {{47, 101, 71, 60, 88, 109, 52, 90}}, }}; const int num_workers = costs.size(); std::vector all_workers(num_workers);