# problem.getSolutions() of constraint library yielding no solutions

## Question:

I’m trying to solve a small constraint problem using the "constraint" library in Python.

The code is as follows but the solutions is empty. I was expecting a solution for Km * wt_Km (1 *42). Can somebody help in solving this?

Thanks

```
from constraint import *
wt_Nd = 1
wt_Qd = 1
wt_Km = 42
wt_Ka = 14
wt_Mx = 16
problem = Problem()
problem.addVariable('Nd', range(1))
problem.addVariable('Qd', range(2))
problem.addVariable('Ka', range(2))
problem.addVariable('Km', range(2))
problem.addVariable('Mx', range(1))
value_diff = 42
problem.addConstraint(lambda Nd,Qd,Km,Ka,Mx: value_diff == Nd * wt_Nd +
Qd * wt_Qd +
Km * wt_Km +
Ka * wt_Ka +
Mx * wt_Mx ,
('Nd','Qd','Km', 'Ka', 'Mx') )
solutions = problem.getSolutions()
print(solutions)
```

## Answers:

Move the `problem = Problem()`

up to be after wt_Mx initialization, does that fix it?

Edit 2: I found the solution to your problem, at least it solves correctly on Python 3.6.15 on my Ubuntu 20.04LTS. I still don’t get the answer from the example, which is odd.

In your answer, change

```
Nd + wt_Nd +
```

to

```
Nd * wt_Nd +
```

output:

```
[{'Mx': 0, 'Nd': 0, 'Ka': 0, 'Km': 1, 'Qd': 0}
```

Edit: I am starting to think that there is a problem with the library.

I copied the example from here (I added prints):

```
from constraint import *
problem = Problem()
problem.addVariable("a", [1, 2, 3])
problem.addVariable("b", [4, 5, 6])
print(problem.getSolutions())
problem.addConstraint(lambda a, b: a * 2 == ("a", "b"))
print(problem.getSolutions())
```

And the output was

```
[{'a': 3, 'b': 6}, {'a': 3, 'b': 5}, {'a': 3, 'b': 4}, {'a': 2, 'b': 6}, {'a': 2, 'b': 5}, {'a': 2, 'b': 4}, {'a': 1, 'b': 6}, {'a': 1, 'b': 5}, {'a': 1, 'b': 4}]
[]
```

I tried with Python 3.10, 3.6, 3.5 and 2.7, none of them worked. I couldn’t install Python 3.4 to try it on that.

I think your problem (and the problem above) should yield a solution, but somehow they don’t.

I am confused.