cvxpy学习笔记

您所在的位置:网站首页 最优值和最优解的区别 cvxpy学习笔记

cvxpy学习笔记

2024-07-14 08:59| 来源: 网络整理| 查看: 265

CVXPY的作用

与matlab中cvx的工具包类似,用于求解凸优化问题。cvx与cvxpy都是由CIT的Stephen Boyd教授课题组开发。cvx用于matlab的包,cvxpy是用于python的包。下载、安装及学习地址如下: CVX CVXPY

一、CVXPY入门 ## 简单例子 ## import cvxpy as cvx #定义优化变量 x = cvx.Variable() y = cvx.Variable() # 定义约束条件 constraints = [x + y == 1, x - y >= 1] # 定义优化问题 obj = cvx.Minimize((x - y)**2) # 定义优化问题 prob = cvx.Problem(obj, constraints) #求解问题 prob.solve() #返回最优值 print("status:", prob.status) #求解状态 print("optimal value", prob.value) #目标函数优化值 print("optimal var", x.value, y.value) #优化变量的值,相应变量加.value #运行结果 status: optimal optimal value 0.999999999761 #最优值视为 1(计算机精度问题) optimal var 1.00000000001 -1.19961841702e-11 (x=1,y=0) # 改变目标函数,利用已定义问题的约束,**问题被定义后,不可改变 prob2 = cvx.Problem(cvx.Maximize(x + y), prob.constraints) print("optimal value", prob2.solve()) # 改变约束 constraints = [x + y = 1, x = 2] prob = cvx.Problem(obj, constraints) # Solve with ECOS. prob.solve(solver=cvx.ECOS) print("optimal value with ECOS:", prob.value) # Solve with ECOS_BB. prob.solve(solver=cvx.ECOS_BB) print("optimal value with ECOS_BB:", prob.value) # Solve with CVXOPT. prob.solve(solver=cvx.CVXOPT) print("optimal value with CVXOPT:", prob.value) # Solve with SCS. prob.solve(solver=cvx.SCS) print("optimal value with SCS:", prob.value) # Solve with GLPK. prob.solve(solver=cvx.GLPK) print("optimal value with GLPK:", prob.value) # Solve with GLPK_MI. prob.solve(solver=cvx.GLPK_MI) print("optimal value with GLPK_MI:", prob.value) # Solve with GUROBI. prob.solve(solver=cvx.GUROBI) print("optimal value with GUROBI:", prob.value) # Solve with MOSEK. prob.solve(solver=cvx.MOSEK) print("optimal value with MOSEK:", prob.value) # Solve with Elemental. prob.solve(solver=cvx.ELEMENTAL) print("optimal value with Elemental:", prob.value) # Solve with CBC. prob.solve(solver=cvx.CBC) print("optimal value with CBC:", prob.value) optimal value with ECOS: 5.99999999551 optimal value with ECOS_BB: 5.99999999551 optimal value with CVXOPT: 6.00000000512 optimal value with SCS: 6.00046055789 optimal value with GLPK: 6.0 optimal value with GLPK_MI: 6.0 optimal value with GUROBI: 6.0 optimal value with MOSEK: 6.0 optimal value with Elemental: 6.0000044085242727 optimal value with CBC: 6.0 //Use the installed_solvers utility function to get a list of the solvers your installation of CVXPY //supports. print installed_solvers() ['CBC', 'CVXOPT', 'MOSEK', 'GLPK', 'GLPK_MI', 'ECOS_BB', 'ECOS', 'SCS' 变量类型 (Variable)

变量可以是标量、向量以及矩阵

# 标量 a = cvx.Variable() # 向量 x = cvx.Variable(5) # 矩阵大小为(5, 1). x = cvx.Variable((5, 1)) # 矩阵大小为(4, 7). A = cvx.Variable((4, 7))

cvxpy中可以做常数使用的用: - NumPy ndarrays - NumPy matrices - SciPy sparse matrices

# Solves a bounded least-squares problem. import cvxpy as cvx import numpy # Problem data. m = 10 n = 5 numpy.random.seed(1) A = numpy.random.randn(m, n) b = numpy.random.randn(m) # Construct the problem. x = cvx.Variable(n) objective = cvx.Minimize(cvx.sum_squares(A*x - b)) constraints = [0


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3