请同学们掌握调课的方法...

54
LINGO 实实 华华华华华华华华华华 实实实实实实实实实实实 实实实实实 实实实实实实 实实实 一, 实实实实实实实实实实实实实实实实实实实 实实实实实 实实 实实 实实实实实实 实实实实实 一。,。 实实实 实实实实实实实实 ,。

Upload: leland

Post on 13-Jan-2016

81 views

Category:

Documents


6 download

DESCRIPTION

请同学们掌握调课的方法 课程只能在一周之内调动,即不能把本周的课调到下周。 第五次课也是课堂作业,望同学们要预习一下。仓促做作业,效果很差。 系统的问题,我们会逐步解决。. 系统可自由进行课堂调整. 第一步,登陆试验管理系统,点击“预约明细”,点击“大学数学实验”. 第二步,在调整的项目后点击“删除”,弹出窗口. 第三步,在周次后点击“第四周”(原时间在哪周就调整到哪周),弹出窗口. 第四步,点击可选课堂,在弹出窗口下面选择实验室。点击窗口下方的“确定”以及弹出的提示窗口的“确定”。. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 请同学们掌握调课的方法 课程只能在一周之内调动,即不能把本周的课调到下周。 第五次课也是课堂作业,望同学们要预习一下。仓促做作业,效果很差。

LINGO实验华中农业大学建模基地

请同学们掌握调课的方法 课程只能在一周之内调动,即

不能把本周的课调到下周。 第五次课也是课堂作业,望同

学们要预习一下。仓促做作业,效果很差。

系统的问题,我们会逐步解决。

Page 2: 请同学们掌握调课的方法 课程只能在一周之内调动,即不能把本周的课调到下周。 第五次课也是课堂作业,望同学们要预习一下。仓促做作业,效果很差。

LINGO实验华中农业大学建模基地系统可自由进行课堂调整第一步,登陆试验管理系统,点击“预约明

细”,点击“大学数学实验”

Page 3: 请同学们掌握调课的方法 课程只能在一周之内调动,即不能把本周的课调到下周。 第五次课也是课堂作业,望同学们要预习一下。仓促做作业,效果很差。

LINGO实验华中农业大学建模基地

第二步,在调整的项目后点击“删除”,弹出窗口

Page 4: 请同学们掌握调课的方法 课程只能在一周之内调动,即不能把本周的课调到下周。 第五次课也是课堂作业,望同学们要预习一下。仓促做作业,效果很差。

LINGO实验华中农业大学建模基地

第三步,在周次后点击“第四周”(原时间在哪周就调整到哪周),弹出窗口

Page 5: 请同学们掌握调课的方法 课程只能在一周之内调动,即不能把本周的课调到下周。 第五次课也是课堂作业,望同学们要预习一下。仓促做作业,效果很差。

LINGO实验华中农业大学建模基地第四步,点击可选课堂,在弹出窗口下面选择实验室。点击窗口下方的“确定”以及弹出的提示窗口的“确定”。

第五步,再次点击“预约明细”,点击“大学数学实验”,才能查看修改后的信息

Page 6: 请同学们掌握调课的方法 课程只能在一周之内调动,即不能把本周的课调到下周。 第五次课也是课堂作业,望同学们要预习一下。仓促做作业,效果很差。

华中农业大学建模基地

优化软件 LINGO 使用入门

Lingo12 初步

Page 7: 请同学们掌握调课的方法 课程只能在一周之内调动,即不能把本周的课调到下周。 第五次课也是课堂作业,望同学们要预习一下。仓促做作业,效果很差。

LINGO实验华中农业大学建模基地

- LINGO 入门-

初始印象1

傻瓜输入法2

“ 段”的使用

3

数据交换4

程序结构与调试5

Page 8: 请同学们掌握调课的方法 课程只能在一周之内调动,即不能把本周的课调到下周。 第五次课也是课堂作业,望同学们要预习一下。仓促做作业,效果很差。

LINGO实验华中农业大学建模基地

界面介绍工具栏文件类型运行过程求解器状态窗口求解报告窗口

-初始印象-

Page 9: 请同学们掌握调课的方法 课程只能在一周之内调动,即不能把本周的课调到下周。 第五次课也是课堂作业,望同学们要预习一下。仓促做作业,效果很差。

LINGO实验华中农业大学建模基地

-界面介绍-• LINGO 软件的主窗口(用

户界面),所有其他窗口都在这个窗口之内。

• 模型窗口( Model Window ),用于输入 LINGO 优化模型(即 LINGO 程序)。

