Python 有没有办法解决n个约束条件下的约束优化函数(拉格朗日)?

Python 有没有办法解决n个约束条件下的约束优化函数(拉格朗日)?,python,Python,我试图用拉格朗日乘子求解约束优化函数 该函数包含两个未知变量:x,y,它们的值将被找到 这是我的工作代码: x, y, lamb = sp.symbols('x, y, lamb', real=True) func = sp.sqrt((x - tax_amount20) ** 2 + (y - tax_amount10) ** 2) # Target function const = (tax20 + 1)* x / tax20 + (tax10 +1) * y / tax10 - tota

我试图用拉格朗日乘子求解约束优化函数

该函数包含两个未知变量:x,y,它们的值将被找到

这是我的工作代码:

x, y, lamb = sp.symbols('x, y, lamb', real=True)
func = sp.sqrt((x - tax_amount20) ** 2 + (y - tax_amount10) ** 2)  # Target function
const = (tax20 + 1)* x / tax20 + (tax10 +1) * y / tax10 - total  # Constraint function 

# define lagrangian
lagrang = func - lamb * const

# gradient of Lagrangian
grad_lagrang = [sp.diff(lagrang, var) for var in [x, y, lamb]]

# solving
spoints = sp.solve(grad_lagrang, [x, y, lamb], dict=True)
有人能建议如何动态构建具有n个目标和约束的函数吗

例如

x、 y,z应该是:

1)目标功能

sp.sqrt((x - tax_amount20) ** 2 + (y - tax_amount10) ** 2 + (z - tax_amount15) ** 2)
(tax20 + 1)* x / tax20 + (tax10 +1) * y / tax10 + (tax15 +1) * z / tax15 - total
2)约束功能

sp.sqrt((x - tax_amount20) ** 2 + (y - tax_amount10) ** 2 + (z - tax_amount15) ** 2)
(tax20 + 1)* x / tax20 + (tax10 +1) * y / tax10 + (tax15 +1) * z / tax15 - total
因此,应根据可用变量的数量动态构建目标函数和约束函数


顺便说一句,我们总是知道函数的其他变量(即tax20TaxAmount20对于xtax10TaxAmount10对于y等等…

您是否尝试实现它,或者您是否可以使用带有解算器的库?@Roim我需要实现它。我现在用sympy解决它。