我试图最小化方程x[0]+x[1]+x[2]+x[3]
假设A=[5,3,8,6]
约束方程为a1x[0]+a2x[1]+a3x[2]+a4x[3]=11式中0<;=x<;=1和x应为整数(0或1)
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]
要解决这个问题,可以使用^{} 。首先,您需要定义一个函数,该函数将从您的等式返回
0
。然后使用参数对函数求值,以找到具有声明边界的解输出:
相关问题 更多 >
编程相关推荐