• 状态行(最左边显示“ Ready” ,表示 “准备就绪”)

• 当前时间

• 当前光标的位置

Page 10: 请同学们掌握调课的方法 课程只能在一周之内调动,即不能把本周的课调到下周。 第五次课也是课堂作业,望同学们要预习一下。仓促做作业,效果很差。

LINGO实验华中农业大学建模基地

-工具栏-

File|Open

( F3 )打开文件

File|Print

( F7 )打印文件

Edit|Copy

(Ctrl+C)

复制

Edit|Undo

(Ctrl+Z)

取消操作

Edit|Find

(Ctrl+F)

查找

LINGO|Solution

(Alt+O) 显示解答

Edit|Match Parenthesis

(Ctrl+P)

匹配括号

LINGO|Options

(Ctrl+I)

选项设置

Window|Close All

(Alt+X)

关闭所有窗口

File|New

( F2 )新建文件

File|Save

(F4)

保存文件

Edit|Cut

(Ctrl+X)

剪切

Edit|Paste

(Ctrl+V)

粘贴

Edit|Redo

(Ctrl+Y)

恢复操作

Edit | Go To Line

(Ctrl+T)

定位某行

LINGO|Solve

(Ctrl+S)

求解模型

LINGO|Picture

(Ctrl+K)

模型图示

Window|Send to Back

(Ctrl+B)

窗口后置

Window|Tile

(Alt+T)

平铺窗口

上下文相关的帮助

Help|Contents( F1 )

在线帮助

Page 11: 请同学们掌握调课的方法 课程只能在一周之内调动,即不能把本周的课调到下周。 第五次课也是课堂作业,望同学们要预习一下。仓促做作业,效果很差。

LINGO实验华中农业大学建模基地

-文件类型-

*.LG4: LINGO 格式的模型文件,保存了模型窗口中所能够看到的所有文本和其他对象及其格式信息;*.LNG :文本格式的模型文件,不保存模型中的格式信息(如字体、颜色、嵌入对象等);*.LDT: LINGO 数据文件;*.LTF: LINGO 命令脚本文件;*.LGR: LINGO 报告文件;*.LTX : LINDO 格式的模型文件;*.MPS :示 MPS (数学规划系统)格式的模型文件。

除“ LG4” 文件外,另外几种格式的文件都是普通的文本文件,可以用任何文本编辑器打开和编辑。

Page 12: 请同学们掌握调课的方法 课程只能在一周之内调动,即不能把本周的课调到下周。 第五次课也是课堂作业,望同学们要预习一下。仓促做作业,效果很差。

LINGO实验华中农业大学建模基地

-运行过程-

LP QP NLP IP 全局优化 (选 ) ILP IQP INLP

LINDO/LINGO 预处理程序

线性优化求解程序 非线性优化求解程序

分枝定界管理程序

1. 确定常数

2. 识别类型

1. 单纯形算法

2. 内点算法barrier(选 )

1. 顺序线性规划法 (SLP) 2. 广义既约梯度法 (GRG) (选 ) 3. 多点搜索 (Multistart) (选 )

Page 13: 请同学们掌握调课的方法 课程只能在一周之内调动,即不能把本周的课调到下周。 第五次课也是课堂作业,望同学们要预习一下。仓促做作业,效果很差。

LINGO实验华中农业大学建模基地

-求解器状态窗口-

变量数量T

NIn

TN

TN

Class

Ob

Infe

Ite

Type

Obj

求解花费时间

非零系数数量

内存使用数量

约束数量

模型类型

当前解状态当前目标函数值

扩展求解器使用的特殊求解程序

到目前的最佳目标值

特殊求解程序当前运行步数

有效步数

B-and-B

Global

Multistart

LP, QP, ILP, IQP, PILP , PIQP, NLP, INLP, PINLP "Global Optimum", "Local

Optimum", "Feasible", "Infeasible“( 不可行 ), "Unbounded“(无界 ), "Interrupted“( 中断 ), "Undetermined“(未确定 )

约束不满足的总量

目前为止的迭代次数

目标函数值的界

分枝数 (对 B-and-B 程序 ) ;子问题数 (对 Global 程序 ) ;初始点数 (对Multistart 程序 )

可直接求解的变量不作为决策变量。

更新时间间隔

Page 14: 请同学们掌握调课的方法 课程只能在一周之内调动,即不能把本周的课调到下周。 第五次课也是课堂作业,望同学们要预习一下。仓促做作业,效果很差。

LINGO实验华中农业大学建模基地

