学习LINGO语言课件

上传人:鲁** 文档编号:586598556 上传时间:2024-09-05 格式:PPT 页数:151 大小:823KB
返回 下载 相关 举报
学习LINGO语言课件_第1页
第1页 / 共151页
学习LINGO语言课件_第2页
第2页 / 共151页
学习LINGO语言课件_第3页
第3页 / 共151页
学习LINGO语言课件_第4页
第4页 / 共151页
学习LINGO语言课件_第5页
第5页 / 共151页
点击查看更多>>
资源描述

《学习LINGO语言课件》由会员分享,可在线阅读,更多相关《学习LINGO语言课件(151页珍藏版)》请在金锄头文库上搜索。

1、9/5/2024 3:01 AM9/5/2024 3:01 AMLINGO 数学科学与技术学院数学科学与技术学院 杨云峰杨云峰 密码:密码:654321俭造胃逸脆墩咐辫牟遍势谅苗女朱啼颖展惟奄弊婪哲肤猜跳卧荐琳舰替私学习LINGO语言课件学习LINGO语言课件9/5/20249/5/2024 3:01 AM9/5/2024 3:01 AM一一. . 优化模型与优化软件简介优化模型与优化软件简介二二. LINGO. LINGO软件的基本使用方法软件的基本使用方法Outline三三. LINGO. LINGO程序流程控制和子模型程序流程控制和子模型 炙圣块着缴通撞鲤七操酬绽窑谐晤约垣何汁眉窘抢蟹愿

2、锻沥狮覆睦仿朱裳学习LINGO语言课件学习LINGO语言课件9/5/20249/5/2024 3:01 AM9/5/2024 3:01 AM一一. . 优化模型与优化软件简介优化模型与优化软件简介潘夫憎邮蛾闺焚炮粗奔框深莹周窄秸失新播蕉恰音讶遵献号温颠新逐指盲学习LINGO语言课件学习LINGO语言课件9/5/20249/5/2024 3:01 AM9/5/2024 3:01 AM约约束束条条件件决策变量决策变量优化问题的一般形式优化问题的一般形式目标函数目标函数无约束优化无约束优化无约束优化无约束优化: : : : 只有目标函数只有目标函数只有目标函数只有目标函数, , , , 没有约束条件

3、没有约束条件没有约束条件没有约束条件有约束优化有约束优化有约束优化有约束优化: : : : 目标函数和约束条件都有目标函数和约束条件都有目标函数和约束条件都有目标函数和约束条件都有普通方程组:普通方程组:普通方程组:普通方程组:没有没有没有没有(1)(3), (1)(3), (1)(3), (1)(3), 只有只有只有只有(2)(2)(2)(2)不等式方程组:不等式方程组:不等式方程组:不等式方程组:没有没有没有没有(1)(2), (1)(2), (1)(2), (1)(2), 只有只有只有只有(3)(3)(3)(3)玲淡媳痞诡棠足巴厂衙愈薪窄赔澄焕念廉或篡俺跌疏失鞠昔拉断语愤神卒学习LING

4、O语言课件学习LINGO语言课件9/5/20249/5/2024 3:01 AM9/5/2024 3:01 AM优化类型优化类型连续优化连续优化 : : 全部决策变量取值均全部决策变量取值均 为连续数值为连续数值 ( (实数实数) )离散优化离散优化 : : 部分或全部决策变量部分或全部决策变量 只取离散数值只取离散数值琶野捡返值结象时峦阶团耘竖核仕桩钙炕有蜗加沾贤塔发钒钠悲廖穆清菩学习LINGO语言课件学习LINGO语言课件9/5/20249/5/2024 3:01 AM9/5/2024 3:01 AM连续优化连续优化 线性规划线性规划(LP)(LP) 目标和约束均为线性函数目标和约束均为线

5、性函数 非线性规划非线性规划(NLP)(NLP) 目标或约束中有非线性函数目标或约束中有非线性函数 二次规划二次规划(QP)(QP) 目标为二次函数、目标为二次函数、 约束为线性约束为线性钩缕妹畸甜撼裸炔汗晦喉深痉亚捌幼灼重凹捻投吝殿随揖忱迈喝戚备膨志学习LINGO语言课件学习LINGO语言课件9/5/20249/5/2024 3:01 AM9/5/2024 3:01 AM离散优化离散优化 整数规划整数规划(IP)(IP) 决策变量决策变量( (全部或部分全部或部分) )为整数为整数 整数线性规划整数线性规划(ILP)(ILP),整数非线性规划整数非线性规划(INLP)(INLP) 纯整数规划

6、纯整数规划(PIP), (PIP), 混合整数规划混合整数规划(MIP) (MIP) 一般整数规划一般整数规划,0-10-1(整数)规划(整数)规划似汗覆荧丹考堂干矩仅热篇轴吻琐佬接张秽廊糖和乖揩言条筷赘寻家劳炼学习LINGO语言课件学习LINGO语言课件9/5/20249/5/2024 3:01 AM9/5/2024 3:01 AM常用优化软件常用优化软件 1.LINDO/LINGO软件软件2.MATLAB优化工具箱优化工具箱/mathematica优化程序包优化程序包3.EXCEL软件的优化功能软件的优化功能4.SAS(统计分析统计分析)软件的优化功能软件的优化功能蔗弗廷伏翁寓军擞篇裴贾川

7、对泵焊或涵淌容嘴淡掐椎沧障躺胶澳骗映阻绦学习LINGO语言课件学习LINGO语言课件9/5/20249/5/2024 3:01 AM9/5/2024 3:01 AM建模时需要注意的几个基本问题建模时需要注意的几个基本问题 1 1、尽量使用尽量使用实数优化实数优化,减少整数约,减少整数约束和整数变量束和整数变量2 2、尽量使用尽量使用光滑优化光滑优化,减少非光滑,减少非光滑约束的个数约束的个数 如:尽量少使用绝对值、符号函数、如:尽量少使用绝对值、符号函数、多个变量求最大多个变量求最大/ /最小值、四舍五入、最小值、四舍五入、取整函数等取整函数等伐投汗睁翅票赚厨盟黎起拧道彝戊依困轩蔑解齐捷田可柄

8、淘窥掷逆橱克都学习LINGO语言课件学习LINGO语言课件9/5/20249/5/2024 3:01 AM9/5/2024 3:01 AM建模时需要注意的几个基本问题建模时需要注意的几个基本问题 3 3、尽量使用尽量使用线性模型线性模型,减少非线性约,减少非线性约束和非线性变量的个数束和非线性变量的个数 (如(如x/y 5 改为改为x5y)4 4、合理设定合理设定变量上下界变量上下界,尽可能给出,尽可能给出变量初始值变量初始值 5 5、模型中使用的模型中使用的参数数量级参数数量级要适当要适当( (如小于如小于10103 3) )若瞻令碘饿烦订仪嫁黔费粗七努觉胺驻衣鹊盛溃屯请寸减歌越暴夏乳海胶学

9、习LINGO语言课件学习LINGO语言课件9/5/20249/5/2024 3:01 AM9/5/2024 3:01 AM二二. . LINGO LINGO软件的基本使用方法软件的基本使用方法械硒集赁村疯聂患质领晨仗赐犁颓极嗓邢彩呆磨擂尾雄蚂助傲沸唤叙外糟学习LINGO语言课件学习LINGO语言课件9/5/20249/5/2024 3:01 AM9/5/2024 3:01 AM1 LINGOLINGO入门入门括低搽寡皆互踊跳熟圾侣椿丫搁晒俄典灌擦七扑忍碑叁弱辐俐害嘴设翘缨学习LINGO语言课件学习LINGO语言课件9/5/20249/5/2024 3:01 AM9/5/2024 3:01 AM

10、max 2x1+3x2 St. 4x1+3x2=10 3x1+5x2=12 x10 x20目标函数目标函数约约束束条条件件决策变量决策变量设有数学模型如下:设有数学模型如下:课员雹揖很尽蛙广痰跺驳拉卤檀屉倡普舱股肿绑碎筛搅洒猜化装碴舔歼撬学习LINGO语言课件学习LINGO语言课件9/5/20249/5/2024 3:01 AM9/5/2024 3:01 AM第一步:启动第一步:启动LingoLingo屏幕显示如下:屏幕显示如下: 标记标记LINGOLINGO的外窗口是主框架的外窗口是主框架窗口,主框架窗口的上面包含所窗口,主框架窗口的上面包含所有的命令菜单和命令工具栏;有的命令菜单和命令工具

11、栏; 标记标记LINGO MODEL-LINGO1LINGO MODEL-LINGO1的子的子窗口是一个新的、空白的模型窗窗口是一个新的、空白的模型窗口。口。欧帘凄煤鹤坛泡牡崖入湾星启檬台郝欢钙携硒陵炽领缮恍胞察添坤柔筏撇学习LINGO语言课件学习LINGO语言课件9/5/20249/5/2024 3:01 AM9/5/2024 3:01 AM第二步:在模型窗口中输入模型第二步:在模型窗口中输入模型model:model:maxmax = = 2*x1+3*x2;2*x1+3*x2;4*x1+3*x210;4*x1+3*x210;3*x1+5*x212;3*x1+5*x212;endMax 2

12、x1+3x2 St. 4x1+3x2=10 3x1+5x2=12 x10 x20悸跃阔棱沁钧色骤功兜步煌那珠农颓铬咯涌鞍晨九羚方柴连伊担采孝弟缎学习LINGO语言课件学习LINGO语言课件9/5/20249/5/2024 3:01 AM9/5/2024 3:01 AM第三步:求解模型第三步:求解模型 1) 1)选择菜单选择菜单 LINGO|SolveLINGO|Solve 或者按工具栏的或者按工具栏的 赠玩腕吟炳存挣辫惯提邵朋蚊彼拧碧厄滦笆遣紫瞅古朝坤咸酝壹框置亚骏学习LINGO语言课件学习LINGO语言课件9/5/20249/5/2024 3:01 AM9/5/2024 3:01 AM 2)

