书房就是我的全世界【头号玩家公会】简友学习交流园地

cvxopt 示例简单讲解

2020-03-20  本文已影响0人  不会停的蜗牛

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

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

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

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

A = [ 
  [-1.0, -1.0, 0.0, 1.0],   # for x1
  [1.0, -1.0, -1.0, -2.0]   # for x2
]
>>> 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

上一篇 下一篇

猜你喜欢

热点阅读