前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >cvxopt 示例简单讲解

cvxopt 示例简单讲解

作者头像
杨熹
发布2020-03-24 16:57:08
1.3K0
发布2020-03-24 16:57:08
举报
文章被收录于专栏:杨熹的专栏杨熹的专栏

Cvxopt 是基于 Python 语言的用于解决凸优化问题的免费包,可以用于求解纳什均衡问题的最优策略,好用但是不容易理解,

官网给的例子很简单,没有什么说明,初次见不太容易看出来代码中各字母的含义,这里就简单介绍一下:

下面代码要求解的优化问题如下所示:

  • 代码中 c 表示的是想要优化的问题中 x1 和 x2 的系数,即 2x1 + x2 = [2,1];
  • b 是限制条件中右侧的数字,注意要先将所有限制条件都转化为 <= 号之后再提取数字,上图的例子中,b = [ 1.0, -2.0, 0.0, 4.0 ];
  • A 是优化问题中 x1 和 x2 的系数,也是转化为 <= 号之后的:

然后就可以用 solvers.lp(c,A,b) 来求解。

代码语言:javascript
复制
A = [ 
  [-1.0, -1.0, 0.0, 1.0],   # for x1
  [1.0, -1.0, -1.0, -2.0]   # for x2
]
代码语言:javascript
复制
>>> from cvxopt import matrix, solvers
>>> A = matrix([ [-1.0, -1.0, 0.0, 1.0], [1.0, -1.0, -1.0, -2.0] ])
>>> b = matrix([ 1.0, -2.0, 0.0, 4.0 ])
>>> c = matrix([ 2.0, 1.0 ])
>>> sol=solvers.lp(c,A,b)
     pcost       dcost       gap    pres   dres   k/t
 0:  2.6471e+00 -7.0588e-01  2e+01  8e-01  2e+00  1e+00
 1:  3.0726e+00  2.8437e+00  1e+00  1e-01  2e-01  3e-01
 2:  2.4891e+00  2.4808e+00  1e-01  1e-02  2e-02  5e-02
 3:  2.4999e+00  2.4998e+00  1e-03  1e-04  2e-04  5e-04
 4:  2.5000e+00  2.5000e+00  1e-05  1e-06  2e-06  5e-06
 5:  2.5000e+00  2.5000e+00  1e-07  1e-08  2e-08  5e-08
>>> print(sol['x'])
[ 5.00e-01]
[ 1.50e+00]

学习资料: https://cvxopt.org/index.html https://stackoverflow.com/questions/32543475/how-python-cvxopt-solvers-qp-basically-works

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档