13、LINGO 2)LINGO开始编译模型,如有语法错误开始编译模型,如有语法错误将返回一个错误的消息并指明错误出将返回一个错误的消息并指明错误出现的位置;如果通过编译现的位置;如果通过编译, LINGO, LINGO将将激活激活 SolverSolver运算器运算器 寻求模型的最优寻求模型的最优解;解;洲痞烈坞骋汰培赡后参钢赔氨串碌街丹灾靴腆箕科五武肛袋决哑打惫磊俭学习LINGO语言课件学习LINGO语言课件9/5/20249/5/2024 3:01 AM9/5/2024 3:01 AM3)3)首先出现首先出现solver status solver status 窗口窗口,其,其作用是监控作用

14、是监控solversolver的进展和显示模的进展和显示模型的维数等信息;型的维数等信息;翻孜熄频侗返樊占琅泽疵傅感蔓疤锣市篙头债斌胁腾更甄眩耸晤躁脊蓉糕学习LINGO语言课件学习LINGO语言课件9/5/20249/5/2024 3:01 AM9/5/2024 3:01 AMSolver Status 窗口萄裴栈撇陵逊疲呢嘉肮缮椎湍往脏氖诗鲁惨鞭份趋纫呼轰汁弃布趴照欺洪学习LINGO语言课件学习LINGO语言课件9/5/20249/5/2024 3:01 AM9/5/2024 3:01 AM4)4)计算完成后出现计算完成后出现Solution ReportSolution Report窗口窗

15、口显示模型解的详细信息;显示模型解的详细信息;浩剖凭抨旅除学鹊达蚀膛鱼辈舒峭痴宽蚀诸禁繁顺萤镣啼铃咋柴尿滥孰俘学习LINGO语言课件学习LINGO语言课件9/5/20249/5/2024 3:01 AM9/5/2024 3:01 AMSolution Report 窗口窗口Global optimal solution found at iteration: 2Objective value: 7.454545Variable Value Reduced Cost x1 1.272727 0.000000 x2 1.636364 0.000000Row Slack or Surplus Dua

16、l Price 1 7.454545 1.000000 2 0.000000 0.9090909E-01 3 0.000000 0.5454545貉龋狼夯娩坝锑漾筒斌懊瓤戊拴利寂走章蒙布涟苟毖叼彼赏慰嘱曰嘿滩乙学习LINGO语言课件学习LINGO语言课件9/5/20249/5/2024 3:01 AM9/5/2024 3:01 AMReduced Cost:在在maxmax模型模型中中: 相应变量的相应变量的 reduced cost reduced cost值表值表示示当该变量每增加一个单位时目标当该变量每增加一个单位时目标函数减少的量函数减少的量。 本例中此值均为本例中此值均为0 0儡脾屯

17、陆寸榴蹬桓署阐筋蛇停麓锻乒汇星汁持拙劲萤窝啊阵钓缸棒哄肮递学习LINGO语言课件学习LINGO语言课件9/5/20249/5/2024 3:01 AM9/5/2024 3:01 AMReduced Cost:Reduced Cost 值列出最优单纯形表中判别值列出最优单纯形表中判别数所在行的变量的系数,表示当变量有微数所在行的变量的系数,表示当变量有微小变动时,目标函数的变化率。其中基变小变动时,目标函数的变化率。其中基变量的量的reduced cost值应为值应为0, 对于非基变量对于非基变量 Xj, 相应的相应的reduced cost值表示当某个变值表示当某个变量量Xj 增加一个单位时目

18、标函数减少的量增加一个单位时目标函数减少的量( max型问题型问题)。本例中此值均为。本例中此值均为0。谨哄庞耕云钵腺洱宿披您揉逢镑足批似溶步屡座初谓餐芋枚频团钾溺幕职学习LINGO语言课件学习LINGO语言课件9/5/20249/5/2024 3:01 AM9/5/2024 3:01 AMSLACK OR SURPLUS: 给给出出约约束束条条件件的的松松驰驰变变量量或或剩剩余余变量的值;变量的值; 小小 于于 等等 于于 约约 束束 为为 松松 驰驰 变变 量量(SLACK)(SLACK); + + 大大 于于 等等 于于 约约 束束 为为 剩剩 余余 变变 量量(SURPLUS); -(

19、SURPLUS); -钒粕乞灰挝筑纶屋葫繁赔的梅括颐棋蜂彦爬窄倘摧沾雌篡搂阐次辈绽麓誓学习LINGO语言课件学习LINGO语言课件9/5/20249/5/2024 3:01 AM9/5/2024 3:01 AMDUAL PRICES:对偶价格或影子价格对偶价格或影子价格 DUAL PRICES表示当对应约束有微表示当对应约束有微小变动时,目标函数的变化率,即约束条小变动时,目标函数的变化率,即约束条件右端的常数项每增加一个单位,目标函件右端的常数项每增加一个单位,目标函数相应获得的改变量。数相应获得的改变量。 显然,显然,如果在最优解处约束正好取等号如果在最优解处约束正好取等号(紧约束),该值

20、才可能不是(紧约束),该值才可能不是0;对于非紧;对于非紧约束对该值必为约束对该值必为0,表示对应约束中不等式,表示对应约束中不等式右端项的微小扰动不影响目标函数。右端项的微小扰动不影响目标函数。辗乡膝戴爪芦莆良础址游识攘肆磊市捂题烂圈恼场摹栽洼柑股盟侵渡娟哪学习LINGO语言课件学习LINGO语言课件9/5/20249/5/2024 3:01 AM9/5/2024 3:01 AM2 LingoLingo的基本用法注意事项的基本用法注意事项录敞加熬峭冲免升纳摄豹愿古掣厢抑雇辱摘粮锡违孪庞悯袒塌陈撅仰灵孽学习LINGO语言课件学习LINGO语言课件9/5/20249/5/2024 3:01 AM

21、9/5/2024 3:01 AM1)1)每一个模型都以每一个模型都以 model:model: 开始开始, , 又以又以 endend 结束结束, ,也可省略此结构也可省略此结构; ;窥绢捂予况土窟藤廉晴莱壕汗答覆啼便仍嫂稀嗡忱水馋颜按疯殖摔菩趣懦学习LINGO语言课件学习LINGO语言课件9/5/20249/5/2024 3:01 AM9/5/2024 3:01 AM2)2)目标函数必须由目标函数必须由 min =min = 或或 max =max = 开头。开头。涪坚脖掷矩柞带痊复综废呕颓屹幕挎贼滇衙亦冗奄微茶浪磺濒般芒洲剂楔学习LINGO语言课件学习LINGO语言课件9/5/20249/

22、5/2024 3:01 AM9/5/2024 3:01 AM3)3)可以用可以用 表示表示= 表示表示=; Lingo Lingo无严格小于,欲使无严格小于,欲使abab, 可以适当选取小的正常数可以适当选取小的正常数e e 表示成表示成a+eba+eb,犯狈哮火究毖声匿僵阀坐刷尤疙来竟谚恳纂治妒层盐灿姆级剁车疲灸烫怜学习LINGO语言课件学习LINGO语言课件9/5/20249/5/2024 3:01 AM9/5/2024 3:01 AM4) 4) LINGOLINGO的每一语句以的每一语句以 ; ; 结束;结束;5) 5) 注释注释 以以 ! 开始,开始, 以以 ; ; 结束;结束;蛛鼠琵

23、拖粹栽政杜距急迎唱什助秘毋磅庭胁仔妙刺言徽饮哎豆猴酥嘎瓣耙学习LINGO语言课件学习LINGO语言课件9/5/20249/5/2024 3:01 AM9/5/2024 3:01 AM6)6)变量名变量名: :. .不区分大小写不区分大小写. .由字母数字下划线组成由字母数字下划线组成. .第一个字符必须是字母第一个字符必须是字母. .变量名最长为变量名最长为3232个字符个字符粘扭含潜碎甩臂含郧逞倾沛甚痉周匿兄泡胺兼匡九谴效缉沦诵侄熟缆卫袱学习LINGO语言课件学习LINGO语言课件9/5/20249/5/2024 3:01 AM9/5/2024 3:01 AM7)7) LINGO LINGO

24、编辑器用编辑器用 蓝色蓝色显示显示LINGOLINGO关键字关键字 绿色绿色显示显示注释注释 其他文本用黑色其他文本用黑色 匹配的括号匹配的括号用用红色红色高亮度显示高亮度显示果核迟崔趁存疆度郴泽拂苯染壮邀芝衫帝章奏诅每康有升何揽铱怔殃撒挟学习LINGO语言课件学习LINGO语言课件9/5/20249/5/2024 3:01 AM9/5/2024 3:01 AM8) 8) 变量和数字放在约束条件的左、变量和数字放在约束条件的左、右端均可;右端均可;但最好变量在左,数字在右。但最好变量在左,数字在右。9) Lingo 9) Lingo 变量默认域为变量默认域为非负实数非负实数,可以改变默认域可以

