Python 有没有办法解决n个约束条件下的约束优化函数(拉格朗日)?
我试图用拉格朗日乘子求解约束优化函数 该函数包含两个未知变量:x,y,它们的值将被找到 这是我的工作代码: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, 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
因此,应根据可用变量的数量动态构建目标函数和约束函数
顺便说一句,我们总是知道函数的其他变量(即tax20和TaxAmount20对于x;tax10和TaxAmount10对于y等等…您是否尝试实现它,或者您是否可以使用带有解算器的库?@Roim我需要实现它。我现在用sympy解决它。