win7-64下Matlab2014配置安装SeDuMi_1.3及出现问题

最近论文需要解决一个凸优化问题,接触到了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\

win7-64下Matlab2014配置安装SeDuMi_1.3及出现问题_第1张图片

2.2 打开matlab,选择 设置路径–>添加并包含子文件夹–>选择刚刚的路径–>保存

win7-64下Matlab2014配置安装SeDuMi_1.3及出现问题_第2张图片

2.3 进入文件夹,找到install_sedumi.m文件打开

win7-64下Matlab2014配置安装SeDuMi_1.3及出现问题_第3张图片

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
win7-64下Matlab2014配置安装SeDuMi_1.3及出现问题_第4张图片
显示版本是8.3,则修改install_sedumi.m,把其中一处 VERSION(2)>=5改成自己的版本,我这里8.3就把5改成3,保存再运行一遍>>install_sedumi
win7-64下Matlab2014配置安装SeDuMi_1.3及出现问题_第5张图片
ispc——确定版本Windows(PC)平台;if ispc的意思就是如果是windows平台则继续此分支判断,显然由前面得到的值我们发现VERSION(2)应该大于等于3

2.5 安装成功

win7-64下Matlab2014配置安装SeDuMi_1.3及出现问题_第6张图片

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

你可能感兴趣的:(机器学习,matlab)