请同学们掌握调课的方法...
DESCRIPTION
请同学们掌握调课的方法 课程只能在一周之内调动,即不能把本周的课调到下周。 第五次课也是课堂作业,望同学们要预习一下。仓促做作业,效果很差。 系统的问题,我们会逐步解决。. 系统可自由进行课堂调整. 第一步,登陆试验管理系统,点击“预约明细”,点击“大学数学实验”. 第二步,在调整的项目后点击“删除”,弹出窗口. 第三步,在周次后点击“第四周”(原时间在哪周就调整到哪周),弹出窗口. 第四步,点击可选课堂,在弹出窗口下面选择实验室。点击窗口下方的“确定”以及弹出的提示窗口的“确定”。. - PowerPoint PPT PresentationTRANSCRIPT
LINGO实验华中农业大学建模基地
请同学们掌握调课的方法 课程只能在一周之内调动,即
不能把本周的课调到下周。 第五次课也是课堂作业,望同
学们要预习一下。仓促做作业,效果很差。
系统的问题,我们会逐步解决。
LINGO实验华中农业大学建模基地系统可自由进行课堂调整第一步,登陆试验管理系统,点击“预约明
细”,点击“大学数学实验”
LINGO实验华中农业大学建模基地
第二步,在调整的项目后点击“删除”,弹出窗口
LINGO实验华中农业大学建模基地
第三步,在周次后点击“第四周”(原时间在哪周就调整到哪周),弹出窗口
LINGO实验华中农业大学建模基地第四步,点击可选课堂,在弹出窗口下面选择实验室。点击窗口下方的“确定”以及弹出的提示窗口的“确定”。
第五步,再次点击“预约明细”,点击“大学数学实验”,才能查看修改后的信息
华中农业大学建模基地
优化软件 LINGO 使用入门
Lingo12 初步
LINGO实验华中农业大学建模基地
- LINGO 入门-
初始印象1
傻瓜输入法2
“ 段”的使用
3
数据交换4
程序结构与调试5
LINGO实验华中农业大学建模基地
界面介绍工具栏文件类型运行过程求解器状态窗口求解报告窗口
-初始印象-
LINGO实验华中农业大学建模基地
-界面介绍-• LINGO 软件的主窗口(用
户界面),所有其他窗口都在这个窗口之内。
• 模型窗口( Model Window ),用于输入 LINGO 优化模型(即 LINGO 程序)。
• 状态行(最左边显示“ Ready” ,表示 “准备就绪”)
• 当前时间
• 当前光标的位置
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 )
在线帮助
LINGO实验华中农业大学建模基地
-文件类型-
*.LG4: LINGO 格式的模型文件,保存了模型窗口中所能够看到的所有文本和其他对象及其格式信息;*.LNG :文本格式的模型文件,不保存模型中的格式信息(如字体、颜色、嵌入对象等);*.LDT: LINGO 数据文件;*.LTF: LINGO 命令脚本文件;*.LGR: LINGO 报告文件;*.LTX : LINDO 格式的模型文件;*.MPS :示 MPS (数学规划系统)格式的模型文件。
除“ LG4” 文件外,另外几种格式的文件都是普通的文本文件,可以用任何文本编辑器打开和编辑。
LINGO实验华中农业大学建模基地
-运行过程-
LP QP NLP IP 全局优化 (选 ) ILP IQP INLP
LINDO/LINGO 预处理程序
线性优化求解程序 非线性优化求解程序
分枝定界管理程序
1. 确定常数
2. 识别类型
1. 单纯形算法
2. 内点算法barrier(选 )
1. 顺序线性规划法 (SLP) 2. 广义既约梯度法 (GRG) (选 ) 3. 多点搜索 (Multistart) (选 )
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 程序 )
可直接求解的变量不作为决策变量。
更新时间间隔
LINGO实验华中农业大学建模基地
-求解报告窗口-
LINGO实验华中农业大学建模基地
打开 lingo 程序,将下面代码复制粘贴到模型窗口,并运行后观察结果报告。
-初始印象练习-
model:title 入门练习 ;max=2*x1+3*x2;2*x1+x2<8;4*x1+3*x2<15;END
LINGO实验华中农业大学建模基地
傻瓜输入法格式
注意事项
算术运算符
逻辑运算符
数学函数
-傻瓜输入法-
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
LINGO实验华中农业大学建模基地
-注意事项-
“>” (或“ <” )号与“ >=” (或“ <=” )功能相同; LINGO 模型以“ MODEL :”开始,“ END” 结束; 目标函数为“ MAX=” 。不需要写“ ST” ; 变量与系数间有乘号运算符“ * ” ; 变量名以字母开头,不能超过 64 个字符; 变量名不区分大小写(包括 LINGO 中的关键字); 语句的顺序不重要; 行号自动产生或人为定义。目标函数所在行是第一行, 第二行起为约束条件 , 约束行名字被放“ ”〔 〕 中; 行中注有“ !”符号的后面部分为注释;
LINGO实验华中农业大学建模基地
-注意事项-
在模型的开头可以用“ TITLE” 对模型命名; 变量可以放在约束右端; 每行(目标,约束,说明语句)后增加 “;”; @开头都是函数调用; 上下界限定用 @BND () , 不计入模型的约束,也不能给出其松紧判断和敏感性分析 ;
缺省假定所有变量非负;可在模型的“ END”语句后用“ @FREE () ”将变量的非负假定取消 ;
对 0-1 变量说明: @BIN () ; 对整型变量说明:@GIN ();
模型由一系列语句组成,适当缩进,增强可读性。
LINGO实验华中农业大学建模基地
LINGO 中的算术运算符有以下 5 种:+ (加法),- (减法或负号),* (乘法),/ (除法),^ ( 求幂 ) 。
-算术运算符-
数与数之间的运算,运算结果也是数。
LINGO实验华中农业大学建模基地
表示是“数与数之间”的大小关系,在 LINGO 中用来表示优化模型的约束条件。 LINGO 中关系运算符有 3 种: <(即 <= ,小于等于 ) ; =( 等于 ) , >(即 >= ,大于等于 )
在优化模型中约束一般没有严格小于、严格大于关系 .
-关系运算符-
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 的自然对数值。
-数学函数-
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 不为整数时 ,采用线性插值得到结果 ) 。
-数学函数-
LINGO实验华中农业大学建模基地
-实例 1 -
生产计划问题 某工厂计划安排生产Ⅰ,Ⅱ两种产品,已知每种单位产品的利润,生产单位产品所需设备台时及A,B 两种原材料的消耗,现有原材料和设备台时的定额如表所示,问:怎么安排生产使得工厂获利最大?
产品Ⅰ 产品Ⅱ 最大资源量设备 1 2 8 台时
原材料 A 4 0 16kg
原材料 B 0 4 12kg
单位产品利润 2 3
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
LINGO实验华中农业大学建模基地
-实例 1 -
程序编写
model:title 生产计划问题 ;[maxf]max=2*x1+3*x2;[TIME]x1+2*x2<8;[A]4*x1<16;[B]4*x2<12;END
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 万元 。
LINGO实验华中农业大学建模基地
《数学软件与数学实验》第二版 155页 第 1 题
-傻瓜输入法练习-
LINGO实验华中农业大学建模基地
集合段数据段目标与约束段基本集合与派生集合循环函数循环求和函数多维数组过滤条件逻辑运算符
-“段”的使用-
LINGO实验华中农业大学建模基地
?90100
1
i
ix
sets: !集合段 ;
s/1..100/:x;! 基本集合 , 集合名与属性变量 ;
endsets
! 目标与约束段 ;
@sum(s(i):x(i))<90; !循环求和函数 ;
1.怎样表示:
-“段”的使用-
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
- “段”的使用-
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.怎样表示:
- “段”的使用-
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.怎样表示:
- “段”的使用-
LINGO实验华中农业大学建模基地
@FOR( )( 集合元素的循环函数 ) : 对集合 setname 的每个元素独立地生成表达式,表达式由 expression_list 描述。
@MAX( ) (集合属性的最大值函数):返回集合 setname
上的表达式的最大值。 @MIN( ) (集合属性的最小值函数):返回集合 setname 上
的表达式的最小值。 @PROD( ) (集合属性的乘积函数): 返回集合 setname 上
的表达式的积。 @SUM( ) ( 集合属性的求和函数 ): 返回集合 setname 上的表
达式的和。
-集合循环函数-
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.怎样表示: - “段”的使用-
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));
! 过滤条件 ;
- “段”的使用-
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 )?√
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
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 遍历集合每一元素,下标可省略
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
-程序展开-
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
-程序编写-
LINGO实验华中农业大学建模基地
《数学软件与数学实验》第二版 155页 第 1 题( 1) ,( 2) ,( 3 )
-“段”的使用练习-
LINGO实验华中农业大学建模基地
与 EXCEL 交换数据
-数据传递-
LINGO实验华中农业大学建模基地
B4: B7 单元命名为 CITIES
C4: C7 单元命名为 COST
D4:D7 单元命名为 NEED
E4: E7 单元命名为SUPPLY
F4: F7 单元命名为SOLUTION 用于输出结果
-与 EXCEL 交换数据-
用“插入︱名称︱定义”命名选中区域
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
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 个数值。
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 文档中读入数据,先给数据区域命名。用“插入︱名称︱定义”命名选中区域。
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 全国数模竞赛的一个模型
LINGO实验华中农业大学建模基地
程序结构
程序调试
-程序结构与调试-
LINGO实验华中农业大学建模基地
-程序结构- 一般来说, LINGO 中建立的优化模型可以由六个部分组成,或称为六“段”( SECTION ):( 1 )集合段( SETS ):以“ SETS:” 开始,
“ ENDSETS” 结束,定义必要的集合变量( SET )及其元素(MEMBER ,含义类似于数组的下标)和属性( ATTRIBUTE ,含义类似于数组)。
( 2 )目标与约束段:目标函数、约束条件等,没有段的开始和结束标记,因此实际上就是除其它四个段 ( 都有明确的段标记 ) 外的 LINGO 模型。 ( 3 )数据段 (DATA) :以 “ DATA:” 开始 , “ENDDATA”结束,对集合的属性 ( 数组 ) 输入或输出必要的常数数据。 格式为:“ attribute(属性 ) = value_list( 常数列表 );”
LINGO实验华中农业大学建模基地
(5) 计算段 : 在数据段输入完成之后在正式求解模型之前对原始数据进行处理,语句是顺序执行的,不能更换顺序,在计
算段可以使用程序流程控制和子模型。也可进行数据的输出。以“ CALC:” 开始, “ ENDCALC” 结束。
( 4 )初始段 (INIT) :以“ INIT: ” 开始, “ ENDINIT” 结束,对集合的属性 ( 数组 ) 定义初值 (因为求解算法一般是迭代算法,所以用户如果能给出一个比较好的迭代初值,对提高算法的计算效果是有益的 ) 。 格式为:“ attribute (属性) = value_list (常数列表);”
-程序结构-
LINGO实验华中农业大学建模基地
( 6 )子模型段:子模型必须包含在主模型之内,即必须位于以“ MODEL:” 开头、以“ END” 结束的模块内。同一个主模型中,允许定义多个子模型,其基本语法是:@SUBMODEL mymodel:可执行语句(约束 + 目标函数) ;ENDSUBMODEL其中 mymodel 是该子模型的名字,可执行语句一般是一些约束语句,也可能包含目标函数,但不可以有自身单独的集合段、数据段、初始段和计算段。在计算段中可以用语句“ @SOLVE( mymodel);” 求解这个子模型。
-程序结构-
我们介绍了前三个段,有兴趣的同学可扩展阅读。
LINGO实验华中农业大学建模基地
-程序调试-
很多时候是程序写出来了,但是有很多错误,怎么进行程序的调试呢?可按下面步骤进行:
1.直接点击运行,如果出错会弹出错误提示,根据提示做相应的修改;
2. 可以用“!”把约束变成说明语句,而把这条语句屏蔽掉,缩小寻找出错的范围;
3. 可以边写程序边运行,保证每行书写都是正确的程序;
经验介绍
LINGO实验华中农业大学建模基地
一般容易出错的地方有:• 定义了多个长度一样的集合,而在使用中区分不明确;• 定义了同名的属性;• 分号不是英文半角输入;• 使用的字母没有定义;• 循环语句中元素下标颠倒或者不明或越界;• 约束错误变成不可行或无界;• 关系运算符(如“ =” )使用逻辑运算符(如“ #EQ#” );• 使用了非 LINGO语言的输入; (比如 %引导说明语句)• 函数调用错误;• 掉了或多了括号,函数的括号写错了地方等 .
-程序调试-经验介绍