add glop_proto_solver; split bazel targets for proto_solver
This commit is contained in:
@@ -109,39 +109,39 @@ def main():
|
||||
|
||||
# Group1
|
||||
constraint_g1 = solver.Constraint(1, 1)
|
||||
for i in range(len(group1)):
|
||||
for index, _ in enumerate(group1):
|
||||
# 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 = solver.Constraint(0, 1)
|
||||
constraint.SetCoefficient(work[group1[i][0]], 1)
|
||||
constraint.SetCoefficient(work[group1[i][1]], 1)
|
||||
p = solver.BoolVar(f"g1_p{i}")
|
||||
constraint.SetCoefficient(work[group1[index][0]], 1)
|
||||
constraint.SetCoefficient(work[group1[index][1]], 1)
|
||||
p = solver.BoolVar(f"g1_p{index}")
|
||||
constraint.SetCoefficient(p, -2)
|
||||
|
||||
constraint_g1.SetCoefficient(p, 1)
|
||||
|
||||
# Group2
|
||||
constraint_g2 = solver.Constraint(1, 1)
|
||||
for i in range(len(group2)):
|
||||
for index, _ in enumerate(group2):
|
||||
# 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 = solver.Constraint(0, 1)
|
||||
constraint.SetCoefficient(work[group2[i][0]], 1)
|
||||
constraint.SetCoefficient(work[group2[i][1]], 1)
|
||||
p = solver.BoolVar(f"g2_p{i}")
|
||||
constraint.SetCoefficient(work[group2[index][0]], 1)
|
||||
constraint.SetCoefficient(work[group2[index][1]], 1)
|
||||
p = solver.BoolVar(f"g2_p{index}")
|
||||
constraint.SetCoefficient(p, -2)
|
||||
|
||||
constraint_g2.SetCoefficient(p, 1)
|
||||
|
||||
# Group3
|
||||
constraint_g3 = solver.Constraint(1, 1)
|
||||
for i in range(len(group3)):
|
||||
for index, _ in enumerate(group3):
|
||||
# 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 = solver.Constraint(0, 1)
|
||||
constraint.SetCoefficient(work[group3[i][0]], 1)
|
||||
constraint.SetCoefficient(work[group3[i][1]], 1)
|
||||
p = solver.BoolVar(f"g3_p{i}")
|
||||
constraint.SetCoefficient(work[group3[index][0]], 1)
|
||||
constraint.SetCoefficient(work[group3[index][1]], 1)
|
||||
p = solver.BoolVar(f"g3_p{index}")
|
||||
constraint.SetCoefficient(p, -2)
|
||||
|
||||
constraint_g3.SetCoefficient(p, 1)
|
||||
|
||||
@@ -25,7 +25,7 @@ from ortools.linear_solver.python import model_builder
|
||||
|
||||
# [START program_part1]
|
||||
# [START data_model]
|
||||
def create_data_model():
|
||||
def create_data_model() -> tuple[pd.DataFrame, pd.DataFrame]:
|
||||
"""Create the data for the example."""
|
||||
|
||||
items_str = """
|
||||
|
||||
@@ -13,6 +13,7 @@
|
||||
# limitations under the License.
|
||||
|
||||
"""MIP example that uses a variable array."""
|
||||
|
||||
# [START program]
|
||||
# [START import]
|
||||
from ortools.linear_solver import pywraplp
|
||||
|
||||
@@ -90,7 +90,8 @@ def main():
|
||||
for i in data["all_items"]:
|
||||
if x[i, b].solution_value() > 0:
|
||||
print(
|
||||
f"Item {i} weight: {data['weights'][i]} value: {data['values'][i]}"
|
||||
f"Item {i} weight: {data['weights'][i]} value:"
|
||||
f" {data['values'][i]}"
|
||||
)
|
||||
bin_weight += data["weights"][i]
|
||||
bin_value += data["values"][i]
|
||||
|
||||
Reference in New Issue
Block a user