前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >求解器LINGO软件,线性通用优化求解器Lingo中文版下载安装教程

求解器LINGO软件,线性通用优化求解器Lingo中文版下载安装教程

作者头像
用户10413399
发布2023-03-16 13:14:31
9340
发布2023-03-16 13:14:31
举报
文章被收录于专栏:软件安装技巧软件安装技巧

在优化求解器的世界里,LINGO是一匹黑马。 它的名字“Linear Interactive and General Optimizer”的缩写,既不华丽,也不花哨,但它拥有着强大的功能。它可以用于非线性规划的求解,也可以用于线性和非线性方程组的求解等。而且,它的特色在于内置建模语言和十几个内部函数,可以允许决策变量是整数,包括 0-1 整数规划。这使得LINGO非常灵活和方便,而且执行速度也非常快。此外,LINGO还可以方便地与其他软件交换数据,如EXCEL,数据库等。

c78d64684600435892f6ce5a8369a660.png
c78d64684600435892f6ce5a8369a660.png

然而,LINGO的魅力并不仅仅在于它的功能。LINGO18.0作为最新版本,其创新之处在于它可以更快地处理大规模的问题,让用户更快地得到结果。此外,它还能够自动地进行可行性分析,使得问题的求解更加准确。除此之外,LINGO还能够进行敏感性分析和参数优化,为用户提供更多的决策支持。如果您正在寻找一个优秀的优化求解器,LINGO18.0绝对是一个值得尝试的选择。

QQ浏览器截图20230316131024.png
QQ浏览器截图20230316131024.png

linggo提取地

pspuzi.com/?PbWDFKMBKUWS

总之,LINGO的强大功能、灵活性和执行速度使其成为一款不可多得的优化求解器。通过LINGO,您可以轻松地解决各种线性和非线性问题,并获得准确和高效的结果。如果您正在寻找一个性能卓越的优化求解器,那么LINGO18.0绝对是一个值得选择的工具。

LINGO安装教程

1.右键解压到“Lingo 18.0”

2.打开【Setup】文件夹

3.选中Lingo 18.0,右击选择“以管理员身份运行”

4.点“Next”

5.选中I accept the terms in the license agreement,点“Next”

6.选择软件安装路径,点“Next”

7.点“Install”

8.软件正在安装

9.点“Finish”

10.打开【Crack】文件夹

11.复制Lingo_v18_x64_patcher文件

12.粘贴到软件安装位置(第6步设置的路径)

13.选中Lingo_v18_x64_patcher,右击选择“以管理员身份运行”

14.安装成功,关闭该界面

假设WWW公司有6个仓库,储存着8个分厂生产所需要的原材料。要求每一个仓库的供应量不能超过储存量,而且每一个分厂的需求必须得到满足。问:如何组织运输,使总运输费用最小?已知从6个仓库到8个分厂的运输费用表。

这个问题是一个典型的优化问题,通常称为运输问题。具体求解过程如下。

第一步:写出模型语言

1 构造目标函数。根据问题要求,可以设VOLUME_I_J表示从第I个仓库到第J个分厂运输原材料数。那么,总运费最小的目标函数为

MIN = 6 * VOLUME_1_1 + 2 * VOLUME_1_2 +

6 * VOLUME_1_3 + 7 * VOLUME_1_4 +

4 * VOLUME_1_5 +

·

·

·

8 * VOLUME_6_5 + VOLUME_6_6 + 4 * VOLUME_6_7 +

3 * VOLUME_6_8;

很显然,这样输入太麻烦,如果用Lingo模型语言来描述则简洁的多。

首先将目标函数表示为我们熟悉的数学语言

Minimize aijCOSTij*VOLUMEij

然后将其转化为Lingo模型语言

MIN = @SUM( LINKS(I,J): COST(I,J) * VOLUME(I,J));

数学语言和Lingo模型语言之间的关系为:

数学语言 Lingo模型语言

Minimize MIN =aij @SUM( LINKS( I, J): )

COST ij COST(I,J)

* *

VOLUME ij VOLUME(I,J)

2 构造约束函数。

第j个分厂的需求:VOLUME_1_j + VOLUME_2_j + VOLUME_3_j +

VOLUME_4_j + VOLUME_5_j + VOLUME_6_j = 35;

则每一个分厂的需求用数学语言描述为

ai VOLUMEij = DEMANDj, 对所有j 分厂

Lingo模型语言描述为

@FOR( VENDORS( J):

@SUM( WAREHOUSES( I): VOLUME( I, J)) = DEMAND( J));

数学语言和Lingo模型语言之间的关系为:

数学语言 Lingo模型语言

for all j inVENDORS @FOR( VENDORS( J): )

ai @SUM( WAREHOUSES( I): )

VOLUME ij VOLUME( I, J)

= =

DEMAND j DEMAND( J)

第i个仓库的供应:ai VOLUME ij <= CAP i ,

每一个仓库的供应能力约束为 aj VOLUME ij <= CAP i , 对所有i 仓库

Lingo模型语言描述为

