Как использовать корректировку ограничений Python
Я попробовал библиотеку ограничений Python для решения проблемы CSP, но не понимаю, почему я получил 2048 решений с кадром данных из 4 записей.
Мой фрейм данных представляет собой набор расстояний от ближайших элементов до фонтанов в парках, и я использую CSP для оптимизации установки фонтанов в парках.
data = {
'id': [0, 1, 2, 3, 4],
'nearest_rev': [2697.5691, 2745.4515, 2744.0437, 2582.4061],
'nearest_fountain': [48.9079, 1.4088, 1.4088, 141.3484],
'nearest_rvertes': [2512.2950, 2541.8665, 2540.7561, 2371.0535],
'nearest_pcyclable': [176.1136, 167.3303, 167.1909, 84.5920},
'nearest_murbain': [2529.7020, 2495.9674, 2497.1525, 2670.5299],
'nearest_iexterne': [21.4467, 33.0651, 32.6521, 18.8371],
}
df = pd.DataFrame(data)
def my_constraint(a, b, c, d, e, f):
if min(a, b, c, d, e, f) <= 10:
return True
problem = constraint.Problem()
# create variables
problem.addVariable("nearest_rev", df["nearest_rev"].tolist())
problem.addVariable("nearest_rvertes", df["nearest_rvertes"].tolist())
problem.addVariable("nearest_murbain", df["nearest_murbain"].tolist())
problem.addVariable("nearest_fountain", df["nearest_fountain"].tolist())
problem.addVariable("nearest_iexterne", df["nearest_iexterne"].tolist())
problem.addVariable("nearest_pcyclable", df["nearest_pcyclable"].tolist())
# create constraint
variables = ["nearest_rev",
"nearest_fountain",
"nearest_rvertes",
"nearest_pcyclable",
"nearest_murbain",
"nearest_iexterne"]
problem.addConstraint(my_constraint, variables)
solutions = problem.getSolutions()
print(solutions) # return 2048 (what wrong?)