Skip to content

Solution

get solution

# Print the values of all variables
for v in model.getVars():
    print(f'{v.VarName} = {v.X}')

# Retrieve the values of multiple variables at once
vars = model.getVars()
values = model.getAttr('X', vars)
names = model.getAttr('VarName', vars)

for name, val in zip(names, values):
    print(f'{name:<10} {val}')

example

def solve(self):
    self.model.optimize()

    # Check if the optimization was successful
    if self.model.status == GRB.OPTIMAL:
        print('Model is optimal. Objective value: {self.model.objVal}')
    elif self.model.status == GRB.INFEASIBLE:
        print('Model is infeasible.')
    elif self.model.status == GRB.UNBOUNDED:
        print('Model is unbounded.')
    else:
        print(f'Optimization ended with status {self.model.status}')

def get_solution(self):
    # Retrieve the values of multiple variables at once
    vars = self.model.getVars()
    names = self.model.getAttr('VarName', vars)
    values = self.model.getAttr('X', vars)
    solution = pd.DataFrame({'col': names, 'val': values})
    return solution