【问题标题】:How to solve nonlinear programming problem in Python如何在 Python 中解决非线性规划问题
【发布时间】:2020-02-27 17:51:09
【问题描述】:

我想解决一个非线性规划问题。目标函数是非线性的,约束是线性的。给定一个向量α(dim is n*1),我想找到另一个向量θ( dim also is n*1) 使 cos(α, θ) 最小化。同时θ 有一些限制。约束为A.dot(θ) < 0(零为列向量),dim 为m*n,m < n。

问题是,Given α(dim is n*1),昏暗的是m*n,m < n

minimize   cos(α, θ) = α^T.dot(θ) /(|α||θ|)
subject to 
           A.dot(θ) < 0  (zero dim m*1)

我尝试使用 scipy.optimize.minimize 来解决问题并输入约束。喜欢

scipy.optimize.minimize(method='SLSQP', constraints=cons)
scipy.optimize.minimize(method='COBYLA', constraints=cons)

方法的结果取决于初始值。我不知道如何得到一个合理的初始值,所以我设置的初始值是随机的。正如预期的那样,该方法给出了一个错误的结果,结果不符合约束条件。

【问题讨论】:

  • 目前这并不是真正的 Python 编程问题,您能否修改问题以包含给出错误答案的代码?这与MCVE 越接近,您获得的帮助就越多!

标签: python nonlinear-optimization scipy-optimize-minimize


【解决方案1】:

你需要定义你的不等式约束

def constraint1(A,θ):
    return np.dot(A,θ)

步骤描述optimization with scipy

然后,您将进行顺序最小二乘二次规划。你会看到一个非凸优化问题没有数学保证可以解决。

【讨论】:

  • 我已将约束添加到算法中。但这没有用。我知道它找不到全局最优解。但我只想得到一个满足约束的局部最优解。
猜你喜欢
  • 1970-01-01
  • 2011-07-27
  • 1970-01-01
  • 2015-05-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-01
相关资源
最近更新 更多