Python CVXOPT+;GLPK-从LP解中提取拉格朗日乘子
我正在尝试使用CVXOPT的Python CVXOPT+;GLPK-从LP解中提取拉格朗日乘子,python,linear-programming,glpk,cvxopt,Python,Linear Programming,Glpk,Cvxopt,我正在尝试使用CVXOPT的solvers.lp和GLPK来解决一个具有不等式和等式约束的通用优化问题 一切正常,但我无法提取拉格朗日乘数 这是我的代码: #将numpy矩阵转换为cvxopt矩阵 c=cvxopt.矩阵(c)#(2666x4) A_in=cvxopt.矩阵(A_in) b_in=cvxopt.矩阵(b_in) A_eq=cvxopt.矩阵(A_eq) b_eq=cvxopt.矩阵(b_eq) #设置glpk优化程序设置 选项['glpk']={'msg_lev':'GLP_ms
solvers.lp
和GLPK来解决一个具有不等式和等式约束的通用优化问题
一切正常,但我无法提取拉格朗日乘数
这是我的代码:
#将numpy矩阵转换为cvxopt矩阵
c=cvxopt.矩阵(c)#(2666x4)
A_in=cvxopt.矩阵(A_in)
b_in=cvxopt.矩阵(b_in)
A_eq=cvxopt.矩阵(A_eq)
b_eq=cvxopt.矩阵(b_eq)
#设置glpk优化程序设置
选项['glpk']={'msg_lev':'GLP_msg_OFF'}
cvxopt.solvers.options['msg\u lev']='GLP\u msg\u OFF'
cvxopt.solvers.options['LP_K_MSGLEV']=0
cvxopt.solvers.options['Absol']=1e-3
cvxopt.solvers.options['reltol']=1e-2
cvxopt.solvers.options['feastol']=1
cvxopt.solvers.options['definition']=1
#使用glpk解决问题
res=cvxopt.solvers.lp(c,A_-in,b_-in,A=A_-eq,b=b_-eq,solver='glpk')
返回:
res = {
'dual infeasibility': 3.405900733836188e-17,
'dual objective': -146734334.08,
'dual slack': -0.0,
'gap': 0.0,
'primal infeasibility': 9.663381206337363e-12,
'primal objective': -146734334.08,
'primal slack': 0.0,
'relative gap': 0.0,
'residual as dual infeasibility certificate': None,
'residual as primal infeasibility certificate': None,
's': <5367x1 matrix, tc='d'>,
'status': 'optimal',
'x': <2666x1 matrix, tc='d'>,
'y': <1x1 matrix, tc='d'>,
'z': <5367x1 matrix, tc='d'>
}
查看
res
的y
和z
部分;他们是二人组,我知道。因为我来自MATLAB,他们和lambda有什么关系?我知道lambda.eqlin=y
,那么lambda.ineqlin
和z
是如何联系的?它们是一样的。看看y
和z
部分res
;他们是二人组,我知道。因为我来自MATLAB,他们和lambda有什么关系?我知道lambda.eqlin=y
,那么lambda.ineqlin
和z
是如何关联的呢?它们是一样的。