首页 > 其他分享 >数学建模习题5.5

数学建模习题5.5

时间:2024-10-14 23:34:34浏览次数:14  
标签:return 5.5 2x 建模 fun 习题 ineq type def

import numpy as np
from scipy.optimize import minimize

def objective(x):
return 2x[0] + 3x[0]2 + 3*x[1] + x[1]2 + x[2]

def constraint1(x):
return 10 - (x[0] + 2x[0]**2 + x[1] + 2x[1]**2 + x[2])

def constraint2(x):
return 50 - (x[0] + x[0]2 + x[1] + x[1]2 - x[2])

def constraint3(x):
return 40 - (2x[0] + x[0]**2 + 2x[1] + x[2])

def constraint4(x):
return x[0]**2 + x[2] - 2

def constraint5(x):
return 1 - (x[0] + 2*x[1])

constraints = [
{'type': 'ineq', 'fun': constraint1},
{'type': 'ineq', 'fun': constraint2},
{'type': 'ineq', 'fun': constraint3},
# {'type': 'eq', 'fun': constraint4}, # 注释掉,因为SLSQP不支持等式约束
{'type': 'ineq', 'fun': constraint5}
]

注意:我们只关心x[0], x[1], x[2],所以只设置这三个变量的边界和初始猜测

bounds = [(0, None)] * 3
x0 = np.array([0.1, 0.1, 0.1]) # 使用numpy数组来确保正确的数据类型

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")

标签:return,5.5,2x,建模,fun,习题,ineq,type,def
From: https://www.cnblogs.com/vvlin/p/18466477

相关文章