Py之cvxopt:cvxopt库的简介、安装、使用方法之详细攻略

简介: Py之cvxopt:cvxopt库的简介、安装、使用方法之详细攻略

cvxopt库的简介


      CVXOPT是一个基于Python编程语言的凸优化的免费软件包。它可以与交互式Python解释器一起使用,也可以通过执行Python脚本在命令行上使用,或者通过Python扩展模块集成到其他软件中。它的主要目的是通过构建Python的广泛标准库和Python作为一种高级编程语言的优势,使凸优化应用程序的软件开发变得简单。


官网:http://cvxopt.org/




cvxopt库的安装


pip install cvxopt


image.png





cvxopt库的使用方法


1、创建矩阵


CVXOPT有单独的稠密和稀疏矩阵对象。这个例子演示了创建密集和稀疏矩阵的不同方法。使用matrix()函数创建一个密集矩阵;它可以通过列表(或迭代器)创建:


>>> from cvxopt import matrix

>>> A = matrix([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], (2,3))

>>> print(A)

[ 1.00e+00  3.00e+00  5.00e+00]

[ 2.00e+00  4.00e+00  6.00e+00]

>>> A.size

(2, 3)

>>> B = matrix([ [1.0, 2.0], [3.0, 4.0] ])

>>> print(B)

[ 1.00e+00  3.00e+00]

[ 2.00e+00  4.00e+00]

>>> print(matrix([ [A] ,[B] ]))

[ 1.00e+00  3.00e+00  5.00e+00  1.00e+00  3.00e+00]

[ 2.00e+00  4.00e+00  6.00e+00  2.00e+00  4.00e+00]

>>> from cvxopt import spmatrix

>>> D = spmatrix([1., 2.], [0, 1], [0, 1], (4,2))

>>> print(D)

[ 1.00e+00     0    ]

[    0      2.00e+00]

[    0         0    ]

[    0         0    ]

>>> print(matrix(D))

[ 1.00e+00  0.00e+00]

[ 0.00e+00  2.00e+00]

[ 0.00e+00  0.00e+00]

[ 0.00e+00  0.00e+00]


2、求解线性规划


可以通过求解器.lp()函数指定线性程序




>>> 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]



相关文章
|
JSON 缓存 应用服务中间件
开源API网关APISIX源码分析(一)
开源API网关APISIX源码分析
687 0
|
数据采集 存储 Java
「多线程大杀器」Python并发编程利器:ThreadPoolExecutor,让你一次性轻松开启多个线程,秒杀大量任务!
「多线程大杀器」Python并发编程利器:ThreadPoolExecutor,让你一次性轻松开启多个线程,秒杀大量任务!
870 0
|
算法 IDE 开发工具
蓝桥杯备赛经验帖
本文是作者blue分享的蓝桥杯备赛经验帖,旨在帮助刚接触算法竞赛的新手。文章从个人参赛经历出发,详细介绍了蓝桥杯的OI赛制特点、比赛流程以及备赛建议。作者强调了重点掌握基础数论、DFS、数组操作、二分法、动态规划等知识,并建议多参与线上赛,熟悉输入输出规则,同时避免盲目刷题或过度依赖力扣。通过参赛,作者不仅提升了编码能力,还结识了优秀的朋友,认识到自身差距,激励自己不断进步。此经验适合新手参考,大佬可略过。
1558 6
|
Ubuntu Linux 网络安全
如何在Linux中更改主机名?修改主机名最新方法
本期教程将指导您如何在Linux系统中更改主机名。主机名是Linux系统的常用功能,用于识别服务器,帮助区分不同服务器,并与网络进程和其他应用程序协同工作。教程涵盖显示当前主机名的方法(通过`hostname`命令),以及在CentOS 7、Debian 9和Ubuntu 16.04及以上版本中更改主机名的步骤(使用`hostnamectl set-hostname`命令)。对于其他Linux版本,可编辑`/etc/hostname`文件实现更改。记得重启相关服务或服务器以使更改生效!
3001 12
|
数据采集 数据可视化 索引
Pandas数据应用:股票数据分析
本文介绍了如何使用Pandas库进行股票数据分析。首先,通过pip安装并导入Pandas库。接着,从本地CSV文件读取股票数据,并解决常见的解析错误。然后,利用head()、info()等函数查看数据基本信息,进行数据清洗,处理缺失值和重复数据。再者,结合Matplotlib和Seaborn进行数据可视化,绘制收盘价折线图。最后,进行时间序列分析,设置日期索引、重采样和计算移动平均线。通过这些步骤,帮助读者掌握Pandas在股票数据分析中的应用。
954 5
|
机器学习/深度学习 算法 5G
基于MIMO系统的SDR-AltMin混合预编码算法matlab性能仿真
基于MIMO系统的SDR-AltMin混合预编码算法通过结合半定松弛和交替最小化技术,优化大规模MIMO系统的预编码矩阵,提高信号质量。Matlab 2022a仿真结果显示,该算法能有效提升系统性能并降低计算复杂度。核心程序包括预编码和接收矩阵的设计,以及不同信噪比下的性能评估。
473 3
|
机器学习/深度学习 传感器 数据采集
使用Python实现深度学习模型:智能设备故障预测与维护
【10月更文挑战第10天】 使用Python实现深度学习模型:智能设备故障预测与维护
2049 2
|
机器学习/深度学习 传感器 数据采集
【BP回归预测】基于BP神经网络的回归预测附matlab完整代码
【BP回归预测】基于BP神经网络的回归预测附matlab完整代码
|
缓存 关系型数据库 MySQL
解决CentOS执行yum命令出现File contains parsing errors:file:///etc/yum.repos.d/CentOS-Base.repo
解决CentOS执行yum命令出现File contains parsing errors:file:///etc/yum.repos.d/CentOS-Base.repo
解决CentOS执行yum命令出现File contains parsing errors:file:///etc/yum.repos.d/CentOS-Base.repo
|
前端开发 Java 开发者
深入理解 Spring Boot 注解:核心功能与高级用法详解
深入理解 Spring Boot 注解:核心功能与高级用法详解
2068 1