@FOR( WAREHOUSES( I):

@SUM( VENDORS( J): VOLUME( I, J))<= CAPACITY( I));

这样,我们就把运输问题的两个约束都用Lingo模型语言写出来了。从而就得到了一个完整的模型:

MODEL:

MIN = @SUM( LINKS( I, J): COST( I, J) * VOLUME( I, J));

@FOR( VENDORS( J):

@SUM( WAREHOUSES( I): VOLUME( I, J)) =DEMAND( J));

@FOR( WAREHOUSES( I):

@SUM( VENDORS( J): VOLUME( I, J)) <=CAPACITY( I));

END

但是,我们还没有定义模型中的变量,且没有把已知数据传进来。

第二步:定义变量集合

在这个问题中,我们要定义三个集合,即:仓库集合、分厂集合及运输集合。

定义方式如下:

SETS:

WAREHOUSES / WH1 WH2 WH3 WH4 WH5 WH6/: CAPACITY;

VENDORS / V1 V2 V3 V4 V5 V6 V7 V8/ : DEMAND;

LINKS( WAREHOUSES, VENDORS): COST, VOLUME;

ENDSETS

在这个定义中,三个变量集合包含在SETS和ENDSETS之间。仓库集合命名为WAREHOUSES,其中包含六个元素WHi(即六个仓库),且每个元素都有一个共同属性是供应量,命名为CAPACITY。分厂集合命名为VENDORS,其中包含八个元素Vj(即八个分厂),每个元素都有一个共同属性是需求量,命名为DEMAND。运输集合是由前两个集合派生出来的,用LINKS( WAREHOUSES, VENDORS)来表示这种派生关系,它中间包含48个元素,表示了从6个仓库到8个分厂之间的运输情况,其中每一个元素有两个属性,运输费用COST和运输量VOLUME。这样,我们就把模型中需要的所有变量都定义过了。

第三步:输入模型数据

按照所定义的变量,输入数据,格式如下:

DATA:

CAPACITY = 60 55 51 43 41 52;

DEMAND = 35 37 22 32 41 32 43 38;

COST = 6 2 6 7 4 2 5 9

4 9 5 3 8 5 8 2

5 2 1 9 7 4 3 3

7 6 7 3 9 2 7 1

2 3 9 5 7 2 6 5

5 5 2 2 8 1 4 3;

ENDDATA

可以看出,所有输入的数据都必须包含在DATA和ENDDATA之间。

经过这三步之后,我们就可以得到一个完整的Lingo文件。

MODEL:

!六个仓库供应八个分厂的一个运输问题;

SETS:

WAREHOUSES/ WH1 WH2 WH3 WH4 WH5 WH6/: CAPACITY;

VENDORS/ V1 V2 V3 V4 V5 V6 V7 V8/: DEMAND;

LINKS (WAREHOUSES, VENDORS): COST, VOLUME;

ENDSETS

!目标函数;

MIN = @SUM( LINKS( I, J): COST( I, J) * VOLUME( I, J));

!分厂需求约束;

@FOR( VENDORS( J):

@SUM( WAREHOUSES( I): VOLUME( I, J)) =DEMAND( J));

!仓库供应约束;

@FOR( WAREHOUSES( I):

@SUM( VENDORS( J): VOLUME( I, J)) <=CAPACITY( I));

!输入数据;

DATA:

CAPACITY = 60 55 51 43 41 52;

DEMAND = 35 37 22 32 41 32 43 38;

COST = 6 2 6 7 4 2 5 9

4 9 5 3 8 5 8 2

5 2 1 9 7 4 3 3

7 6 7 3 9 2 7 1

2 3 9 5 7 2 6 5

5 5 2 2 8 1 4 3;

ENDDATA

END

求解可得:

Optimal solution found at step: 16

Objective value: 664.0000

求解报告(非零解)

Variable Value Reduced Cost

VOLUME( WH1, V2) 19.00000 0.0000000

VOLUME( WH1, V5) 41.00000 0.0000000

VOLUME( WH2, V4) 32.00000 0.0000000

VOLUME( WH2, V8) 1.000000 0.0000000

VOLUME( WH3, V2) 12.00000 0.0000000

VOLUME( WH3, V3) 22.00000 0.0000000

VOLUME( WH3, V7) 17.00000 0.0000000

VOLUME( WH4, V6) 6.000000 0.0000000

VOLUME( WH4, V8) 37.00000 0.0000000

VOLUME( WH5, V1) 35.00000 0.0000000

VOLUME( WH5, V2) 6.000000 0.0000000

VOLUME( WH6, V6) 26.00000 0.0000000

VOLUME( WH6, V7) 26.00000 0.0000000

通过前面两个例题,我们已经知道了如何利用Lingo软件去求解简单优化问题和比较复杂的优化问题。但是,这还不够,在变量集合的定义中,如果集合中的元素比较多,那么,采用枚举的定义方式就显得不合适;在输入数据时,如果数据量比较大,那么,采用在命令窗口中直接输入的方式就不可取。

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
作者已关闭评论
0 条评论
热度
最新
推荐阅读
目录
  • LINGO安装教程
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档