from ortools.linear_solver import pywraplp as mip
# unaries
A1 = 0.9
A2 = 0.9
A3 = 0.9
B1 = 0.9
B2 = 0.9
B3 = 0.9
solver = mip.Solver('t', mip.Solver.CBC_MIXED_INTEGER_PROGRAMMING)
Sum = []
Rho = {}
V = [A1, A2, A3, B1, B2, B3]
n = len(V)
for idx in range(n):
Rho[idx] = solver.BoolVar('rho[%i]' % idx)
s = solver.Sum(
Rho[idx] * V[idx] for idx in range(n))
Sum.append(s)
E = [(0, 1, 2), (3, 4)]
for clique in E:
#s = solver.Sum(Rho[a] for a in clique for b in clique if a != b)
s = solver.Sum(Rho[a] * Rho[b] for a in clique for b in clique if a != b)
solver.Maximize(solver.Sum(Sum))
RESULT = solver.Solve()
print("Time = ", solver.WallTime(), " ms")
print("result:", RESULT)
print('\nTotal cost:', solver.Objective().Value())
for idx in range(n):
print('node ' + str(idx) + ' -> ', Rho[idx].solution_value())