-求解报告窗口-

Page 15: 请同学们掌握调课的方法 课程只能在一周之内调动,即不能把本周的课调到下周。 第五次课也是课堂作业,望同学们要预习一下。仓促做作业,效果很差。

LINGO实验华中农业大学建模基地

打开 lingo 程序,将下面代码复制粘贴到模型窗口,并运行后观察结果报告。

-初始印象练习-

model:title 入门练习 ;max=2*x1+3*x2;2*x1+x2<8;4*x1+3*x2<15;END

Page 16: 请同学们掌握调课的方法 课程只能在一周之内调动,即不能把本周的课调到下周。 第五次课也是课堂作业,望同学们要预习一下。仓促做作业,效果很差。

LINGO实验华中农业大学建模基地

傻瓜输入法格式

注意事项

算术运算符

逻辑运算符

数学函数

-傻瓜输入法-

Page 17: 请同学们掌握调课的方法 课程只能在一周之内调动,即不能把本周的课调到下周。 第五次课也是课堂作业,望同学们要预习一下。仓促做作业,效果很差。

LINGO实验华中农业大学建模基地

-傻瓜输入法格式-

例 直接用 LINGO 来解如下二次规划问题:

取整       

     

   

,0,

2,100 ..

23.027789 max

21

2121

2221

2121

xx

xxxxts

xxxxxx

Model:

Title: 傻瓜输入法 ;

!小程序可用,大程序不提倡 ;

[st1]x1+x2<100;

[opt]max=98*x1+277*x2-x1^2-0.3*x1*x2-2*x2^2;

[st2]x1<=2*x2;

@gin(x1);@gin(x2);

end

Page 18: 请同学们掌握调课的方法 课程只能在一周之内调动,即不能把本周的课调到下周。 第五次课也是课堂作业,望同学们要预习一下。仓促做作业,效果很差。

LINGO实验华中农业大学建模基地

-注意事项-

“>” (或“ <” )号与“ >=” (或“ <=” )功能相同; LINGO 模型以“ MODEL :”开始,“ END” 结束; 目标函数为“ MAX=” 。不需要写“ ST” ; 变量与系数间有乘号运算符“ * ” ; 变量名以字母开头,不能超过 64 个字符; 变量名不区分大小写(包括 LINGO 中的关键字); 语句的顺序不重要; 行号自动产生或人为定义。目标函数所在行是第一行, 第二行起为约束条件 , 约束行名字被放“ ”〔 〕 中; 行中注有“ !”符号的后面部分为注释;

Page 19: 请同学们掌握调课的方法 课程只能在一周之内调动,即不能把本周的课调到下周。 第五次课也是课堂作业,望同学们要预习一下。仓促做作业,效果很差。

LINGO实验华中农业大学建模基地

-注意事项-

在模型的开头可以用“ TITLE” 对模型命名; 变量可以放在约束右端; 每行(目标,约束,说明语句)后增加 “;”; @开头都是函数调用; 上下界限定用 @BND () , 不计入模型的约束,也不能给出其松紧判断和敏感性分析 ;

缺省假定所有变量非负;可在模型的“ END”语句后用“ @FREE () ”将变量的非负假定取消 ;

对 0-1 变量说明: @BIN () ; 对整型变量说明:@GIN ();

模型由一系列语句组成,适当缩进,增强可读性。

Page 20: 请同学们掌握调课的方法 课程只能在一周之内调动,即不能把本周的课调到下周。 第五次课也是课堂作业,望同学们要预习一下。仓促做作业,效果很差。

LINGO实验华中农业大学建模基地

LINGO 中的算术运算符有以下 5 种:+ (加法),- (减法或负号),* (乘法),/ (除法),^ ( 求幂 ) 。

-算术运算符-

数与数之间的运算,运算结果也是数。

Page 21: 请同学们掌握调课的方法 课程只能在一周之内调动,即不能把本周的课调到下周。 第五次课也是课堂作业,望同学们要预习一下。仓促做作业,效果很差。

LINGO实验华中农业大学建模基地

表示是“数与数之间”的大小关系,在 LINGO 中用来表示优化模型的约束条件。 LINGO 中关系运算符有 3 种: <(即 <= ,小于等于 ) ; =( 等于 ) , >(即 >= ,大于等于 )

在优化模型中约束一般没有严格小于、严格大于关系 .

-关系运算符-

Page 22: 请同学们掌握调课的方法 课程只能在一周之内调动,即不能把本周的课调到下周。 第五次课也是课堂作业,望同学们要预习一下。仓促做作业,效果很差。

