Matlab 6.5 中使用LindoAPI 2.0(简介)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Matlab 6.5 中使用LindoAPI 2.0(简介)
(2003.04.02)
1. 安装LindoAPI
2.0
(1)下载LINDO API 2.0安装程序lindoDLL.exe, 直接运行进行安装(以下假设LINDO API 2.0安装目录为'C:\LINDOAPI')。
(2)建立MA TLAB与LINDO API 2.0之间的接口(以下假设MATLAB 6.5安装目录为'C:\ MATLAB6P5')。请按照以下步骤进行:
(2A)用任何文本编辑器直接编辑C:\MATLAB6P5\TOOLBOX\LOCAL\STARTUP.M 文件(通常直接打开MA TLAB,用MATLAB本身的程序编辑器编辑该文件)。如果该目录下没有该文件,则将该目录下的STARTUPSA V.M改名为STARTUP.M,然后进行编辑;并且,如果STARTUPSA V.M 或STARTUP.M中有"load matlab.mat"语句,则将该语句直接删除.
(2B)在STARTUP.M中增加以下程序行,然后保存文件,退出编辑器:
global MY_LICENSE_FILE
MY_LICENSE_FILE = 'C:\LINDOAPI\LICENSE\LICENSE.H';
path(path,'C:\LINDOAPI\BIN')
path(path,'C:\LINDOAPI\INCLUDE')
path(path,'C:\LINDOAPI\MA TLAB');
(2C)启动MA TLAB,在命令提示符下键入'mxLINDO',屏幕上将显示以下信息:
mxLINDO (R) Matlab Interface Version 2.x.x
for LINDO API (R) Version 2.x.x
Copyright (c) 2001-200x by LINDO Systems, Inc.
All rights reserved.
Usage: [z1,z2,..,zk] = mxLINDO('LSfuncName',a1,a2,...,an)
这就表示已经成功建立了MATLAB与LINDO API 2.0之间的接口。
2. 运行LINDOAPI2.0提供的优化问题实例
LINDOAPI2.0提供的优化问题的例子放在'C:\LINDOAPI\MA TLAB'目录下。启动MA TLAB,可以打开该目录下的‘.M’文件进行查看、编辑或运行(有些程序可以不需要输入参数直接运行,有些则只是子程序)。对于可以直接运行的程序,可以在命令提示符下键入这些文件的名称运行。
如‘LMTESTLP ’(线性规划)、“MLTESTNLP1”(非线性规划)、‘LMTESTQP ’(二次规划)、“MLTESTMINLP1”(非线性混合整数规划)等。一般来说,文件名中带有“TEST ”的程序是可以直接运行的实际例子,其他程序一般只是子程序。
3. ‘l msolvem’程序的使用 3.1 一般使用方法
该程序的“.M ”源文件放在'C:\LINDOAPI\MA TLAB'目录下,可用于求解目标函数和约束
函数均为二次函数(包括线性函数)的数学规划(包括整数规划),例如:线性规划(LP )、二次规划(QP )、混合整数线性规划(MIP )、混合整数二次规划(MIQP ),等等。优化问题的一般模型为:
}
,...,n-,{J j x u
x l m i b x Q x x a t s x Q x cx Max Min j i i i c
121,0 , 1
,...,1,0,?'.
.')(2
121⊆∈≤≤-=++是整数
其中Q c ,Q i 为n 阶对称方阵,c 、a i 为n 维(行)向量,l 、u 为n 维(列)向量,决策变
量为x (n 维列向量)。“?”表示任意一种比较符号(等于、大于等于、小于等于之一),J 为整数变量的下标集合。
最复杂的调用语法为:
[x,y,s,dj,pobj,solstat] = LMsolvem(A,b,c,csense,l,u,vtype, QCrows,QCvar1,QCvar2,QCcoef, objsen,solver,verbose)
输出参数最多为6个, 含义是:
x: 最优解;
y: 对偶最优解(影子价格);
s: 原问题的松弛变量;
dj: 对偶问题的松弛变量;
pobj: 最优目标值;
solstat: 程序求解结束状态.
3.2例1:线性规划
对于如下问题:
MIN {cx: Ax >=b}
其中
A = [1 1 1 1;
0.2 0.1 0.4 0.9;
0.15 0.10 0.10 0.80;
-30 -40 -60 -100 ]
b = [ 4000 3000 2000 -350000]'
c = [ 65 42 64 110]
编写MATLAB程序如下:
A = [
1.0000 1.0000 1.0000 1.0000;
0.2000 0.1000 0.4000 0.9000;
0.1500 0.1000 0.1000 0.8000;
-30.0000 -40.0000 -60.0000 -100.0000 ];
b = [ 4000 3000 2000 -350000]';
c = [ 65 42 64 110];
csense = 'GGGG';
l=[-Inf,-Inf,-Inf,-Inf];
[x,y,s,dj,obj,solstat] = LMsolvem(A, b, c, csense, l)