最近论文需要解决一个凸优化问题,接触到了SeDuMi工具包,网上查了一些资料并按照最新的版本实际配置成功。
1 SeDuMi的下载:http://sedumi.ie.lehigh.edu/
我这里下载的是SeDuMi 1.3
2 Matlab配置SeDuMi工具包
2.1 解压安装包,配置matlab安装路径。我这里把解压后的文件复制到matlab的toolbox包下D:\Program Files\MATLAB\R2014a\toolbox\
2.2 打开matlab,选择 设置路径–>添加并包含子文件夹–>选择刚刚的路径–>保存
2.3 进入文件夹,找到install_sedumi.m文件打开
2.4 命令行输入>>install_sedumi,出现错误
Building SeDuMi binaries…
mex -O -DPC -largeArrayDims bwblkslv.c sdmauxFill.c sdmauxRdot.c “D:\Program Files\MATLAB\R2014a\extern\lib\win64\microsoft\libmwlapack.lib”
使用 ‘Microsoft Visual C++ 2013 Professional ©’ 编译。
错误使用 mex
正在创建库 bwblkslv.lib 和对象 bwblkslv.exp
sdmauxRdot.obj : error LNK2019: 无法解析的外部符号 ddot,该符号在函数 realdot 中被引用
bwblkslv.mexw64 : fatal error LNK1120: 1 个无法解析的外部命令
出错 install_sedumi (line 113)
eval( temp );
这是由于安装的matlab版本配置出了问题,首先我们查找matlab的版本,输入>>version
显示版本是8.3,则修改install_sedumi.m,把其中一处 VERSION(2)>=5改成自己的版本,我这里8.3就把5改成3,保存再运行一遍>>install_sedumi
ispc——确定版本Windows(PC)平台;if ispc的意思就是如果是windows平台则继续此分支判断,显然由前面得到的值我们发现VERSION(2)应该大于等于3
2.5 安装成功
3 测试
测试样例及运行结果:
>> b=[1 4]';
>> A=[-1 1 0 1 1;0 0 -1 1 2];
>> c=[0 2 0 3.5 6];
>> [x, y, info]=sedumi(A,b,c)
SeDuMi 1.3 by AdvOL, 2005-2008 and Jos F. Sturm, 1998-2003.
Alg = 2: xz-corrector, Adaptive Step-Differentiation, theta = 0.250, beta = 0.500
eqs m = 2, order n = 6, dim = 6, blocks = 1
nnz(A) = 7 + 0, nnz(ADA) = 4, nnz(L) = 3
it : b*y gap delta rate t/tP* t/tD* feas cg cg prec
0 : 4.58E+01 0.000
1 : 8.27E+00 1.37E+01 0.000 0.2992 0.9000 0.9000 1.99 1 1 1.3E+00
2 : 1.15E+01 3.16E+00 0.000 0.2304 0.9000 0.9000 1.81 1 1 2.4E-01
3 : 1.19E+01 5.77E-01 0.000 0.1826 0.9000 0.9000 1.19 1 1 4.1E-02
4 : 1.20E+01 2.97E-03 0.000 0.0051 0.9990 0.9990 1.01 1 1
iter seconds digits c*x b*y
4 0.6 15.8 1.2000000000e+01 1.2000000000e+01
|Ax-b| = 8.8e-16, [Ay-c]_+ = 8.6E-20, |x|= 2.2e+00, |y|= 3.0e+00
Detailed timing (sec)
Pre IPM Post
2.929E+00 1.109E+00 1.830E-01
Max-norms: ||b||=4, ||c|| = 6,
Cholesky |add|=0, |skip| = 0, ||L.L|| = 1.80888.
x =
(1,1) 1.0000
(5,1) 2.0000
y =
-0.0000
3.0000
info =
iter: 4
feasratio: 1
pinf: 0
dinf: 0
numerr: 0
timing: [2.9290 1.1090 0.1830]
wallsec: 4.2210
cpusec: 1.1232
参考:
SeDuMi 安装与测试:http://blog.sina.com.cn/s/blog_6920072701012efx.html