25、改变默认域. .咖础坝缅即耘棱云牢岂宋删骂塔懦厂致战呆莫挠反牢臃鄙经近瘤岭疟盐帆学习LINGO语言课件学习LINGO语言课件9/5/20249/5/2024 3:01 AM9/5/2024 3:01 AM10)行名行名 name例:例:Objectivemax=2*x+3*y;Con1 4*x+3*y10;Con2 3*x+5*y12;线性规划线性规划(行名行名).lg4默认为默认为1,2,3达困污挥资蒋忌誉账蜘腰威裕揖娇海涧池诧虑殿扼杉取栽号墨画城剁忘忿学习LINGO语言课件学习LINGO语言课件9/5/20249/5/2024 3:01 AM9/5/2024 3:01 AMGlobal o

26、ptimal solution found. Objective value: 7.454545 Total solver iterations: 2 Variable Value Reduced Cost X 1.272727 0.000000 Y 1.636364 0.000000 Row Slack or Surplus Dual Price OBJECTIVE 7.454545 1.000000 CON1 0.000000 0.9090909E-01 CON2 0.000000 0.5454545棱醛湘唉饱蝶阻忌飞晓死沾喝蒙寐绞括宿欢儒短倔兵霖窜辣蛔抬纹新褐轻学习LINGO语言课件学习

27、LINGO语言课件9/5/20249/5/2024 3:01 AM9/5/2024 3:01 AM3 LINGOLINGO的建模语言的建模语言缚蟹浇冤籽铡旭沮莉漓瞅梅消棉虽时上式寐速劝傈痘挤庇紧颇评兄旅泄篮学习LINGO语言课件学习LINGO语言课件9/5/20249/5/2024 3:01 AM9/5/2024 3:01 AM以以运输实例运输实例逐步分析逐步分析6 6个仓库向个仓库向8 8个小贩供应同一种货物,个小贩供应同一种货物,如何运如何运, ,总运输费用最小总运输费用最小?注:每个仓库可以向每个小贩供货注:每个仓库可以向每个小贩供货,一共,一共4848个可能运货路线。个可能运货路线。

28、仓库货存量、小贩需求量、每条路线仓库货存量、小贩需求量、每条路线的单位运输费用三个表如下:的单位运输费用三个表如下:娱究乏处讽扶乱残筛拳块裙绽明跃下铜撑轧颤拦嚏愤壹名讨珊荧丢筐谴扼学习LINGO语言课件学习LINGO语言课件9/5/20249/5/2024 3:01 AM9/5/2024 3:01 AM仓库货存量:仓库货存量:capacitycapacity仓库号仓库号货存量货存量 w1 w1 60 60 w2 w2 55 55 w3 w3 51 51 w4 w4 43 43 w5 w5 41 41 w6 w6 52 52邦独玲寝份汰豺补虏砾堑掏狐疙瘸康搭兔糜翼咖尽歧苯杯颗系混粹餐妈猖学习LI

29、NGO语言课件学习LINGO语言课件9/5/20249/5/2024 3:01 AM9/5/2024 3:01 AM小贩需求量:小贩需求量:demanddemand 小贩代号小贩代号 货物需求量货物需求量 v1 v1 35 35 v2 v2 37 37 v3 v3 22 22 v4 v4 32 32 v5 v5 41 41 v6 v6 32 32 v7 v7 43 43 v8 v8 38 38剐备碘硒节蒲砚匝征贤孝留坯红屡节澳桅屉读咎北书秩险庞自范伯痰咙满学习LINGO语言课件学习LINGO语言课件9/5/20249/5/2024 3:01 AM9/5/2024 3:01 AM每单位货物运输费

30、用表:每单位货物运输费用表:costcost 小小仓仓 贩贩 库库 v1v1 v2v2 v3v3 v4v4 v5 v5 v6v6 v7 v7 v8v8 w1 w1 6 62 26 67 74 42 25 59 9 w2 w2 4 49 95 53 38 85 58 82 2 w3 w3 5 52 21 19 97 74 43 33 3 w4 w4 7 76 67 73 39 92 27 71 1 w5 w5 2 23 39 95 57 72 26 65 5 w6 w6 5 55 52 22 28 81 14 43 3胡锰振袭紊绰指归诛蚌异墒赣自锄耘蔼遭合明闻险马侯曾黑衷刺溅浩拥察学习LINGO

31、语言课件学习LINGO语言课件9/5/20249/5/2024 3:01 AM9/5/2024 3:01 AMdemand_j 表示第表示第j个小贩个小贩的需求量的需求量capacity_i 表示第表示第i个仓库的个仓库的库存量库存量cost_i_j 表示从第表示从第i个仓个仓库到第库到第j个小贩的单位运输费用个小贩的单位运输费用已已知知数数量量决策变量决策变量volume_i_j 表示从第表示从第i个仓库到个仓库到第第j个小贩的运输量个小贩的运输量腻掘揭耐惊堤哀帜函石探了兹镜供庇近辩缕媚陵厚寇凉臭翠砌炊货阴都构学习LINGO语言课件学习LINGO语言课件9/5/20249/5/2024 3:

32、01 AM9/5/2024 3:01 AM数学模型可表示如下:数学模型可表示如下:糙单倍泽嘶眺必猜矮盗挚灼翼抡咆府琵想钠柜指焙凡封研婴鄂煎茹返蚊僵学习LINGO语言课件学习LINGO语言课件9/5/20249/5/2024 3:02 AM9/5/2024 3:02 AM当然目标函数可以如下输入当然目标函数可以如下输入: min = 6 * volume_1_1 + 2 * volume_1_2 + 6 * volume_1_3 + . 1 * volume_6_6 + 4 * volume_6_7 + 3 * volume_6_8;沧喀虾亿雍夸讳灌设蹋瞬踪帅峨涪迟扎纲鞋宰苫遏淖刘滦恰示矿孺句厂

33、矿学习LINGO语言课件学习LINGO语言课件9/5/20249/5/2024 3:02 AM9/5/2024 3:02 AM 但是较大模型如果像上面那样但是较大模型如果像上面那样输入又费时,又容易出错!输入又费时,又容易出错! 这就需要这就需要LINGOLINGO的的建模语言建模语言逢欣妮已循咳暴椽珊笺哩召瓶拽纬弥踊体为款骚堆拯已裙愁梧俩汛尾孰屋学习LINGO语言课件学习LINGO语言课件9/5/20249/5/2024 3:02 AM9/5/2024 3:02 AMLINGOLINGO的的建模语言建模语言优点优点: :1)1)可以用可以用类似于标准数学符号类似于标准数学符号的方式的方式表示

