MATLAB搭建LINGO环境并调用LINDO API求解线性规划等问题

一:安装LINGO环境

1、64-bit LINDO API下载地址:http://www.lindo.com/downloads/LAPI-WINDOWS-64x86-9.0.zip

下载之后选择默认路径进行安装

2、配置startup.m文件

1)打开MATLAB安装目录下toolbox\local(比如我的路径是D:\matlab\toolbox\local)的startupsav.m文件改为startup.m

2)将startup.m 文件中 load matlab.mat这句话用"%"屏蔽掉。然后将下列语句拷过来

    global MY_LICENSE_FILE
    MY_LICENSE_FILE = 'C:\LINDOAPI\LICENSE\lndapi90.lic';
    path(path,'C:\LINDOAPI\BIN\WIN64')
    path(path,'C:\LINDOAPI\INCLUDE')
    path(path,'C:\LINDOAPI\MATLAB');

3)启动MATLAB,在命令提示符下键入 'mxlindo',屏幕上将显示以下信息表示运行成功

mxLINDO (R) Version 9.0.251
Matlab Interface for LINDO API (R) Version 9.0.2528.303, Built Nov  8 2016 13:42:21
Barrier Solver Version 7.1.0.053, Nonlinear Solver Version 3.15P
Platform Windows 64x86 (B)
Copyright (c) 2001-2014 by LINDO Systems, Inc.

All rights reserved.

Usage: [z1,z2,..,zk] = mxLINDO('LSfuncName',a1,a2,...,an)

二:调用lindo API解决线性规划问题

函数为:[x, y, s, dj, obj, solstat] = LMsolvem(A, b, c, csense, l, u,vtype, QCrows, QCvars1, QCvars2, QCcoef);

输入参数:
A:约束条件所有左端项(参数),每个约束用分号隔开
b:约束条件所有右端项(结果)
c:目标参数
csense:对应于约束类型(缺省为“E”);“L”表示“>=”、“G”表示“<=”、“E”表示“=”
l和u:决策变量x的下界(缺省为0)、上界(缺省为正无穷)
vtype:表示决策变量x的类型(缺省为“C”);“C”表示连续变量(实数)、“I”表示一般整数变量、“B”表示0-1变量;
QCrows: 具有相同维数的向量,用来确定n阶对称方阵Qc,Qi的具体值(缺省为0); 表示“约束指标”(-1对应于Qc,i(0到m-1)对应于Qi)
QCvar1:表示的Qi 的“行”
QCvar2:表示的Qi 的“列”
QCcoef:表示矩阵元素的具体值
输出参数:
x:最优解
y:对偶最优解(影子价格)
s:原问题的松弛变量
dj:对偶问题的松弛变量
obj:最优目标值
solstat:程序求解结束状态.

例如求解以下整数规划:

z=5x1+3x2+x3;

3x1+x2<=10

x1+x2+x3<=5;

2x2+x3<=8;

在MATLAB上调用LINDO求解整数规划代码如下:

A= [3 1 0; 1 1 1; 0 2 1];
b=[10 5 8];
c=[5 3 1]; csense = 'GGG'; vtype = 'III';
[x,y,s,dj,obj,solstat] = LMsolvem(A, b, c, csense, [], [],vtype); 
x

求解结果为:

x =
     2
     4
     0

  • 1
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值