Я пытаюсь минимизировать уравнение x [0] + x [1] + x [2] + x [3] .
скажем, A = [5, 3,8,6]
Уравнение ограничения: A1 x [0] + A2 x [1] + A3 x [2] + A4 x [3] = 11 , где 0 <= x <= 1 и x должно быть целым числом (0 или 1). </p>
Ожидаемый результат для x равен [0,1,1,0]
Пожалуйста, помогите мне добиться этого.
Пожалуйста, найдите ниже код, что я пробовал.
код :
from scipy.optimize import minimize
#objective function definition
def objective(x):
return x[0]+x[1]+x[2]+x[3]
#constraint definition
def constraint1(x):
sum_eq = 11
a = [5,3,8,6]
for i in range(len(a)):
sum_eq = sum_eq - (a[i]*x[i])
return sum_eq
#set the bounds
b = (0,1)
bnds = (b,b,b,b)
cons1 = {'type':'eq','fun':constraint1}
#initialisation
x0 = [0,0,0,1]
sol = minimize(objective,x0,method='SLSQP',bounds=bnds, constraints=cons1)
print(sol.x)
выход :
[3.53445929e-16 3.83487389e-17 1.00000000e+00 5.00000000e-01]