LINGO实验华中农业大学建模基地

@ABS(X) :返回 X 的绝对值。@SIN(X) :正弦函数,返回 X 的正弦值( X 的单位是弧度)。@COS(X) :返回 X 的余弦值( X 的单位是弧度)。@TAN(X) :正切函数,返回 X 的正切值( X 的单位是弧度

)。@EXP(X) :返回 eX 的值 ( 其中 e=2.718281...) 。@POW(X,Y) :指数函数,返回 XY 的值。@SQR(X) :平方函数,返回 X 的平方(即 X*X )的值。@SQRT(X) :开平方函数,返回 X 的正的平方根的值。@LOG(X) :返回 X 的自然对数值。

-数学函数-

Page 23: 请同学们掌握调课的方法 课程只能在一周之内调动,即不能把本周的课调到下周。 第五次课也是课堂作业,望同学们要预习一下。仓促做作业,效果很差。

LINGO实验华中农业大学建模基地

@MOD(X,Y) :模函数,返回 X对 Y 取模的结果,即 X 除以 Y 的余数,这里 X和 Y 应该是整数。

@SIGN(X) :符号函数,返回 X 的符号值( X < 0 时返回 -1,

X >= 0 时返回 +1 )。 @SMAX(list) :最大值函数,返回一列数 (list) 的最大值。 @SMIN(list) :最小值函数,返回一列数 (list) 的最小值。 @FLOOR(X) :返回 X 的整数部分 ( 向最靠近 0 的方向取整 ) 。 @LGM(X) :返回 X 的伽玛 (gamma) 函数的自然对数值 (当

X 为 整数时 LGM(X) = LOG(X-1) !;当 X 不为整数时 ,采用线性插值得到结果 ) 。

-数学函数-

Page 24: 请同学们掌握调课的方法 课程只能在一周之内调动,即不能把本周的课调到下周。 第五次课也是课堂作业,望同学们要预习一下。仓促做作业,效果很差。

LINGO实验华中农业大学建模基地

-实例 1 -

生产计划问题 某工厂计划安排生产Ⅰ,Ⅱ两种产品,已知每种单位产品的利润,生产单位产品所需设备台时及A,B 两种原材料的消耗,现有原材料和设备台时的定额如表所示,问:怎么安排生产使得工厂获利最大?

产品Ⅰ 产品Ⅱ 最大资源量设备 1 2 8 台时

原材料 A 4 0 16kg

原材料 B 0 4 12kg

单位产品利润 2 3

Page 25: 请同学们掌握调课的方法 课程只能在一周之内调动,即不能把本周的课调到下周。 第五次课也是课堂作业,望同学们要预习一下。仓促做作业,效果很差。

LINGO实验华中农业大学建模基地

-实例 1 -

模型建立

设用 1 2,x x Ⅰ Ⅱ分别表示计划生产产品 , 的数量,可建立模型为: 

1 2

1 2

1

1

1 2

max 2 3

2 8

4 16. .

4 12

, 0

f x x

x x

xs t

x

x x

Page 26: 请同学们掌握调课的方法 课程只能在一周之内调动,即不能把本周的课调到下周。 第五次课也是课堂作业,望同学们要预习一下。仓促做作业,效果很差。

LINGO实验华中农业大学建模基地

-实例 1 -

程序编写

model:title 生产计划问题 ;[maxf]max=2*x1+3*x2;[TIME]x1+2*x2<8;[A]4*x1<16;[B]4*x2<12;END

Page 27: 请同学们掌握调课的方法 课程只能在一周之内调动,即不能把本周的课调到下周。 第五次课也是课堂作业,望同学们要预习一下。仓促做作业,效果很差。

LINGO实验华中农业大学建模基地

-实例 1 -

运行结果

Model Title: 生产计划问题 Variable Value Reduced Cost X1 4.000000 0.000000 X2 2.000000 0.000000 Row Slack or Surplus Dual Price MAXF 14.00000 1.000000 TIME 0.000000 1.500000 A 0.000000 0.1250000 B 4.000000 0.000000

安排是生产产品Ⅰ 4 单位,产品Ⅱ 2 单位,最大盈利为 14 万元 。

Page 28: 请同学们掌握调课的方法 课程只能在一周之内调动,即不能把本周的课调到下周。 第五次课也是课堂作业,望同学们要预习一下。仓促做作业,效果很差。

LINGO实验华中农业大学建模基地

《数学软件与数学实验》第二版 155页 第 1 题

-傻瓜输入法练习-

