dimod icon indicating copy to clipboard operation
dimod copied to clipboard

Display constraint weight and penalty in CQM

Open JoelPasvolsky opened this issue 2 years ago • 2 comments

Application I want to be able to see whether I set a hard or soft constraint on my CQM and what value of weight & penalty fo rsoft constraints.

Proposed Solution Display as part of the dimod.CQM.constraint

Alternatives Considered If that causes backward compatibility, maybe a new field. .

Additional Context

cqm1 = dimod.ConstrainedQuadraticModel()
a = dimod.Integer('a')
cqm1.add_constraint(a <= 3, weight=55, penalty="linear", label="Soft constraint")
cqm1.constraints["Soft constraint"]

Output Le(QuadraticModel({'a': 1.0}, {}, 0.0, {'a': 'INTEGER'}, dtype='float64'), 3) gives no hint of the type of constraint.

JoelPasvolsky avatar Oct 07 '22 21:10 JoelPasvolsky

If you want to check whether the constraint is hard or soft you can use

try:
    print(cqm1._soft["Soft constraint"])
except KeyError:
    print("not a soft constraint")

and that will show the weight and penalty

alexzucca90 avatar Oct 07 '22 21:10 alexzucca90

We should make that a non-internal method though, right?

JoelPasvolsky avatar Oct 07 '22 21:10 JoelPasvolsky