m = Model()
...
m._cut_count = 0
m.optimize(cut_counter)
print(m._cut_count)
def cut_counter(model, where):
cut_names = {
'Clique:', 'Cover:', 'Flow cover:', 'Flow path:', 'Gomory:',
'GUB cover:', 'Inf proof:', 'Implied bound:', 'Lazy constraints:',
'Learned:', 'MIR:', 'Mod-K:', 'Network:', 'Projected Implied bound:',
'StrongCG:', 'User:', 'Zero half:'}
if where == GRB.Callback.MESSAGE:
# Message callback
msg = model.cbGet(GRB.Callback.MSG_STRING)
if any(name in msg for name in cut_names):
model._cut_count += int(msg.split(':')[1])