Page 29: 请同学们掌握调课的方法 课程只能在一周之内调动,即不能把本周的课调到下周。 第五次课也是课堂作业,望同学们要预习一下。仓促做作业,效果很差。

LINGO实验华中农业大学建模基地

集合段数据段目标与约束段基本集合与派生集合循环函数循环求和函数多维数组过滤条件逻辑运算符

-“段”的使用-

Page 30: 请同学们掌握调课的方法 课程只能在一周之内调动,即不能把本周的课调到下周。 第五次课也是课堂作业,望同学们要预习一下。仓促做作业,效果很差。

LINGO实验华中农业大学建模基地

?90100

1

i

ix

sets: !集合段 ;

s/1..100/:x;! 基本集合 , 集合名与属性变量 ;

endsets

! 目标与约束段 ;

@sum(s(i):x(i))<90; !循环求和函数 ;

1.怎样表示:

-“段”的使用-

Page 31: 请同学们掌握调课的方法 课程只能在一周之内调动,即不能把本周的课调到下周。 第五次课也是课堂作业,望同学们要预习一下。仓促做作业,效果很差。

LINGO实验华中农业大学建模基地

2.怎样赋值:

?2,1,6,2,5

,3,2;1,0,1

109876

54321

bbbbb

bbbbb

sets:

ss/1..10/:b;

endsets

data:! 数据段 ;

b=1 0 1 2 3 5 2 6 1 2;

enddata

- “段”的使用-

Page 32: 请同学们掌握调课的方法 课程只能在一周之内调动,即不能把本周的课调到下周。 第五次课也是课堂作业,望同学们要预习一下。仓促做作业,效果很差。

LINGO实验华中农业大学建模基地

?280100

1

200

1

i j

ijx

sets:

a/1..100/:;

b/1..200/:;

C(a,b):x; !派生集合 ;

endsets

@sum(c(i,j):x(i,j))=280;

3.怎样表示:

- “段”的使用-

Page 33: 请同学们掌握调课的方法 课程只能在一周之内调动,即不能把本周的课调到下周。 第五次课也是课堂作业,望同学们要预习一下。仓促做作业,效果很差。

LINGO实验华中农业大学建模基地

200,..,2,1,150100

1

jxi

ij

sets:

a/1..100/:;

b/1..200/:;

C(a,b):x;

endsets

@for(b(j):@sum(a(i):x(i,j))=280);

! 集合元素的循环函数 ;

4.怎样表示:

- “段”的使用-

Page 34: 请同学们掌握调课的方法 课程只能在一周之内调动,即不能把本周的课调到下周。 第五次课也是课堂作业,望同学们要预习一下。仓促做作业,效果很差。

LINGO实验华中农业大学建模基地

@FOR( )( 集合元素的循环函数 ) : 对集合 setname 的每个元素独立地生成表达式,表达式由 expression_list 描述。

@MAX( ) (集合属性的最大值函数):返回集合 setname

上的表达式的最大值。 @MIN( ) (集合属性的最小值函数):返回集合 setname 上

的表达式的最小值。 @PROD( ) (集合属性的乘积函数): 返回集合 setname 上

的表达式的积。 @SUM( ) ( 集合属性的求和函数 ): 返回集合 setname 上的表

达式的和。

-集合循环函数-

Page 35: 请同学们掌握调课的方法 课程只能在一周之内调动,即不能把本周的课调到下周。 第五次课也是课堂作业,望同学们要预习一下。仓促做作业,效果很差。

LINGO实验华中农业大学建模基地

200,..,2,1,100,,2,11-0

200,..,2,1,

jix

jy

ij

j

变量,为

取整数

sets:

a/1..100/:;

b/1..200/:y;

C(a,b):x;

endsets

@for(b(j):@gin(y(j)));

