数学建模习题5.4

vvlin / 2024-10-16 / 原文

import numpy as np
from scipy.optimize import minimize

def objective(x):
return -np.sum(np.sqrt(x) * np.arange(1, 101))

def constraint1(x):
return x[1] - 10

def constraint2(x):
return 20 - (x[1] + 2*x[2])

def constraint3(x):
return 30 - (x[1] + 2x[2] + 3x[3])

def constraint4(x):
return 40 - (x[1] + 2x[2] + 3x[3] + 4*x[4])

def constraint5(x):
return 1000 - np.dot(x, np.arange(1, 101))

constraints = [
{'type': 'ineq', 'fun': constraint1},
{'type': 'ineq', 'fun': constraint2},
{'type': 'ineq', 'fun': constraint3},
{'type': 'ineq', 'fun': constraint4},
{'type': 'ineq', 'fun': constraint5}
]

bounds = [(0, None)] * 100
x0 = np.ones(100) * 0.1

result = minimize(objective, x0, method='SLSQP', constraints=constraints, bounds=bounds)

print('Optimal solution:', result.x)
print('Objective function value at optimal solution:', -result.fun)
print("2023310143005")