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]



相关文章
|
机器学习/深度学习 存储 算法
使用Python从零实现多分类SVM
本文将首先简要概述支持向量机及其训练和推理方程,然后将其转换为代码以开发支持向量机模型。之后然后将其扩展成多分类的场景,并通过使用Sci-kit Learn测试我们的模型来结束。
543 0
|
JSON 缓存 应用服务中间件
开源API网关APISIX源码分析(一)
开源API网关APISIX源码分析
558 0
|
3月前
|
算法 数据可视化 异构计算
SparseGPT:大规模语言模型的一次性精确剪枝——论文解读
SparseGPT提出首个可高效剪枝百亿参数大模型的一次性精确方法,通过稀疏回归与近似求解器实现高稀疏度下仍保持精度,支持半结构化稀疏与量化联合压缩,显著降低推理成本。
415 3
SparseGPT:大规模语言模型的一次性精确剪枝——论文解读
|
机器人 C++ Python
ROS2教程 02 功能包
本文是关于ROS2(机器人操作系统2)中功能包(package)管理的教程,介绍了如何检查功能包的依赖、创建新功能包、列出可执行文件、列出所有功能包、查询功能包的位置和描述信息,以及为C++和Python功能包配置必要的文件。
586 0
|
12月前
|
数据采集 数据可视化 索引
Pandas数据应用:股票数据分析
本文介绍了如何使用Pandas库进行股票数据分析。首先,通过pip安装并导入Pandas库。接着,从本地CSV文件读取股票数据,并解决常见的解析错误。然后,利用head()、info()等函数查看数据基本信息,进行数据清洗,处理缺失值和重复数据。再者,结合Matplotlib和Seaborn进行数据可视化,绘制收盘价折线图。最后,进行时间序列分析,设置日期索引、重采样和计算移动平均线。通过这些步骤,帮助读者掌握Pandas在股票数据分析中的应用。
568 5
|
机器学习/深度学习 算法 5G
基于MIMO系统的SDR-AltMin混合预编码算法matlab性能仿真
基于MIMO系统的SDR-AltMin混合预编码算法通过结合半定松弛和交替最小化技术,优化大规模MIMO系统的预编码矩阵,提高信号质量。Matlab 2022a仿真结果显示,该算法能有效提升系统性能并降低计算复杂度。核心程序包括预编码和接收矩阵的设计,以及不同信噪比下的性能评估。
313 3
|
机器学习/深度学习 传感器 数据采集
使用Python实现深度学习模型:智能设备故障预测与维护
【10月更文挑战第10天】 使用Python实现深度学习模型:智能设备故障预测与维护
1810 2
|
设计模式 监控 Java
深入理解Spring Cloud中的断路器模式
深入理解Spring Cloud中的断路器模式
|
机器学习/深度学习 算法 数据挖掘
基于改进K-means的网络数据聚类算法matlab仿真
**摘要:** K-means聚类算法分析,利用MATLAB2022a进行实现。算法基于最小化误差平方和,优点在于简单快速,适合大数据集,但易受初始值影响。文中探讨了该依赖性并通过实验展示了随机初始值对结果的敏感性。针对传统算法的局限,提出改进版解决孤点影响和K值选择问题。代码中遍历不同K值,计算距离代价,寻找最优聚类数。最终应用改进后的K-means进行聚类分析。
318 10
|
机器学习/深度学习 传感器 数据采集
【BP回归预测】基于BP神经网络的回归预测附matlab完整代码
【BP回归预测】基于BP神经网络的回归预测附matlab完整代码