Однако результаты таковы:
Код: Выделить всё
Variable 0: 1.0 Variable 1: 1.0 Final sums: [0. 4. 0. 2. 0.] Initial sums (should match final sums): [0 2 0 1 0]Код: Выделить всё
import numpy as np
from scipy.optimize import minimize
Код: Выделить всё
data_matrix = np.array([
[-1114.75839, 0.0, 2.0, 0.0, 1.0, 0.0],
[+325.115366, 0.0, 2.0, 0.0, 1.0, 0.0]
])
Код: Выделить всё
initial_sum = np.array([0, 2, 0, 1, 0])
Код: Выделить всё
def objective(x):
return np.dot(data_matrix[:, 0], x)
def constraint_1(x):
return np.dot(data_matrix[:, 2], x) - initial_sum[1]
def constraint_2(x):
return np.dot(data_matrix[:, 4], x) - initial_sum[3]
cons = [
{'type': 'eq', 'fun': constraint_1},
{'type': 'eq', 'fun': constraint_2}
]
bounds = [(0, None) for _ in range(len(data_matrix))]
Код: Выделить всё
result = minimize(objective, np.ones(len(data_matrix)), method='SLSQP', bounds=bounds, constraints=cons, tol=1e-6)
optimized_x = np.where(np.abs(result.x) < 1e-5, 0, result.x)
optimized_values = optimized_x.tolist()
Код: Выделить всё
for i in range(len(optimized_values)):
print(f'Variable {i}: {optimized_values[i]}')
final_sums = np.dot(data_matrix[:, 1:6].T, optimized_x)
print(f'Final sums: {final_sums}')
print(f'Initial sums (should match final sums): {initial_sum}')`
Подробнее здесь: https://stackoverflow.com/questions/786 ... onstraints