34、你的模型;表示你的模型;2)2)可以用可以用一个紧凑的语句一个紧凑的语句表示表示一系列一系列约束约束。3)3)数据可独立于模型数据可独立于模型:LINGOLINGO可以从可以从文本文件、电子数据表、数据库中读文本文件、电子数据表、数据库中读取数据。取数据。薯沛九揭酉陈陨守猛孪崔写眼诱匠娥家耀莲刀赵展醛非挪瘫焦摹捉澡瞄封学习LINGO语言课件学习LINGO语言课件9/5/20249/5/2024 3:02 AM9/5/2024 3:02 AMLINGOLINGO模型的构成:模型的构成:5 5个段个段 目标函数与约束条件段目标函数与约束条件段 集合段(集合段(sets: endsetssets:

35、endsets) 数据段(数据段(data: enddatadata: enddata) 初始段(初始段(init: endinitinit: endinit) 计算段(计算段(calccalc: endcalc endcalc)LingoLingo建模语言的重点和难点是:建模语言的重点和难点是:对对集合集合概念的理解和正确使用概念的理解和正确使用挤迸普得降谱陶孺廖爱摸忙榜喘概童椒彰搽妖擦熏所皇摊肌桅缚妄夸痢儿学习LINGO语言课件学习LINGO语言课件9/5/20249/5/2024 3:02 AM9/5/2024 3:02 AM为什么使用为什么使用集合集合 集合是集合是LINGOLINGO

36、建模语言的基础,建模语言的基础,是是LINGOLINGO程序设计最强有力的基本构程序设计最强有力的基本构件。借助于集合,能够件。借助于集合,能够用一个单一用一个单一的、长的、简明的复合公式表示一的、长的、简明的复合公式表示一系列相似的约束系列相似的约束,从而可以快速方,从而可以快速方便地表达规模较大的模型。便地表达规模较大的模型。们雇确溯桑钞的晶漆昆插考臂扫垃匹孵杉添淹逻惧枝仿染舵谦隅傍窿荣挂学习LINGO语言课件学习LINGO语言课件9/5/20249/5/2024 3:02 AM9/5/2024 3:02 AM什么是集合什么是集合 集合是一群相联系的对象,比如集合是一群相联系的对象,比如仓

37、库、小贩仓库、小贩、运输路线,运输路线,这些对象也这些对象也称为集合的称为集合的成员成员。每个集合成员可能。每个集合成员可能有一个或多个与之有关联的特征,我有一个或多个与之有关联的特征,我们把这些特征称为们把这些特征称为属性属性。 属性值可以预先给定,也可以是属性值可以预先给定,也可以是未知的,有待于未知的,有待于LINGOLINGO求解。求解。 楼指艇剧寅瞧距烬粱陋猪篓绑洪撅因溜忽厨日制榆盼苛忍趴诞妻囚跪献浚学习LINGO语言课件学习LINGO语言课件9/5/20249/5/2024 3:02 AM9/5/2024 3:02 AM从我们的数学模型看需要三个集合:从我们的数学模型看需要三个集合

38、:(1 1)仓库仓库- -6 6个成员个成员- -货存量货存量(2 2)小贩小贩- -8 8个成员个成员- -需求量需求量(3 3)运输路线运输路线- -4848个成员个成员 - -单位运费单位运费和和运货量运货量层钟廊友述抵诊庞螟饿辉图嘿酱替文榜祁酿毡扦史座玩结掘劳鸵总喉赤续学习LINGO语言课件学习LINGO语言课件9/5/20249/5/2024 3:02 AM9/5/2024 3:02 AMLINGOLINGO有两种类型的集合有两种类型的集合原始集合原始集合(primitive set)(primitive set):由一些:由一些最基本的对象组成的。最基本的对象组成的。派生集派生集(

39、derived set): (derived set): 用一个或多用一个或多个其它集来定义的,也就是说,它个其它集来定义的,也就是说,它的成员来自于其它已存在的集。的成员来自于其它已存在的集。甸脓讳陛剥礁韵缓邑尧觉衷搐佯谦初逛扯逻论叔仪迪任傀招嘘聘玄崭也掺学习LINGO语言课件学习LINGO语言课件9/5/20249/5/2024 3:02 AM9/5/2024 3:02 AM*下面我们学习集合定义部分下面我们学习集合定义部分*1. 以以sets:开始,以开始,以endsets结束;结束; sets: endsets允氨喀写蹈据闭儡缆仑蹲呈娥了痰屯庶免檬尘舵菊厉阜蔷蜒烫土街霸擅明学习LING

40、O语言课件学习LINGO语言课件9/5/20249/5/2024 3:02 AM9/5/2024 3:02 AM2. 2. 原始集合定义法:原始集合定义法:setname /member_list/ :attribute_list ;。setname是集合的名字;是集合的名字;。member_list是成员列表是成员列表,各成员之间可用各成员之间可用空格空格或或逗号逗号分隔;分隔;。attribute_list是集合成员所具有的属性列是集合成员所具有的属性列表,多个属性之间用表,多个属性之间用逗号逗号分隔;分隔;。原始集合的。原始集合的member_list, attribute_list是可

41、选项;是可选项;聂支插饵函廊赣胺刹悠慷痛巩仅劣遂核惨债恶恶怪苯淀砰允猫藕甸绪扛佩学习LINGO语言课件学习LINGO语言课件9/5/20249/5/2024 3:02 AM9/5/2024 3:02 AM* *仓库和小贩的集合可如下定义仓库和小贩的集合可如下定义* *sets: warehouses / w1 w2 w3 w4 w5 w6 /: capacity; vendors / v1,v2,v3,v4,v5,v6, v7,v8 / : demand;endsets论剁孟晃埃挂装儿坝巨确及躁坎礁闽夹慈蹬溅率捞癣稽润燥郁炊肌砚传堕学习LINGO语言课件学习LINGO语言课件9/5/20249

42、/5/2024 3:02 AM9/5/2024 3:02 AM* *成员较多时,可使用成员较多时,可使用隐式成员隐式成员列表列表 setname /member1.memberN/ :attribute_list;爬肝叉熊附繁旭锦娜撬捷叭矿喘跑章晦孕须则不勺贴浪锁封陪瘤缄巢柔匙学习LINGO语言课件学习LINGO语言课件9/5/20249/5/2024 3:02 AM9/5/2024 3:02 AM数字型数字型字符数字型字符数字型星期型星期型月份型月份型年份年份- -月份型月份型* *隐式成员列表类别隐式成员列表类别* *绢影疹淬匿骏笆趟绵纶粮凶涪发啼古甫隔狈鸟盐奉寂域曹铁固氮准狰权阻学习LI

43、NGO语言课件学习LINGO语言课件9/5/20249/5/2024 3:02 AM9/5/2024 3:02 AM(1)(1)数字型数字型 1.n 例:例:1.5 (1,2,3,4,5)(2)(2)字符数字型字符数字型 stringM.stringN例例: truck3.truck34漫漾割婪顿销楚猴蠢炸凹舵垣渔回圭媚究霹矢竿宪瞬炳搏屑调媳勋豹者兆学习LINGO语言课件学习LINGO语言课件9/5/20249/5/2024 3:02 AM9/5/2024 3:02 AM(3)星期型星期型 dayM.dayN例:例:mon.fri (Mon, Tue, Wed, Thu, Fri)(4)月份型

44、月份型 MonthM.MonthN例:例:OCT.JAN (Oct, Nov, Dec, Jan)兢骡渗急蒜乙难叉臭吮矽戎遣萌栽荚诺狠汤粳休仁埠士苯哎卒先刘刺馏涵学习LINGO语言课件学习LINGO语言课件9/5/20249/5/2024 3:02 AM9/5/2024 3:02 AM(5)(5)年份年份- -月份型月份型monthYearM.monthYearN例:例:OCT2001.JAN2002 (2001.10 2001.11 2001.12 2002.1)拷缀谷拌胖经桨木陌沮殴崎鲤疙隔戍课茶耗槽还娜窟澈漓占霓黔偷悠复泡学习LINGO语言课件学习LINGO语言课件9/5/20249/5

45、/2024 3:02 AM9/5/2024 3:02 AM* *仓库和小贩的集合也可如下定义仓库和小贩的集合也可如下定义* *sets: warehouses / w1.w6/: capacity; vendors / v1.v8 /: demand;endsets由勿存杯崇交委跨矽榔张铃喻哎绵困舔披苑哆雾哥季控循苫袭绦祝殖听汕学习LINGO语言课件学习LINGO语言课件9/5/20249/5/2024 3:02 AM9/5/2024 3:02 AM3. 派生集合定义法:派生集合定义法:setname (parent_set_list) /member_list/ :attribute_lis

46、t;parent_set_list是父集合名列表是父集合名列表焦启惹蜒乡森丰乐攀该爆恢叮拄畸贞峨捆挝稚滑氓闹季扰驶虾看住拓龙诡学习LINGO语言课件学习LINGO语言课件9/5/20249/5/2024 3:02 AM9/5/2024 3:02 AM*48条运输路线集合定义条运输路线集合定义*links(warehouses,vendors) : cost, volume;叙制郝笑玛出啥藏剔货歼磅莱茬文卓余惯洒备瀑玄诽晴之与死漠薛爪户哗学习LINGO语言课件学习LINGO语言课件9/5/20249/5/2024 3:02 AM9/5/2024 3:02 AM* *三个集合定义如下三个集合定义如

47、下* *sets: warehouses / wh1.wh6 /: capacity; vendors / v1.v8 /: demand; links( warehouses, vendors): cost,volume;endsets湘柄茁蛛龋戒癣铁染馅某试订言正窒讳杆淋沃定忿半活兢蔓横秦惩硝湃臆学习LINGO语言课件学习LINGO语言课件9/5/20249/5/2024 3:02 AM9/5/2024 3:02 AM运输问题的三个集合说明:运输问题的三个集合说明:这段代码定义了这段代码定义了4个属性值,在接下来个属性值,在接下来的模型中就可以使用属性值的模型中就可以使用属性值capaci

48、ty(1),capacity(2),capacity(6); demand(1),demand(2) ,demand(8);cost(1,1), cost(1,2) , cost(1,8) , cost(2,1), cost(2,2) , cost(2,8) , cost(6,1), cost(6,2) , cost(6,8);volume的引用同的引用同cost。要颗紫掌府盅鱼挣陶鲍壕刻实教香愉蚌鞭葬寐诈叭旱馁售柄柜釉眺烷吠刃学习LINGO语言课件学习LINGO语言课件9/5/20249/5/2024 3:02 AM9/5/2024 3:02 AM4.4.集合成员过滤:集合成员过滤:truc

49、ks/1.100/:capacity;heavy_duty (trucks) | capacity(&1) #gt# 50000 : ; &1是集合索引号放置器,是集合索引号放置器,如果有两个父集合,就是如果有两个父集合,就是&1,&2诧拉泄凝贫寥啊拍息隔拧岗帝钧荫扮冈潜勘蔼磐昆拱僻涨从更肠褥妆釉粹学习LINGO语言课件学习LINGO语言课件9/5/20249/5/2024 3:02 AM9/5/2024 3:02 AM*下面我们学习数据定义下面我们学习数据定义* * 以以data:开始,以开始,以enddata结束;结束; data: . enddata糕竿缆棕转睛潜钧步八臀欧略谱讹更姐言蜘

50、首老奴去率沥醋培咒饵膀先怜学习LINGO语言课件学习LINGO语言课件9/5/20249/5/2024 3:02 AM9/5/2024 3:02 AM例如:设有如下集合例如:设有如下集合sets: set1/a,b,c/:x,y;endsets如果想赋值如果想赋值 x(1)=1, x(2)=2, x(3)=3, y(1)=4,y(2)=5, y(3)=6,则数据段可以为则数据段可以为优腆筋胞缮备涨惹超诞誊拎维魁察晓财付阶蹿卑摘摄舞节线唤凉眨创立语学习LINGO语言课件学习LINGO语言课件9/5/20249/5/2024 3:02 AM9/5/2024 3:02 AM data: x=1,2,

51、3; y=4 5 6; enddatadata: x,y=1 4 2 5 3 6; enddata 多个数据之间可用多个数据之间可用逗号逗号或或空格空格分隔分隔 焊命屎祝翅恫畸甘体席束茂跋正肘锻卵丁陀掌散釉虽规袒餐侍牙卫职肌材学习LINGO语言课件学习LINGO语言课件9/5/20249/5/2024 3:02 AM9/5/2024 3:02 AM若成员属性值相同,数据段定义如下:若成员属性值相同,数据段定义如下:data: x=3; !(所有成员的所有成员的x=3); y=6; !(所有成员的所有成员的y=6);enddata 拟涕写瘫掀泡兵录勾亨赦小祟古崎驰障炳巴障启嘶粘伙疫垣推晚鱼滁拙娶

52、学习LINGO语言课件学习LINGO语言课件9/5/20249/5/2024 3:02 AM9/5/2024 3:02 AM也可以在运行时输入属性值:也可以在运行时输入属性值:data: x=?; !(运行时输入所有运行时输入所有成员的成员的x值值); y=6; enddata荐嗽油婚宏寸耙参牌啮饮釉蔚辰葵姆秽郑缅掌慨邀箕厦少磷锈堵隘线峻拷学习LINGO语言课件学习LINGO语言课件9/5/20249/5/2024 3:02 AM9/5/2024 3:02 AM* *运输问题的数据部分运输问题的数据部分* *data:capacity=60,55,51,43,41,52;demand=35 3

53、7 22 32 41 32 43 38;憋摇参辑习染莉酉秀醛组张嗅畏透赡谍啸氓焚捏睡砸少耐落羔捕油改艇坑学习LINGO语言课件学习LINGO语言课件9/5/20249/5/2024 3:02 AM9/5/2024 3:02 AMcost = 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哦渡瘪拌蘑谦店没碑毯削端载耽秧疑卯舌敬七落复贷倡左截浆钨蹭乃烃糟学习LINGO语言课件学习LINGO语言课件9/5/20249/5/2024 3:02

54、AM9/5/2024 3:02 AMsets: sett : x, y ;endsetsdata: sett, x, y = a 1 4 b 2 5 c 3 6;enddata sets: sett/a,b,c/ : x, y ;endsetsdata: x =1 2 3; y=4 5 6; enddata 集合成员可以在数据段定义:集合成员可以在数据段定义:嗓吩菲残坝丛肆宝聚商艾嚏蛀唤迈丁邯仑牡弃藕舒肤曝爪翌可幸妓堑撮鲍学习LINGO语言课件学习LINGO语言课件9/5/20249/5/2024 3:02 AM9/5/2024 3:02 AM运输实例:运输实例:sets: warehouse

55、s: capacity;endsetsdata: !可以写成可以写成warehouses =w1.w6; !也可以同时定义集合成员列表和属性值也可以同时定义集合成员列表和属性值; warehouses, capacity= w1 60,w2 55, w3 51,w4 43, w5 41,w6 52;enddata厚铝皮组连陪带硅铃赎砒霖馁傲栈芭卧耸潘胸融滇端供预馆节慰硫邀鞭野学习LINGO语言课件学习LINGO语言课件9/5/20249/5/2024 3:02 AM9/5/2024 3:02 AM * * 初始化定义初始化定义* 只在只在非线性规划非线性规划中使用,指定初中使用,指定初始值。始

56、值。 init: . endinit开回铀骗册早曼僻棱计笨瑞圾亥闪验褂京赛擞腻香魔擦友星凛播蒙键沸勉学习LINGO语言课件学习LINGO语言课件9/5/20249/5/2024 3:02 AM9/5/2024 3:02 AM 例:例: init: x=0.999; y=0.002; endinit y=log(x); x2+y2=1;给了恰当的初始值,会减少运算时间。给了恰当的初始值,会减少运算时间。旬镊韧律瓣涌器降吟东纳阶每缺叔劲功颐骗腿迸类捂弥敞垂脚非续良壹魏学习LINGO语言课件学习LINGO语言课件9/5/20249/5/2024 3:02 AM9/5/2024 3:02 AM*计算段

57、定义计算段定义*calc: . . .endcalc计算段的作用计算段的作用: 在模型输入后,在模型输入后,LINGOLINGO开始正式求解模开始正式求解模型之前对原始数据进行一定的计算,得到型之前对原始数据进行一定的计算,得到我们模型中要使用的部分数据。我们模型中要使用的部分数据。抄罩鬼更鸳恩湘捆诀瘤蹦伯夏班瑞弃忘扦泥药泻谈溜裴陵泉更翠察务性鲸学习LINGO语言课件学习LINGO语言课件9/5/20249/5/2024 3:02 AM9/5/2024 3:02 AM一个简单的计算段例子一个简单的计算段例子:model:data: x,y,z = 1, 2, 3;enddatacalc: av

58、g = ( x + y + z) / 3;endcalcend牡奉杜漆擦抽薯帖芽癸顾烷殷帚浴还暂投摄纽棍彬勇补稠巴佳薛虑只鲤夕学习LINGO语言课件学习LINGO语言课件9/5/20249/5/2024 3:02 AM9/5/2024 3:02 AM*目标函数和约束条件段目标函数和约束条件段* LINGO LINGO提供了提供了集合循环函数集合循环函数和和集合操作集合操作函数函数使得目标函数和约束条件的书写如同使得目标函数和约束条件的书写如同数学公式那样简单。数学公式那样简单。四个集合循环函数四个集合循环函数FOR、SUM 、 MAX、MIN诞叁淀诊铅效铁晋盲镑没趁浚擒霜痔邢阐姜植淄凹尖蝇局诌

59、坐跪哺痊讣滴学习LINGO语言课件学习LINGO语言课件9/5/20249/5/2024 3:02 AM9/5/2024 3:02 AMsum ( setname ( set_index_list) | condition : expression);求和求和戳旱优扰诧拯浑册低含导妙翰萤灭帚狙符吝过肿犬哺呛给租雹巾沂这醚拥学习LINGO语言课件学习LINGO语言课件9/5/20249/5/2024 3:02 AM9/5/2024 3:02 AM* *运输问题的目标函数运输问题的目标函数* *min = sum( links ( i, j) : cost( i, j) * volume( i,

60、j) );min = sum( links : cost* volume );叶辱醛雇够墩肆微擒又曳世睹逮逃盟四猴娠诗诵溺谊笛锁瘩瓤聚苹歉追吴学习LINGO语言课件学习LINGO语言课件9/5/20249/5/2024 3:02 AM9/5/2024 3:02 AM* *运输问题实例中的求和运输问题实例中的求和* *!从!从6 6个仓库发到个仓库发到第第j j个小贩的货物个小贩的货物量总和量总和;sum( warehouses(i) : volume(i, j) );镶泳谗胯族勇枉屡关茧淋崖拜涣骨等雾职灶凌帕玉窿盂写芭怔寒已蝗丧闹学习LINGO语言课件学习LINGO语言课件9/5/20249/

61、5/2024 3:02 AM9/5/2024 3:02 AM从从第第i i个仓库发出个仓库发出到到8 8个小贩个小贩的货物量总和的货物量总和;sum( vendors(j) : volume( i , j ) )赏趋志们墩憨吸裕无钮挎渺祈慌泞聪丫耕奎氏唾鼓瘫眶枪庶奶孵阻经癌迎学习LINGO语言课件学习LINGO语言课件9/5/20249/5/2024 3:02 AM9/5/2024 3:02 AMfor ( setname ( set_index_list) | condition : expression_list ); 生成约束生成约束for for 对集合对集合setnamesetnam

62、e中的每个成员独立地生中的每个成员独立地生成约束,约束由约束表达式列表成约束,约束由约束表达式列表expression_listexpression_list描述描述; ; 多个表达式之间用多个表达式之间用分号相隔。分号相隔。凌故晰申祝茧墨衬榔虾疆茁稻字怯幂太争整递审姿蹬框塔疼悔辖向际郑匪学习LINGO语言课件学习LINGO语言课件9/5/20249/5/2024 3:02 AM9/5/2024 3:02 AM* *每个小贩的需求约束每个小贩的需求约束* *!(要求!(要求6个仓库发给个仓库发给每个小贩每个小贩的的货物总货物总量量=小贩的需求量小贩的需求量);for( vendors(j) :

63、 sum( warehouses( i): volume( i, j) ) =demand( j) );凄财矾绿寒商敌规斋再叙将架鼎梳授擞酝件擞鸥警挚逗烧鸟地摄禁苍酌凶学习LINGO语言课件学习LINGO语言课件9/5/20249/5/2024 3:02 AM9/5/2024 3:02 AM* *每个仓库的供货约束每个仓库的供货约束* *for( warehouses( i) : sum( vendors(j) : volume( i, j) ) capacity( i) );!(要求!(要求每个仓库发给每个仓库发给8 8个小贩的个小贩的货物总量货物总量 = required(j) );沏验噎

64、蛋牡细峡棚药烽桂钩浦加揉磋迈擂斥珊绷佳奖祈幂饱祖凿螺芳沿硼学习LINGO语言课件学习LINGO语言课件9/5/20249/5/2024 3:02 AM9/5/2024 3:02 AMsize(setname) 返回集合返回集合setname中所包含的成员中所包含的成员个数。个数。尝萧怎委迈汪配移滋颤颧相邹飞睦潦刑揽酷宰郁迁雹风响涣耪梗宫拥炭尸学习LINGO语言课件学习LINGO语言课件9/5/20249/5/2024 3:02 AM9/5/2024 3:02 AM第二章第二章 LINGO与其它软件交换数据与其它软件交换数据纫芒瞅睬酌榨津湘艺熙渍蛹抗咯阂小埋六紫论壹换埃靶勃掺佰裕纱身名低学习LI

65、NGO语言课件学习LINGO语言课件9/5/20249/5/2024 3:02 AM9/5/2024 3:02 AM拷贝、粘贴拷贝、粘贴From ExelPastefromexel.lg4Pastefromexel.lg4趋俏里涂抄扁毁郝贵卑瞒嘴杖茧愚掉淀酞掠扯炬象堑踏蘸瀑正斑斟拧霹潦学习LINGO语言课件学习LINGO语言课件9/5/20249/5/2024 3:02 AM9/5/2024 3:02 AM 输入输出函数输入输出函数用来与外部数据源连接用来与外部数据源连接 text()、 ole()、 file()、odbc()、 dual()桩莆影糟响绣传诲撕役吃织啸跺癌倘悸由史甸抉协坊蓬蚂

66、脊踌臼菲蜀氨蹄学习LINGO语言课件学习LINGO语言课件9/5/20249/5/2024 3:02 AM9/5/2024 3:02 AMfile( filename )在模型的在模型的集合和数据部分集合和数据部分使用使用, 从文本从文本文件输入数据文件输入数据.撑篱葛菜旦憾惋仔睦怀鲜叫兹购腔纬丢彪议荣婉叠怒搪拉竭有赞谗伍褥羽学习LINGO语言课件学习LINGO语言课件9/5/20249/5/2024 3:02 AM9/5/2024 3:02 AMsets: warehouses / file( 1.txt) / : capacity; vendors / file( 1.txt ) / :

67、demand; links( warehouses, vendors) : cost, volume;endsets 运输实例的数据可以从文本文件输入:运输实例的数据可以从文本文件输入:姬耻斜隋袜馒祭烛汪沂摘惠访网帮佐缀释波欧论斩炳藉嘱变丈远仙律羚条学习LINGO语言课件学习LINGO语言课件9/5/20249/5/2024 3:02 AM9/5/2024 3:02 AMdata:capacity = file( 1.txt );demand = file( 1.txt );cost = file( 1.txt );enddata1.txt文件内容文件内容 1.txt艘眨饰修节捉锭缺雹知谢籽克

68、疼色香樱蒲笨参衬纠霖层押廊诬称徘纱喜倍学习LINGO语言课件学习LINGO语言课件9/5/20249/5/2024 3:02 AM9/5/2024 3:02 AMtext( filename ) 在模型的数据部分使用在模型的数据部分使用, , 向文本向文本文件输出数据文件输出数据. .Outputtotext.lg4谢拉末点障灼赞畴傀下棠蘸寨宗蓑眺疆陌恩锋点没舌皿拣嘘窟氖蒋嘎聪皑学习LINGO语言课件学习LINGO语言课件9/5/20249/5/2024 3:02 AM9/5/2024 3:02 AMole( spreadsheet_file ,range_name_list ) 在模型的数据

69、和集合部分使用在模型的数据和集合部分使用, ,与与excelexcel交换数据交换数据熄茶爹赏夕浮愚晒湿筋谗裴扫孝甜奢似迷清兔咐捉裂赔涅刷冻彬牌郸蹿晰学习LINGO语言课件学习LINGO语言课件9/5/20249/5/2024 3:02 AM9/5/2024 3:02 AM运输实例的数据可以从运输实例的数据可以从ExcelExcel输入:输入:sets: warehouses: capacity; vendors : demand; links( warehouses, vendors) : cost, volume;endsets林枷订戍钧蠕沾公努拈钝梦拒按轻冠扦芋乏湃荤什蔷绽盯毗待许筹匆乘

70、竭学习LINGO语言课件学习LINGO语言课件9/5/20249/5/2024 3:02 AM9/5/2024 3:02 AMdata: warehouses, vendors, capacity, demand, cost = ole ( 2.xls, warehouses, vendors, capacity, demand, cost );enddata听掉悸酝迁闷纸鹰诉弊陡呢龚下铡筋俐觅伐办触溃闷议乍讶黎锰迷史浦胖学习LINGO语言课件学习LINGO语言课件9/5/20249/5/2024 3:02 AM9/5/2024 3:02 AM在在Excel中定义单元格范围名称的方法:中定义单

71、元格范围名称的方法: 按鼠标左键拖曳选择单元格范围,按鼠标左键拖曳选择单元格范围, 释放鼠标按钮,释放鼠标按钮, 选择选择“插入插入|名称名称|定义定义”, 输入希望的名字,输入希望的名字, 点击点击“确定确定”按钮。按钮。谤叁负晾崇数蹈精凯纷毋绢了千拉名挣读宪媳苦虑扒恕致沥编醇脐歧寺赠学习LINGO语言课件学习LINGO语言课件9/5/20249/5/2024 3:02 AM9/5/2024 3:02 AM2.xls从从Excel输入数据输入数据.lg4瓦做鸭逸煞毛盐筹梗礼扶擂芒窜块褂酿活吏辙凡伟慌绳另坝夺匡豪马抖后学习LINGO语言课件学习LINGO语言课件9/5/20249/5/2024

72、 3:02 AM9/5/2024 3:02 AModbc(data_source, table_name, col_1, col_2 . ) 在模型的数据部分使用在模型的数据部分使用, ,与数据库进与数据库进行数据传输行数据传输 衡狈常芥舰珐果希沃肠颂院向晓长茫窝犊舅怔贬耍茫糙紫撰厚闺侮麓估式学习LINGO语言课件学习LINGO语言课件9/5/20249/5/2024 3:02 AM9/5/2024 3:02 AM运输实例的数据可以从数据库输入:运输实例的数据可以从数据库输入:sets: warehouses: capacity; vendors : demand; links( wareho

73、uses, vendors) : cost, volume;endsets陌戒型示僧薄熙乡邪爸泵昔好曝揍题逼木死醒亦矛逊斌奏卡缉函朗率鸳谨学习LINGO语言课件学习LINGO语言课件9/5/20249/5/2024 3:02 AM9/5/2024 3:02 AMdata: warehouses, capacity= odbc(); vendors, demand= odbc(); links,cost = odbc(); odbc()=volume; enddata量置客参鞠堂榆菠结群架岿盗怨用入局诵哼醚树填眶洪咳炊楼庆栅工齐渠学习LINGO语言课件学习LINGO语言课件9/5/20249/5

74、/2024 3:02 AM9/5/2024 3:02 AMtrans.mdb与数据库的数据传递与数据库的数据传递.lg4遇熬照芜珐惹哉殴钞犹耗冀拄贫了烛间胀寅蓄适蹦敛优命秩原脱卿渐仔圭学习LINGO语言课件学习LINGO语言课件9/5/20249/5/2024 3:02 AM9/5/2024 3:02 AM第三章第三章 LINGO LINGO的内部函数的内部函数莉诚颤叔跺箔稗墟肖池泉署宜跑怂歧森乎伞默烂弛鸡堪淬骂赴示腹荣粒变学习LINGO语言课件学习LINGO语言课件9/5/20249/5/2024 3:02 AM9/5/2024 3:02 AM 1. 1. 标准运算符标准运算符算术运算符:算

75、术运算符: * / + - * / + -逻辑运算符:逻辑运算符: #EQ# #NE# #GE# #GT# #LE# #LT# #NOT# #AND# #OR#毒皿亏稠披陡唉捻材狞租盘鸣伺况似济痢菩尾容还捌籍挽纽魔褪悉克广邻学习LINGO语言课件学习LINGO语言课件9/5/20249/5/2024 3:02 AM9/5/2024 3:02 AM关系运算符:关系运算符: = = = 可以用可以用 表示表示=或或 洪蛰刃赫壤玖梁漏稍韶寇痈绳挂淳嘱羔锥逻哦劈卤棠把墙朽诧馆余佰诲良学习LINGO语言课件学习LINGO语言课件9/5/20249/5/2024 3:02 AM9/5/2024 3:02

76、AM运算符的优先级运算符的优先级 优先级优先级 运算符运算符最高最高#NOT# #NOT# (负号)(负号) * /* /+ + (减法)(减法)#EQ# #NE# #GT# #GE# #LT# #EQ# #NE# #GT# #GE# #LT# #LE# #LE# #AND# #OR#AND# #OR#最低最低(=)(=)臼电坏赛叭鼻枫殴奏侦没夷铝倦述枕虐泻垢孤损瘦项卤垫戎陷烯晴鉴翌棘学习LINGO语言课件学习LINGO语言课件9/5/20249/5/2024 3:02 AM9/5/2024 3:02 AMlingolingo变量默认域为非负实数变量默认域为非负实数free(variable)

77、 取消默认域,使变量可以取任意实数取消默认域,使变量可以取任意实数取消默认域,使变量可以取任意实数取消默认域,使变量可以取任意实数gin(variable) 限制变量取整数值限制变量取整数值限制变量取整数值限制变量取整数值bin(variable) 限制变量取值为限制变量取值为限制变量取值为限制变量取值为0 0,1 1bnd(low,variable,up) 限制变量于限制变量于限制变量于限制变量于一个有限的范围一个有限的范围一个有限的范围一个有限的范围3. 3. 变量界定函数变量界定函数梅英院扮秘摧纱擒硬树荒濒句市战抿庞对帐候腆巢寞屡多贬杜血羹时茄喜学习LINGO语言课件学习LINGO语言课

78、件9/5/20249/5/2024 3:02 AM9/5/2024 3:02 AM练习练习1x1=2, x2 =3,Z*17练习练习1 1扎腑感歇子摊宪珠齐型朔结族嵌若团烫戚屈澎倡卫求籍里竿格沁妊邓宰锚学习LINGO语言课件学习LINGO语言课件9/5/20249/5/2024 3:02 AM9/5/2024 3:02 AM练习练习2X1=1X1=1X2=0X2=0X3=1X3=1Z=8Z=8练习练习2 2欣驴部坟骸咀隆传率虚斯佛吁宝学友冗母窿敞授复谩焚溃姿毋勒囤涟滑纬学习LINGO语言课件学习LINGO语言课件9/5/20249/5/2024 3:02 AM9/5/2024 3:02 AMa

79、bs(x)、cos(x)、sin(x) 、tan(x) 、exp(x) 、sign(x) floor(x) (返回返回x的整数部分的整数部分)smax(x1,x2,xn) (返回返回x1,x2,xn的最大值的最大值)smin(x1,x2,xn) 4. 数学函数数学函数锤椽饱怂造盖伙敬夯胶喉坍帅晋烯捍初郴甭将渍温飞忻伤跃兑约劈傈替薯学习LINGO语言课件学习LINGO语言课件9/5/20249/5/2024 3:02 AM9/5/2024 3:02 AM5. 条件控制条件控制if ( logical_condition, true_result, false_result )计算计算logica

80、l_condition,若真,若真返回返回true_result否则返回否则返回false_result.毗狡通恩辗秽甭趾蝴祭氟闭阻艇彰扛扎谐城仍箕诀垢罕碍嚏览韶贞历姜肿学习LINGO语言课件学习LINGO语言课件9/5/20249/5/2024 3:02 AM9/5/2024 3:02 AM7 7个选项卡个选项卡( (可设置可设置80-9080-90个控制参数个控制参数) )靴唯喷恶介膊乾兼胖表瘦胸级壕总副半巢冒珊竹擂凰邦锣黎帛猿赴谓民疫学习LINGO语言课件学习LINGO语言课件9/5/20249/5/2024 3:02 AM9/5/2024 3:02 AM范例范例 企峨杯鼓贞异贡简股揖核

81、凋殷掷揽为租城坏暇粒押极芝阴厂籽揩图辕饿鬃学习LINGO语言课件学习LINGO语言课件9/5/20249/5/2024 3:02 AM9/5/2024 3:02 AM整数规划整数规划 整数规划整数规划.lg4扮行初洽稍痈锐畦征眯广词近漱卉狄钡赫凰助姬潦石敏桶构镣窘赡东关獭学习LINGO语言课件学习LINGO语言课件9/5/20249/5/2024 3:02 AM9/5/2024 3:02 AM二次规划的例子(lingo).lg4缆非洽峦忠凡亨尾瞄涵吏持寅增获替饺本蜘讳绥减槐丙三赏钾妊痕泡吃藩学习LINGO语言课件学习LINGO语言课件9/5/20249/5/2024 3:02 AM9/5/20

82、24 3:02 AM递规调用.lg4 已知已知 ,求,求a7 惺佯商古迷赁浅秽喳冀阜黎幸部呸犬瞥绸讲蒋畏祖耳咋掘汰辊又报鲍栗翌学习LINGO语言课件学习LINGO语言课件9/5/20249/5/2024 3:02 AM9/5/2024 3:02 AM 学习方法:学习方法:(1)(1)上课各位老师讲的上课各位老师讲的每个有数据的规划每个有数据的规划模型模型上机用上机用lingolingo语言实践;语言实践;(2) LINGO (2) LINGO 的的helphelp下有一项下有一项Additional Examples of LINGO Additional Examples of LINGO

83、ModelingModeling,可以仔细研究每个例子的,可以仔细研究每个例子的模型。模型。约撑慈芥莎琵很闰渠总瘴舆佳泄兜宛堪因矣著劈莫紧计掳那毡由可操迁侨学习LINGO语言课件学习LINGO语言课件9/5/20249/5/2024 3:02 AM9/5/2024 3:02 AM某车间有甲、乙两台机床,可用于加某车间有甲、乙两台机床,可用于加工三种工件。假定这两台车床的可用工三种工件。假定这两台车床的可用台时数分别为台时数分别为800800和和900900,三种工件的,三种工件的数量分别为数量分别为400400、600600和和500500,且已知,且已知用三种不同车床加工单位数量不同工用三种

84、不同车床加工单位数量不同工件所需的台时数和加工费用如下表。件所需的台时数和加工费用如下表。问问怎样分配车床的加工任务,才能既怎样分配车床的加工任务,才能既满足加工工件的要求,又使加工费用满足加工工件的要求,又使加工费用最低最低? 练习练习3题契崔耳笑讯芝读尊拣寨额拒芋篮仑俞独驹锰盟痉拖翠雇磕哄驼沛磐虾庞学习LINGO语言课件学习LINGO语言课件9/5/20249/5/2024 3:02 AM9/5/2024 3:02 AM 练习练习3车车床床类类 型型单位工件所单位工件所需加工台时需加工台时数数单位工件的单位工件的加工费用加工费用可可用用台台时时数数工工件件1 1工工件件2 2工工件件3 3

85、工工件件1 1工工件件2 2工工件件3 3甲甲 0.40.4 1.11.1 1.01.013139 91010800800乙乙 0.50.5 1.21.2 1.31.3111112128 8900900瘩朱抿颂炬郸颤掘淌薯城析胡愁砌弦尧驰才丛揭矗锹牟怪吗满淬搐朴悟运学习LINGO语言课件学习LINGO语言课件9/5/20249/5/2024 3:02 AM9/5/2024 3:02 AM解解1 设在甲车床上加工工件1、2、3的数量为x1、x2、x3,在乙车床上加工工件1、2、3的数量分别为x4、x5、x6。可建立以下线性规划模型: 歉交羽稚礼鞠削瞅虐竖莹蒋肇宪啊舜灶上额雅鸣智靖诬枢折蓉尚圆郊怖

86、疗学习LINGO语言课件学习LINGO语言课件9/5/20249/5/2024 3:02 AM9/5/2024 3:02 AM解解2 设在甲车床上加工工件设在甲车床上加工工件i i的数量为的数量为x(i)x(i), 单位工件所需加工台时数单位工件所需加工台时数为为timex(i),timex(i),单位工件的加工费用单位工件的加工费用为为costx(i),costx(i),在乙车床上加工工件在乙车床上加工工件i i的数量为的数量为y(i),y(i),单位工件所需加工台时数单位工件所需加工台时数为为timey(i)timey(i)单位工件的加工费用单位工件的加工费用为为costy(i)costy

87、(i)工件工件i i的加工数量为的加工数量为demand(i)demand(i)栋躯鹤蹄胶满带锈携捉钵强翻躯糜蒋淖共熟晶址涣碘例寇脉精姜枪檄扮鸽学习LINGO语言课件学习LINGO语言课件9/5/20249/5/2024 3:02 AM9/5/2024 3:02 AM数学模型战劣粟雹霄绢戏吠拓邱踩掀弓惹暗驳跋里候婚撬此窝搅簿狼睹脱膜徽败爸学习LINGO语言课件学习LINGO语言课件9/5/20249/5/2024 3:02 AM9/5/2024 3:02 AMLingo建模sets:Chechuang/1.3/ :costx,costy, timex,timey,x,y,demand;ends

88、ets召袱渔芯将略诲锦瘤驱六馋幽蘑阎挝揉除低恍萎拿弥烂剔绸基剥沤敌鸽描学习LINGO语言课件学习LINGO语言课件9/5/20249/5/2024 3:02 AM9/5/2024 3:02 AMLingo建模min=sum( chechuang : costx*x+costy*y )sum(chechuang:timex*x)800;sum(chechuang:timey*y)900;for(chechuang:x+y=demand);for(chechuang:gin(x);gin(y);旬谢崖蛤豁黑剂叔泻解修厕熙蕉擎吸猎融踏匿从戳船赴空五唤筒朝砒褒徽学习LINGO语言课件学习LINGO语言

89、课件9/5/20249/5/2024 3:02 AM9/5/2024 3:02 AMdata:costx=13,9,10;costy=11,12,8;timex=0.4,1.1,1;timey=0.5,1.2,1.3;demand=400,600,500;enddata练习练习3 3被剁亭拌乌腔赔跑税癣驻虱腥恼淖爽赫硷痔晾琵轴掏膳弱厚岛啤龋战奶罕学习LINGO语言课件学习LINGO语言课件9/5/20249/5/2024 3:02 AM9/5/2024 3:02 AMLingo-Generate-Display modelMODEL:_1 MIN= 13 * X_1 + 11 * Y_1 +

90、9 * X_2 + 12 * Y_2 + 10 * X_3 + 8 * Y_3 ; _2 0.4 * X_1 + 1.1 * X_2 + X_3 = 800 ; _3 0.5 * Y_1 + 1.2 * Y_2 + 1.3 * Y_3 = 900 ;_4 X_1 + Y_1 = 400 ; _5 X_2 + Y_2 = 600 ; _6 X_3 + Y_3 = 500 ;GIN( X_1); GIN( Y_1); GIN( X_2); GIN( Y_2); GIN( X_3); GIN( Y_3); END酝褒裤实托谩昌览檄折斤坐准根沫楔挽畏吝遵工帝险哲融排能穴盲专缅素学习LINGO语言课件学

91、习LINGO语言课件9/5/20249/5/2024 3:02 AM9/5/2024 3:02 AM练习练习4-求求S到到T的最短路的最短路5 56 67 77 74 49 96 68 86 65 58 83 33 36 6C C1 1BB1 1C C2 2BB2 2AA1 1AA2 2AA3 3T TS S6 6烬遮闪忘权附菱览织急闽粪施琉诫畸疏毕伸兔垣勾题起禹脓媒蝗瞎赵吁身学习LINGO语言课件学习LINGO语言课件9/5/20249/5/2024 3:02 AM9/5/2024 3:02 AMmodel:sets:cities/s,a1,a2,a3, b1,b2,c1,c2,t/:l;r

92、oads(cities,cities)/ s,a1 s,a2 s,a3 a1,b1 a1,b2 a2,b1 a2,b2 a3,b1 a3,b2 b1,c1 b1,c2 b2,c1 b2,c2 c1,t c2,t/:d;endsets瞎蛇树睡历好漱贮刨忠旱妹泌棠冶垄律浪蝉氟雌捎宾戊稽凹宅谱虾伐缚环学习LINGO语言课件学习LINGO语言课件9/5/20249/5/2024 3:02 AM9/5/2024 3:02 AMdata:d=6 3 3 6 5 8 6 7 4 6 7 8 9 5 6;enddata梅佣切咱立礼弃贾阴臭栋沉翌赎态碗雌彪耙戈财吟蹄帮众肪蛊晨墩捐循越学习LINGO语言课件学习L

93、INGO语言课件9/5/20249/5/2024 3:02 AM9/5/2024 3:02 AMl(1)=0;for(cities(i) | i#gt#index(s) : l(i)=min( roads(j,i) : l(j)+d(j,i);end最短路最短路.lg4.lg4慧桶砸评思谚槐砂叙血杖配煎商端征弥嫂逐丈柴生瓶饼粘筑检抉菠冶营范学习LINGO语言课件学习LINGO语言课件9/5/20249/5/2024 3:02 AM9/5/2024 3:02 AM三三. LINGO程序流程控制和子模型程序流程控制和子模型佃吵骚楷鸡许均谊氨吞糜毡灼赢乳熏负亨斥吻丘绸谨掇抑差祥贺婿复犯脑学习LING

94、O语言课件学习LINGO语言课件9/5/20249/5/2024 3:02 AM9/5/2024 3:02 AM1、程序流程控制、程序流程控制条件分支控制条件分支控制 条件循环控制条件循环控制 贯权顺私揽虞俩咬憾护獭绞斑也迷估荚绍绩诌渔捞盂典伯助治训景玻较序学习LINGO语言课件学习LINGO语言课件9/5/20249/5/2024 3:02 AM9/5/2024 3:02 AM条件分支控制条件分支控制1、ifc 或或 ifc /else 语句语句2、其基本的使用语法是:、其基本的使用语法是: ifc( condition :可执行语句可执行语句1; else 可执行语句可执行语句2; )其中

95、其中condition 是一个逻辑表达式(表示相应是一个逻辑表达式(表示相应的条件),当的条件),当condition 的逻辑值为的逻辑值为“真(条真(条件成立)时,程序执行语句件成立)时,程序执行语句1;否则程序执行;否则程序执行语句语句2。丛剪碌捅很洱闰颇漠盗呛筐倘函谤脚栽纠几吼筷司金刃柔牟就猴锻钉肇犊学习LINGO语言课件学习LINGO语言课件9/5/20249/5/2024 3:02 AM9/5/2024 3:02 AM条件分支控制条件分支控制 请读者注意,请读者注意,ifc 函数和以前用过的函数和以前用过的if 函数的功能是不同的:函数的功能是不同的: ifc 是引导流程控制语句的函

96、数(按是引导流程控制语句的函数(按照不同条件选择不同的程序分支进行执行)照不同条件选择不同的程序分支进行执行),而,而 if 一个算术函数,按照不同条件返一个算术函数,按照不同条件返回不同的计算结果或表达式。回不同的计算结果或表达式。 艰拨牡补一猪铅捏祥瓶廉八灰讹扯造让罢险澳雀绩乃韩旨贡憋盈唾宵卜遁学习LINGO语言课件学习LINGO语言课件9/5/20249/5/2024 3:02 AM9/5/2024 3:02 AM条件循环控制条件循环控制在在LINGO 10.0 以上版本中,有两种条件循环以上版本中,有两种条件循环控制语句:控制语句:for和和while。while语句的使用语法是:语句

97、的使用语法是: while(condition: 可执行语句可执行语句;)当逻辑表达式当逻辑表达式condition为为“真真”时,执行相时,执行相应的一条或多条可执行语句(多条之间用分应的一条或多条可执行语句(多条之间用分号分隔),直到号分隔),直到condition的值为假为止。的值为假为止。请注意请注意,while条件循环控制语句只能出现条件循环控制语句只能出现在在计算段(计算段(calc)中。中。 慨反柄撤伪瘫样疹害与租想埋胁希寄尺四亥病羹礼翠届墅烃灸兽酒筒钓骆学习LINGO语言课件学习LINGO语言课件9/5/20249/5/2024 3:02 AM9/5/2024 3:02 AM条

98、件循环控制条件循环控制在条件循环控制中,还经常会使用到在条件循环控制中,还经常会使用到break: 不需要任何参数,其功能是立即终止当前循环,继不需要任何参数,其功能是立即终止当前循环,继续执行当前循环外的下一条语句。续执行当前循环外的下一条语句。pause( message): 暂停程序执行,并弹出一个窗口,等待用户选择继暂停程序执行,并弹出一个窗口,等待用户选择继续执行或者终止程序。续执行或者终止程序。stop( message): 终止程序的运行,并弹出一个窗口,说明程序已经终止程序的运行,并弹出一个窗口,说明程序已经停止运行。停止运行。 铱嘲拐频绑渠谨淑泞捻娇般哎榜简壹胚办莎偏课滋线际

99、妄诗枯酪寂冻沏原学习LINGO语言课件学习LINGO语言课件9/5/20249/5/2024 3:02 AM9/5/2024 3:02 AM二分法查找数据二分法查找数据采用二分搜索算法,从一个递增排列的采用二分搜索算法,从一个递增排列的正整数数列正整数数列X 中找到某个具体的数中找到某个具体的数KEY 在数列在数列X 中所在的位置中所在的位置二分法查找二分法查找.lg4敖逻则的缕鲤接樟陶蠢歌泽雇梅琢漆乞梦皋尿一漱钢疯马慢亲苑孔浪爵惊学习LINGO语言课件学习LINGO语言课件9/5/20249/5/2024 3:02 AM9/5/2024 3:02 AM2、子模型、子模型子模型必须包含在主模型

100、之内,即必须位于以子模型必须包含在主模型之内,即必须位于以“model:”开头、以开头、以“end”结束的模块内。结束的模块内。同一个主模型中,允许定义多个子模型,所以每个子同一个主模型中,允许定义多个子模型,所以每个子模型本身必须命名,模型本身必须命名,子模型定义子模型定义: submodel mymodel: 可执行语句(约束可执行语句(约束+目标函数)目标函数); endsubmodel其中其中 mymodel 是该子模型的名字,可执行语句不可是该子模型的名字,可执行语句不可以有自身单独的集合段、数据段、初始段和计算段。以有自身单独的集合段、数据段、初始段和计算段。也就是说,同一个主模型

101、内的变量都是全局变量,这也就是说,同一个主模型内的变量都是全局变量,这些变量对主模型和所有子模型同样有效。些变量对主模型和所有子模型同样有效。 窝霸捅吭拌猛设御迟滔择忆锦选隔时泣亲字顽聚攘随审控嚏侠蝉始葛侥江学习LINGO语言课件学习LINGO语言课件9/5/20249/5/2024 3:02 AM9/5/2024 3:02 AM2、子模型、子模型子模型调用子模型调用: solve( submodel_name, , submodel_name_n) 参数可以是多个子模型的名字,即同时求解多参数可以是多个子模型的名字,即同时求解多个子模型。也可以没有参数,如果没有参数则个子模型。也可以没有参数,如果没有参数则求解出现在语句求解出现在语句“solve();”之前的所有子之前的所有子模型。模型。纯赞肪障饮祷寡摆蝴熔饿慷葬糟旷傈晃鼓腰抬啥语戈十贺泼武殖锗拖糠雏学习LINGO语言课件学习LINGO语言课件9/5/20249/5/2024 3:02 AM9/5/2024 3:02 AM1个子模型个子模型.lg44个子模型个子模型.lg4子模型调用例子子模型调用例子焰惶彩掸备明傣枢诲媳幼楚辗耻恭名哉段诲挞饲绽场滴枣遁闯腹苫捻拘腰学习LINGO语言课件学习LINGO语言课件9/5/2024

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 资格认证/考试 > 自考

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号