matlab下配置lpsolve

来源:互联网 发布:python统计词频 编辑:程序博客网 时间:2024/05/16 14:58

很简单,这里做个笔记,方便下次使用

1. 首先确定自己的操作系统是多少位的,自己的matlab是多少位的,如果操作系统为64位,尽可能安装64位matlab。

   我这里的环境是:操作系统 Win7 32位,Matlab2013b 32位

2. 去 Sourceforge下载 lpsolve的文件,因为lpsolve下有很多文件,一定要根据自己的操作系统选择恰当的文件,不然

   很容易发生错误。我这里主要面向Windows系统,在下载文件时一定要下载带有 xxx_win32.zip 或 xxx_win64.zip (面向64位系统和matlab)。

    这里主要下载两个文件,我是32位系统,下载的文件如下图所示:

    再次强调:一定要下载 xxx_win32.zip (32位系统) 或 xxx_win64.zip (64位系统),其它文件许多是面向 Linux/Unix或Max OS的,下载错了,在Windows下不能运行

3、设置matlab与lpsolve之间的联结

解压 lp_solve_5.5.2.0_MATLAB_exe_win32.zip 到 lp_solve_5.5.2.0_MATLAB_exe_win32 (自己新建一个目录,取个名字) 目录下,解压完成后如下图:

其中 mxlpsolve.m 是提供给 matlab 调用的,下面做很重要的一个步骤

复制上图中 bin 目录下(即 lp_solve_5.5.2.0_MATLAB_exe_win32 \bin 目录下)的 mxlpsolve.mexw32 (64位系统为mxlpsolve.mexw64)文件 到 lp_solve_5.5.2.0_MATLAB_exe_win32 目录下,即和 mxlpsolve.m文件处在同一个目录下,完成后如下图所示:

下面设置 matlab 的 path 变量,使其能搜索到 F:\lpsolve\lp_solve_5.5.2.0_MATLAB_exe_win32 目录,在 matlab 命令容口中输入:pathtool, 并添加F:\lpsolve\lp_solve_5.5.2.0_MATLAB_exe_win32 目录到 path 中,保存。设置如下图:


这时在matlab中命令行中输入:mxlpsolve 一般会提示如下错误:

 Failed to initialise lpsolve library. Error

这是因为我们只配置了 matlab和lpsolve之间的通路,并没有配置 lpsolve 的真正的 c++ 写的解析库的位置, 这个库是一个 lpsolve55.dll  文件。

4. 放置 lpsolve55.dll 文件到 windows path 中

在 matlab 命令中输入:!path 命令 (注意,不是 path 命令,前面多了个英文状态下的感叹号) ,输出的结果如下:

PATH=C:\Program Files\MATLAB\R2013b\bin\win32;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files\Windows7Master;C:\Program Files\Java\jdk1.7.0_71\bin;C:\Program Files\MATLAB\R2013b\runtime\win32;C:\Program Files\MATLAB\R2013b\bin

上面的path变量中包含多个目录(以";" 号分割),这些目录都是 windows可以搜索到的。我们可以把 lpsolve55.dll 文件放到上面目录中的任何一个, 这里我选择放在

C:\Program Files\MATLAB\R2013b\bin  目录下,注意: 每个人的机器不同,你可能并没有我这个目录,但你可以把 lpsolve55.dll 放置在上面 path 变量列出的任何一个目录中,当然最好放在 matlab 有关的目录下吧。 (你如果愿意自己建个目录,并把它加到 path 环境变量中也行,只要明白原理即可),放置好后如下图所示:


5. 测试

在 matlab 中 输入 mxlpsolve 命令进行测试,如果输出如下信息表明配置成功:

mxlpsolve MATLAB Interface version 5.5.0.6using lpsolve version 5.5.2.0Usage: [ret1, ret2, ...] = mxlpsolve('functionname', arg1, arg2, ...)


6. 由于我是使用 yalmip 直接调用 lpsolve,所以如何在 matlab中使用 lpsolve 我并不知道。

(关于 yalmip的简单配置会另出一篇博客)



2 0
原创粉丝点击