@for(c(i,j):@bin(x(i,j));

5.怎样表示: - “段”的使用-

Page 36: 请同学们掌握调课的方法 课程只能在一周之内调动,即不能把本周的课调到下周。 第五次课也是课堂作业,望同学们要预习一下。仓促做作业,效果很差。

LINGO实验华中农业大学建模基地

6.怎样表示:

10

402

100

kk

ijkx 301,201 ji

sets:

a/1..20/:;

b/1..30/:;

C/1..40/:;

d(a,b,c):x;

endsets

@for(a(i):@for(b(j):

@sum(c(i,j,k)|k#gt#1#and#k#ne#10:x(i,j,k))=100));

! 过滤条件 ;

- “段”的使用-

Page 37: 请同学们掌握调课的方法 课程只能在一周之内调动,即不能把本周的课调到下周。 第五次课也是课堂作业,望同学们要预习一下。仓促做作业,效果很差。

LINGO实验华中农业大学建模基地

在 LINGO 中,逻辑运算 ( 表达式 ) 通常作为过滤条件使用。 逻辑运算符有 9 种,可以分成两类: #AND#(与 ),#OR#(或 ),#NOT#(非 ) :逻辑值之间的运算,它们操作的对象本身已经是逻辑值或逻辑表达式; #EQ#( 等于 ),#NE#( 不等于 ),#GT#( 大于 ),#GE#( 大于等于 ),#LT#( 小于 ),#LE#( 小于等于 ) :是“数与数之间”的比较。

-逻辑运算符-

运算结果只有“真” (TRUE) 和“假” (FALSE) 两个值 ( 称为“逻辑值” ), LINGO 中用数字 1 代表 TRUE ,其他值 ( 典型的值是 0) 都是 FALSE 。

例 2 #gt# 3 #and# 4 #gt# 2 结果是:真( 1 ) 假( 0 )?√

Page 38: 请同学们掌握调课的方法 课程只能在一周之内调动,即不能把本周的课调到下周。 第五次课也是课堂作业,望同学们要预习一下。仓促做作业,效果很差。

LINGO实验华中农业大学建模基地

7.怎样表示:

7263

5252

432

4321

4321

4321

xxxx

xxxx

xxxx

SETS:

HANG/1..3/:B;

LIE/1..4/:X;

XISHU(HANG,LIE):A;

ENDSETS

DATA:

A= 1 2 3 1

2 5 1 2

3 1 6 -2;

B=4 5 7;

ENDDATA

@FOR(HANG(I):

@SUM(LIE(J):A(I,J)*X(J))>B(I));

- “段”的使用-

3,2,144332211

i

bxaxaxaxa iiiii

Page 39: 请同学们掌握调课的方法 课程只能在一周之内调动,即不能把本周的课调到下周。 第五次课也是课堂作业,望同学们要预习一下。仓促做作业,效果很差。

LINGO实验华中农业大学建模基地

-程序编写-

model:title 生产计划程序 1;Sets:yuefen/1..4/:c,x,e,d;endsetsdata:c=70 71 80 76;d=6000 7000 12000 6000;e=2 2 2 2 ;a=10000;enddatamin=@sum(yuefen:c*x)+ @sum(yuefen(j)|j#lt#4:@sum(yuefen(i)|i#le#j:x-d)*e(j+1));@for(yuefen(j)|j#lt#4: @sum(yuefen(i)|i#le#j:x)> @sum(yuefen(i)|i#le#j:d));@sum(yuefen:x)= @sum(yuefen:d);@for(yuefen:x<a);end 遍历集合每一元素,下标可省略

Page 40: 请同学们掌握调课的方法 课程只能在一周之内调动,即不能把本周的课调到下周。 第五次课也是课堂作业,望同学们要预习一下。仓促做作业,效果很差。

LINGO实验华中农业大学建模基地

MODEL: TITLE : 生产计划程序 1; [_1] MIN= 76 * X_1 + 75 * X_2 + 82 * X_3 + 76 * X_4 - 88000 ; [_2] X_1 >= 6000 ; [_3] X_1 + X_2 >= 13000 ; [_4] X_1 + X_2 + X_3 >= 25000 ; [_5] X_1 + X_2 + X_3 + X_4 = 31000 ; [_6] X_1 <= 10000 ; [_7] X_2 <= 10000 ; [_8] X_3 <= 10000 ; [_9] X_4 <= 10000 ; END

-程序展开-

Page 41: 请同学们掌握调课的方法 课程只能在一周之内调动,即不能把本周的课调到下周。 第五次课也是课堂作业,望同学们要预习一下。仓促做作业,效果很差。

LINGO实验华中农业大学建模基地

Model:Title 生产计划程序 2;Sets:yuefen/1..4/:c,x,e,d,s;endsetsdata:c=70 71 80 76;d=6000 7000 12000 6000;e=2 2 2 2 ;a=10000;enddatamin=@sum(yuefen:c*x+e*s);@for(yuefen(i)|i#lt#4:s(i+1)=s(i)+x(i)-d(i));s(4)+x(4)-d(4)=0;s(1)=0;@for(yuefen:x<a);@for(yuefen:@gin(x));@for(yuefen:@gin(s));End

-程序编写-

Page 42: 请同学们掌握调课的方法 课程只能在一周之内调动,即不能把本周的课调到下周。 第五次课也是课堂作业,望同学们要预习一下。仓促做作业,效果很差。

LINGO实验华中农业大学建模基地

《数学软件与数学实验》第二版 155页 第 1 题( 1) ,( 2) ,( 3 )

-“段”的使用练习-

Page 43: 请同学们掌握调课的方法 课程只能在一周之内调动,即不能把本周的课调到下周。 第五次课也是课堂作业,望同学们要预习一下。仓促做作业,效果很差。

LINGO实验华中农业大学建模基地

与 EXCEL 交换数据

-数据传递-

Page 44: 请同学们掌握调课的方法 课程只能在一周之内调动,即不能把本周的课调到下周。 第五次课也是课堂作业,望同学们要预习一下。仓促做作业,效果很差。

LINGO实验华中农业大学建模基地

B4: B7 单元命名为 CITIES

C4: C7 单元命名为 COST

D4:D7 单元命名为 NEED

E4: E7 单元命名为SUPPLY

F4: F7 单元命名为SOLUTION 用于输出结果

-与 EXCEL 交换数据-

用“插入︱名称︱定义”命名选中区域

Page 45: 请同学们掌握调课的方法 课程只能在一周之内调动,即不能把本周的课调到下周。 第五次课也是课堂作业,望同学们要预习一下。仓促做作业,效果很差。

LINGO实验华中农业大学建模基地

-数据传递-与 EXCEL 交换数据MODEL:

SETS:

MYSET: COST, ORDERED,NEED,SUPPLY;

ENDSETS

MIN = @SUM( MYSET( I): ORDERED ( I) * COST( I));

@FOR( MYSET( I):

[CON1] ORDERED( I) > NEED( I);

[CON2] ORDERED( I) < SUPPLY( I));

DATA:

MYSET =@OLE(‘D:\rxl\lingo 程序 \mydata.xls’,‘CITIES’);

!全路径指明文件,否则当前目录; COST,NEED,SUPPLY =@OLE(mydata.xls); !按对应的相同名称输入; @OLE(mydata.xls,‘SOLUTION’)=ORDERED;

!将 SHIP 值赋给 Excel 中的 SOLUTION ;! 或者直接写地址: @OLE(mydata.xls,‘Sheet1!$F$4:$F$7’)=ORDERED;

ENDDATA

END

Page 46: 请同学们掌握调课的方法 课程只能在一周之内调动,即不能把本周的课调到下周。 第五次课也是课堂作业,望同学们要预习一下。仓促做作业,效果很差。

LINGO实验华中农业大学建模基地

Export Summary Report --------------------- Transfer Method: OLE BASED Workbook: mydata.xls Ranges Specified: 1 SOLUTION Ranges Found: 1 Range Size Mismatches: 0 Values Transferred: 4

-数据传递-与 EXCEL 交换数据报告窗口输出总结报告:

采用 OLE 方式传输数据; EXCEL 文件为mydata.xls ;指定的接收单元范围为 SOLUTION ;在mydata.xls正好找到一个名为 SOLUTION 的域名;不匹配的单元数为 0 ; 传输了 4 个数值。

Page 47: 请同学们掌握调课的方法 课程只能在一周之内调动,即不能把本周的课调到下周。 第五次课也是课堂作业,望同学们要预习一下。仓促做作业,效果很差。

LINGO实验华中农业大学建模基地

model:title 分片 ;sets:pingtai/1..24/:p;lukou/1..92/:n;link(pingtai,lukou):t,x;endsetsdata:t=@ole('d:\time1.xls','t');n=@ole('d:\fa.xls','n');enddata

-实例 2- 2011 全国数模竞赛的一个模型

从 excel 文档中读入数据,先给数据区域命名。用“插入︱名称︱定义”命名选中区域。

Page 48: 请同学们掌握调课的方法 课程只能在一周之内调动,即不能把本周的课调到下周。 第五次课也是课堂作业,望同学们要预习一下。仓促做作业,效果很差。

LINGO实验华中农业大学建模基地

min=u;@for(pingtai(i):p(i)=@sum(lukou(j):x(i,j)*n(j)));@for(pingtai(i): @for(pingtai(k): p(i)-p(k)<u;));@for(link:t*x<30;);@for(link:@bin(x));@for(lukou(j):@sum(pingtai(i):x(i,j))=1);end

-实例 2- 2011 全国数模竞赛的一个模型

Page 49: 请同学们掌握调课的方法 课程只能在一周之内调动,即不能把本周的课调到下周。 第五次课也是课堂作业,望同学们要预习一下。仓促做作业,效果很差。

LINGO实验华中农业大学建模基地

程序结构

程序调试

-程序结构与调试-

Page 50: 请同学们掌握调课的方法 课程只能在一周之内调动,即不能把本周的课调到下周。 第五次课也是课堂作业,望同学们要预习一下。仓促做作业,效果很差。

LINGO实验华中农业大学建模基地

-程序结构- 一般来说, LINGO 中建立的优化模型可以由六个部分组成,或称为六“段”( SECTION ):( 1 )集合段( SETS ):以“ SETS:” 开始,

“ ENDSETS” 结束,定义必要的集合变量( SET )及其元素(MEMBER ,含义类似于数组的下标)和属性( ATTRIBUTE ,含义类似于数组)。

( 2 )目标与约束段:目标函数、约束条件等,没有段的开始和结束标记,因此实际上就是除其它四个段 ( 都有明确的段标记 ) 外的 LINGO 模型。 ( 3 )数据段 (DATA) :以 “ DATA:” 开始 , “ENDDATA”结束,对集合的属性 ( 数组 ) 输入或输出必要的常数数据。 格式为:“ attribute(属性 ) = value_list( 常数列表 );”

Page 51: 请同学们掌握调课的方法 课程只能在一周之内调动,即不能把本周的课调到下周。 第五次课也是课堂作业,望同学们要预习一下。仓促做作业,效果很差。

LINGO实验华中农业大学建模基地

(5) 计算段 : 在数据段输入完成之后在正式求解模型之前对原始数据进行处理,语句是顺序执行的,不能更换顺序,在计

算段可以使用程序流程控制和子模型。也可进行数据的输出。以“ CALC:” 开始, “ ENDCALC” 结束。

( 4 )初始段 (INIT) :以“ INIT: ” 开始, “ ENDINIT” 结束,对集合的属性 ( 数组 ) 定义初值 (因为求解算法一般是迭代算法,所以用户如果能给出一个比较好的迭代初值,对提高算法的计算效果是有益的 ) 。 格式为:“ attribute (属性) = value_list (常数列表);”

-程序结构-

Page 52: 请同学们掌握调课的方法 课程只能在一周之内调动,即不能把本周的课调到下周。 第五次课也是课堂作业,望同学们要预习一下。仓促做作业,效果很差。

LINGO实验华中农业大学建模基地

( 6 )子模型段:子模型必须包含在主模型之内,即必须位于以“ MODEL:” 开头、以“ END” 结束的模块内。同一个主模型中,允许定义多个子模型,其基本语法是:@SUBMODEL mymodel:可执行语句(约束 + 目标函数) ;ENDSUBMODEL其中 mymodel 是该子模型的名字,可执行语句一般是一些约束语句,也可能包含目标函数,但不可以有自身单独的集合段、数据段、初始段和计算段。在计算段中可以用语句“ @SOLVE( mymodel);” 求解这个子模型。

-程序结构-

我们介绍了前三个段,有兴趣的同学可扩展阅读。

Page 53: 请同学们掌握调课的方法 课程只能在一周之内调动,即不能把本周的课调到下周。 第五次课也是课堂作业,望同学们要预习一下。仓促做作业,效果很差。

LINGO实验华中农业大学建模基地

-程序调试-

很多时候是程序写出来了,但是有很多错误,怎么进行程序的调试呢?可按下面步骤进行:

1.直接点击运行,如果出错会弹出错误提示,根据提示做相应的修改;

2. 可以用“!”把约束变成说明语句,而把这条语句屏蔽掉,缩小寻找出错的范围;

3. 可以边写程序边运行,保证每行书写都是正确的程序;

经验介绍

Page 54: 请同学们掌握调课的方法 课程只能在一周之内调动,即不能把本周的课调到下周。 第五次课也是课堂作业,望同学们要预习一下。仓促做作业,效果很差。

LINGO实验华中农业大学建模基地

一般容易出错的地方有:• 定义了多个长度一样的集合,而在使用中区分不明确;• 定义了同名的属性;• 分号不是英文半角输入;• 使用的字母没有定义;• 循环语句中元素下标颠倒或者不明或越界;• 约束错误变成不可行或无界;• 关系运算符(如“ =” )使用逻辑运算符(如“ #EQ#” );• 使用了非 LINGO语言的输入; (比如 %引导说明语句)• 函数调用错误;• 掉了或多了括号,函数的括号写错了地方等 .

-程序调试-经验介绍