1 / 54

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

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

leland
Download Presentation

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

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 请同学们掌握调课的方法 课程只能在一周之内调动,即不能把本周的课调到下周。 第五次课也是课堂作业,望同学们要预习一下。仓促做作业,效果很差。 系统的问题,我们会逐步解决。

  2. 系统可自由进行课堂调整 • 第一步,登陆试验管理系统,点击“预约明细”,点击“大学数学实验”

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

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

  5. 第四步,点击可选课堂,在弹出窗口下面选择实验室。点击窗口下方的“确定”以及弹出的提示窗口的“确定”。第四步,点击可选课堂,在弹出窗口下面选择实验室。点击窗口下方的“确定”以及弹出的提示窗口的“确定”。 • 第五步,再次点击“预约明细”,点击“大学数学实验”,才能查看修改后的信息

  6. 优化软件LINGO使用入门 Lingo12初步

  7. 傻瓜输入法 2 “段”的使用 3 程序结构与调试 5 -LINGO入门- 初始印象 1 数据交换 4

  8. -初始印象- • 界面介绍 • 工具栏 • 文件类型 • 运行过程 • 求解器状态窗口 • 求解报告窗口

  9. -界面介绍- • LINGO软件的主窗口(用户界面),所有其他窗口都在这个窗口之内。 • 当前光标的位置 • 模型窗口(Model Window),用于输入LINGO优化模型(即LINGO程序)。 • 状态行(最左边显示“Ready”,表示 “准备就绪”) • 当前时间

  10. -工具栏- File|Open (F3) 打开文件 Edit|Copy (Ctrl+C) 复制 Window|Close All (Alt+X) 关闭所有窗口 Edit|Find (Ctrl+F) 查找 Edit|Match Parenthesis (Ctrl+P) 匹配括号 LINGO|Options (Ctrl+I) 选项设置 File|Print (F7) 打印文件 Edit|Undo (Ctrl+Z) 取消操作 Help|Contents(F1) 在线帮助 LINGO|Solution (Alt+O)显示解答 File|Save (F4) 保存文件 • Edit | Go To Line • (Ctrl+T) • 定位某行 Edit|Paste (Ctrl+V) 粘贴 LINGO|Picture (Ctrl+K) 模型图示 Window|Tile (Alt+T) 平铺窗口 LINGO|Solve (Ctrl+S) 求解模型 Window|Send to Back (Ctrl+B) 窗口后置 Edit|Redo (Ctrl+Y) 恢复操作 File|New (F2) 新建文件 上下文相关的帮助 Edit|Cut (Ctrl+X) 剪切

  11. -文件类型- • .LG4:LINGO格式的模型文件,保存了模型窗口中所能够看到的所有文本和其他对象及其格式信息; • .LNG:文本格式的模型文件,不保存模型中的格式信息(如字体、颜色、嵌入对象等); • .LDT:LINGO数据文件; • .LTF:LINGO命令脚本文件; • .LGR:LINGO报告文件; • .LTX: LINDO格式的模型文件; • .MPS:示MPS(数学规划系统)格式的模型文件。 除“LG4”文件外,另外几种格式的文件都是普通的文本文件,可以用任何文本编辑器打开和编辑。

  12. -运行过程- 1. 确定常数 2. 识别类型 LINDO/LINGO预处理程序 LP QP NLP IP 全局优化(选) ILP IQP INLP 分枝定界管理程序 线性优化求解程序 非线性优化求解程序 1.顺序线性规划法(SLP) 2.广义既约梯度法(GRG) (选) 3.多点搜索(Multistart) (选) 1. 单纯形算法 2. 内点算法barrier(选)

  13. -求解器状态窗口- LP,QP,ILP,IQP,PILP, PIQP,NLP,INLP,PINLP 变量数量 "Global Optimum", "Local Optimum", "Feasible", "Infeasible“(不可行), "Unbounded“(无界), "Interrupted“(中断), "Undetermined“(未确定) T 模型类型 Class N In 当前解状态 当前目标函数值 Ob 约束数量 T Infe 约束不满足的总量 N Ite 目前为止的迭代次数 可直接求 解的变量 不作为决 策变量。 非零系数数量 T 扩展求解器 N 使用的特殊求解程序 Type B-and-B Global Multistart 到目前的最佳目标值 Obj 内存使用数量 目标函数值的界 特殊求解程序当前运行步数 求解花费时间 有效步数 分枝数(对B-and-B程序); 子问题数(对Global程序); 初始点数(对Multistart程序) 更新时间间隔

  14. -求解报告窗口-

  15. -初始印象练习- 打开lingo程序,将下面代码复制粘贴到模型窗口,并运行后观察结果报告。 model: title入门练习; max=2*x1+3*x2; 2*x1+x2<8; 4*x1+3*x2<15; END

  16. -傻瓜输入法- • 傻瓜输入法格式 • 注意事项 • 算术运算符 • 逻辑运算符 • 数学函数

  17. -傻瓜输入法格式- 例 直接用LINGO来解如下二次规划问题: 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

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

  19. -注意事项- • 在模型的开头可以用“TITLE” 对模型命名; • 变量可以放在约束右端; • 每行(目标,约束,说明语句)后增加 “;”; • @开头都是函数调用; • 上下界限定用@BND(),不计入模型的约束,也不能给出其松紧判断和敏感性分析; • 缺省假定所有变量非负;可在模型的“END”语句后用“@FREE()”将变量的非负假定取消; • 对0-1变量说明:@BIN();对整型变量说明:@GIN(); • 模型由一系列语句组成,适当缩进,增强可读性。

  20. -算术运算符- 数与数之间的运算,运算结果也是数。 LINGO中的算术运算符有以下5种: +(加法), -(减法或负号), *(乘法), /(除法), ^ (求幂)。

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

  22. -数学函数- @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的自然对数值。

  23. -数学函数- @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不为整数时 ,采用线性插值得到结果)。

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

  25. -实例1-

  26. -实例1- 程序编写 model: title生产计划问题; [maxf]max=2*x1+3*x2; [TIME]x1+2*x2<8; [A]4*x1<16; [B]4*x2<12; END

  27. -实例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万元 。

  28. -傻瓜输入法练习- 《数学软件与数学实验》第二版 155页 第1题

  29. -“段”的使用- • 集合段 • 数据段 • 目标与约束段 • 基本集合与派生集合 • 循环函数 • 循环求和函数 • 多维数组 • 过滤条件 • 逻辑运算符

  30. -“段”的使用- 1.怎样表示: sets:!集合段; s/1..100/:x;!基本集合, 集合名与属性变量; endsets !目标与约束段; @sum(s(i):x(i))<90;!循环求和函数;

  31. - “段”的使用- 2.怎样赋值: sets: ss/1..10/:b; endsets data:! 数据段; b=1 0 1 2 3 5 2 6 1 2; enddata

  32. - “段”的使用- 3.怎样表示: sets: a/1..100/:; b/1..200/:; C(a,b):x;!派生集合; endsets @sum(c(i,j):x(i,j))=280;

  33. - “段”的使用- 4.怎样表示: sets: a/1..100/:; b/1..200/:; C(a,b):x; endsets @for(b(j):@sum(a(i):x(i,j))=280); !集合元素的循环函数;

  34. -集合循环函数- @FOR( )(集合元素的循环函数): 对集合setname的每个元素独立地生成表达式,表达式由expression_list描述。 @MAX( )(集合属性的最大值函数):返回集合setname上的表达式的最大值。 @MIN( )(集合属性的最小值函数):返回集合setname上的表达式的最小值。 @PROD( )(集合属性的乘积函数): 返回集合setname上的表达式的积。 @SUM( )(集合属性的求和函数):返回集合setname上的表达式的和。

  35. - “段”的使用- 5.怎样表示: 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));

  36. - “段”的使用- 6.怎样表示: 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)); !过滤条件;

  37. -逻辑运算符- 运算结果只有“真”(TRUE)和“假”(FALSE)两个值(称为“逻辑值”),LINGO中用数字1代表TRUE,其他值(典型的值是0)都是FALSE。 在LINGO中,逻辑运算(表达式)通常作为过滤条件使用。 逻辑运算符有9种,可以分成两类: #AND#(与),#OR#(或),#NOT#(非):逻辑值之间的运算,它们操作的对象本身已经是逻辑值或逻辑表达式; #EQ#(等于),#NE#(不等于),#GT#(大于),#GE#(大于等于),#LT#(小于),#LE#(小于等于):是“数与数之间”的比较。 √ 例2 #gt# 3 #and# 4 #gt# 2 结果是:真(1) 假(0)?

  38. - “段”的使用- 7.怎样表示: 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));

  39. -程序编写- model: title生产计划程序1; Sets: yuefen/1..4/:c,x,e,d; endsets data: c=70 71 80 76; d=6000 7000 12000 6000; e=2 2 2 2 ; a=10000; enddata min=@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 遍历集合每一元素,下标可省略

  40. -程序展开- 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

  41. -程序编写- Model: Title生产计划程序2; Sets: yuefen/1..4/:c,x,e,d,s; endsets data: c=70 71 80 76; d=6000 7000 12000 6000; e=2 2 2 2 ; a=10000; enddata min=@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

  42. -“段”的使用练习- 《数学软件与数学实验》第二版 155页 第1题(1),(2),(3)

  43. -数据传递- • 与EXCEL交换数据

  44. C4:C7单元命名为COST D4:D7单元命名为NEED E4:E7单元命名为SUPPLY F4:F7单元命名为SOLUTION 用于输出结果 B4:B7单元命名为CITIES -与EXCEL交换数据- 用“插入︱名称︱定义”命名选中区域

  45. 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 -数据传递-与EXCEL交换数据

  46. -数据传递-与EXCEL交换数据 报告窗口输出总结报告: Export Summary Report --------------------- Transfer Method: OLE BASED Workbook: mydata.xls Ranges Specified: 1 SOLUTION Ranges Found: 1 Range Size Mismatches: 0 Values Transferred: 4 采用OLE方式传输数据; EXCEL文件为mydata.xls; 指定的接收单元范围为SOLUTION; 在mydata.xls正好找到一个名为SOLUTION的域名; 不匹配的单元数为0; 传输了4个数值。

  47. -实例2-2011全国数模竞赛的一个模型 从excel文档中读入数据,先给数据区域命名。用“插入︱名称︱定义”命名选中区域。 model: title分片; sets: pingtai/1..24/:p; lukou/1..92/:n; link(pingtai,lukou):t,x; endsets data: t=@ole('d:\time1.xls','t'); n=@ole('d:\fa.xls','n'); enddata

  48. -实例2-2011全国数模竞赛的一个模型 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

  49. -程序结构与调试- • 程序结构 • 程序调试

  50. -程序结构- 一般来说, LINGO中建立的优化模型可以由六个部分组成,或称为六“段”(SECTION): (1)集合段(SETS):以“ SETS:” 开始, “ENDSETS”结束,定义必要的集合变量(SET)及其元素(MEMBER,含义类似于数组的下标)和属性(ATTRIBUTE,含义类似于数组)。 (2)目标与约束段:目标函数、约束条件等,没有段的开始和结束标记,因此实际上就是除其它四个段(都有明确的段标记)外的LINGO模型。 (3)数据段(DATA):以 “DATA:” 开始, “ENDDATA”结束, 对集合的属性(数组)输入或输出必要的常数数据。 格式为:“attribute(属性) = value_list(常数列表);”

More Related