具有非线性约束的scipy.optimize

用户名

我有带有非线性约束的非线性函数,我想对其进行优化。我不知道如何使用scipy.optimize定义非线性约束。到目前为止,我的代码如下:

from math import cos, atan
import numpy as np
from scipy.optimize import minimize
import sympy as sy

def f(x):
    return 0.1*x*y

def ineq_constraint(x):
    x**2 + y**2 - (5+2.2*sy.cos(10*sy.atan(x/y)))**2
    return x,y

con = {'type': 'ineq', 'fun': ineq_constraint}
minimize(f,x0,method='SLSQP',constraints=con)
克莱布

这是代码中的一些小问题;这是修改后的版本(在下面说明):

from math import cos, atan
import numpy as np
from scipy.optimize import minimize


def f(x):
    return 0.1 * x[0] * x[1]

def ineq_constraint(x):
    return x[0]**2 + x[1]**2 - (5. + 2.2 * cos(10 * atan(x[0] / x[1])))**2


con = {'type': 'ineq', 'fun': ineq_constraint}
x0 = [1, 1]
res = minimize(f, x0, method='SLSQP', constraints=con)

res如下外观:

     fun: 0.37229877398896682
     jac: array([ 0.16372866,  0.22738743,  0.        ])
 message: 'Optimization terminated successfully.'
    nfev: 96
     nit: 22
    njev: 22
  status: 0
 success: True
       x: array([ 2.27385837,  1.63729975])

一个问题是,x并且y未在您的函数中定义,我分别x[0]替换了它们x[1]也无需使用sympy定义约束,而您想返回实际约束而不是xand y

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

具有线性约束的Scipy.optimize.minimize SLSQP失败

如何将参数传递给 scipy.optimize 中的非线性约束?

GEKKO和Scipy.optimize导致非线性参数估计的结果不同

如何使用scipy.optimize.least_squares获得鲁棒的非线性回归拟合?

如何在R中优化具有非线性约束的非线性目标函数?

对scipy.optimize函数使用约束向量

scipy.optimize.minimize忽略约束

非线性函数的Scipy约束优化

具有非线性目标(除法)的线性约束 MIP 的 CPLEX 与约束编程解决方案

使用scipy.optimize.linprog进行线性编程

scipy.optimize.minimize无法收敛于有约束的矩阵输入

scipy.optimize.minimize中的逐元素约束

Scipy&Optimize:最小化示例,如何添加约束?

scipy.optimize 约束方法中的边界数组形状问题

如何为scipy.optimize指定约束列表?

使用scipy.optimize.brute

scipy.optimize.minimize的精度

scipy.optimize中的LinearConstraint

scipy.optimize.minimize 多元

R中具有二次约束的单变量非线性优化

如何使用具有非线性约束的 LMFIT 解决最小二乘问题?

非线性约束 Cplex

为什么我没有通过 scipy.optimize 获得我想要的值。(线性规划问题)

函数具有其他参数时如何使用scipy.optimize.bisect()?

scipy.optimize.curve_fit ValueError:具有多个元素的数组的真值不明确

AttributeError:'numpy.ndarray'对象不具有pytorch和scipy.optimize的属性'dim'

在MATLAB中找到具有非线性等式和不等式约束的方程组的非线性系统的最小值

optimize.fmin_tnc在scipy.optimize中没有给出正确的答案?

是否有可能改变茱莉亚非线性约束的RHS?