【Python】使用CVXOPT库求解QP问题
用CVXOPT求解QP问题
在MPC中需要计算目标函数(cost function)的最小值,计算时可以将目标函数转化为QP问题,再用求解器算出
步骤:
1、导入CVXOPT库 2、创建matrix 3、导入求解器
1. 导入CVXOPT
// 一般计算矩阵要引入以下库 import math import numpy as np from cvxopt import solvers, matrix
2. 创建matrix
QP问题的标准格式如下:
// 将numpy算出的array/ndarray转化为CVXOPT的matrix mat_q = matrix(q) mat_p = matrix(p) mat_g = matrix(g) mat_h = matrix(h)
3. 导入求解器
// 求解器计算格式如下 sol = solvers.qp(mat_p,mat_q,G=mat_g,h=mat_h) // 计算结果例如: pcost dcost gap pres dres 0: 0.0000e+00 -8.9344e+00 9e+00 0e+00 0e+00 1: 0.0000e+00 -8.9344e-02 9e-02 3e-16 0e+00 2: 0.0000e+00 -8.9344e-04 9e-04 3e-16 0e+00 3: 0.0000e+00 -8.9344e-06 9e-06 2e-16 0e+00 4: 0.0000e+00 -8.9344e-08 9e-08 7e-17 0e+00 Optimal solution found. // 查看最优解 print(sol[x]) print(sol[primal objective]) // 写求解器前,不显示运算过程 solvers.options[show_progress] = False
有时会遇到类似 TypeError: G must be a d matrix of size (24, 9) 这种错误,是由于矩阵的维数没有算对导致的
下一篇:
贪心算法之活动安排问题C语言代码