python - 如何在 Python 中解决非线性规划问题
问题描述
我想解决一个非线性规划问题。目标函数是非线性的,约束是线性的。给定一个向量α(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)
方法的结果取决于初始值。我不知道如何得到一个合理的初始值,所以我设置的初始值是随机的。正如预期的那样,该方法给出了错误的结果,结果不符合约束条件。
解决方案
您需要定义不等式约束
def constraint1(A,θ):
return np.dot(A,θ)
这些步骤描述了使用 scipy 进行优化
然后你去顺序最小二乘二次规划。你会看到一个非凸优化问题没有数学保证可以解决。
推荐阅读
- c# - 使用 ManipulationDelta 事件 UWP 旋转边框
- gmail-api - 使用 HTTP 请求向 Gmail API 发送电子邮件时出错
- logging - 我们可以比所有 WARN 行更具体地使用 BurstFilter 吗?
- jquery - Jquery选择不适用于多行链接
- apache-spark - 具有太多可抢占节点的 Google dataproc spark 集群有时会挂起
- c# - 如何使用 C# 创建/导出到 .PVK 文件?
- sql-server - 将 SQL Server 2014 数据库(与 2008 兼容)导出到与 2012 兼容的备份文件中
- sql - 将各种无模式 JSON 转换为 (Postgre)SQL 中的规范化列
- ruby-on-rails - 配置相对 url 根时 resque-web 链接被破坏
- javascript - 如何从 react.js 的一页转到另一个 html 文件