学习LINGO语言课件ppt课件.ppt
《学习LINGO语言课件ppt课件.ppt》由会员分享,可在线阅读,更多相关《学习LINGO语言课件ppt课件.ppt(151页珍藏版)》请在三一办公上搜索。
1、2023/3/19,LINGO,2023/3/19,一.优化模型与优化软件简介,二.LINGO软件的基本使用方法,Outline,三.LINGO程序流程控制和子模型,2023/3/19,一.优化模型与优化软件简介,2023/3/19,优化问题的一般形式,无约束优化:只有目标函数,没有约束条件有约束优化:目标函数和约束条件都有普通方程组:没有(1)(3),只有(2)不等式方程组:没有(1)(2),只有(3),2023/3/19,优化类型,连续优化:全部决策变量取值均 为连续数值(实数)离散优化:部分或全部决策变量 只取离散数值,2023/3/19,连续优化,线性规划(LP)目标和约束均为线性函数
2、 非线性规划(NLP)目标或约束中有非线性函数 二次规划(QP)目标为二次函数、约束为线性,2023/3/19,离散优化,整数规划(IP)决策变量(全部或部分)为整数,整数线性规划(ILP),整数非线性规划(INLP)纯整数规划(PIP),混合整数规划(MIP)一般整数规划,0-1(整数)规划,2023/3/19,常用优化软件,LINDO/LINGO软件MATLAB优化工具箱/mathematica优化程序包EXCEL软件的优化功能SAS(统计分析)软件的优化功能,2023/3/19,建模时需要注意的几个基本问题,1、尽量使用实数优化,减少整数约束和整数变量2、尽量使用光滑优化,减少非光滑约束
3、的个数 如:尽量少使用绝对值、符号函数、多个变量求最大/最小值、四舍五入、取整函数等,2023/3/19,建模时需要注意的几个基本问题,3、尽量使用线性模型,减少非线性约束和非线性变量的个数(如x/y 5 改为x5y)4、合理设定变量上下界,尽可能给出变量初始值 5、模型中使用的参数数量级要适当(如小于103),2023/3/19,二.LINGO软件的基本使用方法,2023/3/19,1 LINGO入门,2023/3/19,max 2x1+3x2 St.4x1+3x2=10 3x1+5x2=12 x10 x20,设有数学模型如下:,2023/3/19,第一步:启动Lingo,屏幕显示如下:标记
4、LINGO的外窗口是主框架窗口,主框架窗口的上面包含所有的命令菜单和命令工具栏;标记LINGO MODEL-LINGO1的子窗口是一个新的、空白的模型窗口。,2023/3/19,第二步:在模型窗口中输入模型,model:max=2*x1+3*x2;4*x1+3*x210;3*x1+5*x212;end,Max 2x1+3x2 St.4x1+3x2=10 3x1+5x2=12 x10 x20,2023/3/19,第三步:求解模型,1)选择菜单 LINGO|Solve 或者按工具栏的,2023/3/19,2)LINGO开始编译模型,如有语法错误将返回一个错误的消息并指明错误出现的位置;如果通过编译
5、,LINGO将激活 Solver运算器 寻求模型的最优解;,2023/3/19,3)首先出现solver status 窗口,其作用是监控solver的进展和显示模型的维数等信息;,2023/3/19,Solver Status 窗口,2023/3/19,4)计算完成后出现Solution Report窗口显示模型解的详细信息;,2023/3/19,Solution Report 窗口,Global optimal solution found at iteration:2Objective value:7.454545Variable Value Reduced Cost x1 1.2727
6、27 0.000000 x2 1.636364 0.000000Row Slack or Surplus Dual Price 1 7.454545 1.000000 2 0.000000 0.9090909E-01 3 0.000000 0.5454545,2023/3/19,Reduced Cost:,在max模型中:相应变量的 reduced cost值表示当该变量每增加一个单位时目标函数减少的量。本例中此值均为0,2023/3/19,Reduced Cost:,Reduced Cost 值列出最优单纯形表中判别数所在行的变量的系数,表示当变量有微小变动时,目标函数的变化率。其中基变量的
7、reduced cost值应为0,对于非基变量 Xj,相应的reduced cost值表示当某个变量Xj 增加一个单位时目标函数减少的量(max型问题)。本例中此值均为0。,2023/3/19,SLACK OR SURPLUS:,给出约束条件的松驰变量或剩余变量的值;小于等于约束为松驰变量(SLACK);+大于等于约束为剩余变量(SURPLUS);-,2023/3/19,DUAL PRICES:对偶价格或影子价格,DUAL PRICES表示当对应约束有微小变动时,目标函数的变化率,即约束条件右端的常数项每增加一个单位,目标函数相应获得的改变量。显然,如果在最优解处约束正好取等号(紧约束),该值
8、才可能不是0;对于非紧约束对该值必为0,表示对应约束中不等式右端项的微小扰动不影响目标函数。,2023/3/19,2 Lingo的基本用法注意事项,2023/3/19,1)每一个模型都以 model:开始,又以 end 结束,也可省略此结构;,2023/3/19,2)目标函数必须由 min=或 max=开头。,2023/3/19,3)可以用表示=;,Lingo无严格小于,欲使ab,可以适当选取小的正常数e 表示成a+eb,,2023/3/19,4)LINGO的每一语句以;结束;,5)注释 以!开始,以;结束;,2023/3/19,变量名:.不区分大小写.由字母数字下划线组成.第一个字符必须是字
9、母.变量名最长为32个字符,2023/3/19,LINGO编辑器用 蓝色显示LINGO关键字 绿色显示注释 其他文本用黑色 匹配的括号用红色高亮度显示,2023/3/19,8)变量和数字放在约束条件的左、右端均可;但最好变量在左,数字在右。,9)Lingo 变量默认域为非负实数,可以改变默认域.,2023/3/19,10)行名 name例:Objectivemax=2*x+3*y;Con1 4*x+3*y10;Con2 3*x+5*y12;线性规划(行名).lg4默认为1,2,3,2023/3/19,Global optimal solution found.Objective value:7
10、.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,2023/3/19,3 LINGO的建模语言,2023/3/19,以运输实例逐步分析,6个仓库向8个小贩供应同一种货物,如何运,总运输费用最小?,注:每个仓库可以向每个小贩
11、供货,一共48个可能运货路线。,仓库货存量、小贩需求量、每条路线的单位运输费用三个表如下:,2023/3/19,仓库货存量:capacity,2023/3/19,小贩需求量:demand,2023/3/19,每单位货物运输费用表:cost,2023/3/19,demand_j 表示第j个小贩的需求量capacity_i 表示第i个仓库的库存量cost_i_j 表示从第i个仓库到第j个小贩的单位运输费用,volume_i_j 表示从第i个仓库到第j个小贩的运输量,2023/3/19,数学模型可表示如下:,2023/3/19,当然目标函数可以如下输入:min=6*volume_1_1+2*volu
12、me_1_2+6*volume_1_3+.1*volume_6_6+4*volume_6_7+3*volume_6_8;,2023/3/19,但是较大模型如果像上面那样输入又费时,又容易出错!这就需要LINGO的建模语言,2023/3/19,LINGO的建模语言优点:,1)可以用类似于标准数学符号的方式表示你的模型;2)可以用一个紧凑的语句表示一系列约束。3)数据可独立于模型:LINGO可以从文本文件、电子数据表、数据库中读取数据。,2023/3/19,LINGO模型的构成:5个段,目标函数与约束条件段 集合段(sets:endsets)数据段(data:enddata)初始段(init:en
13、dinit)计算段(calc:endcalc),Lingo建模语言的重点和难点是:对集合概念的理解和正确使用,2023/3/19,为什么使用集合,集合是LINGO建模语言的基础,是LINGO程序设计最强有力的基本构件。借助于集合,能够用一个单一的、长的、简明的复合公式表示一系列相似的约束,从而可以快速方便地表达规模较大的模型。,2023/3/19,什么是集合,集合是一群相联系的对象,比如仓库、小贩、运输路线,这些对象也称为集合的成员。每个集合成员可能有一个或多个与之有关联的特征,我们把这些特征称为属性。属性值可以预先给定,也可以是未知的,有待于LINGO求解。,2023/3/19,从我们的数学
14、模型看需要三个集合:,(1)仓库-6个成员-货存量(2)小贩-8个成员-需求量(3)运输路线-48个成员-单位运费和运货量,2023/3/19,LINGO有两种类型的集合,原始集合(primitive set):由一些最基本的对象组成的。派生集(derived set):用一个或多个其它集来定义的,也就是说,它的成员来自于其它已存在的集。,2023/3/19,*下面我们学习集合定义部分*,1.以sets:开始,以endsets结束;sets:endsets,2023/3/19,2.原始集合定义法:,setname/member_list/:attribute_list;。setname是集合的
15、名字;。member_list是成员列表,各成员之间可用空格或逗号分隔;。attribute_list是集合成员所具有的属性列表,多个属性之间用逗号分隔;。原始集合的member_list,attribute_list是可选项;,2023/3/19,*仓库和小贩的集合可如下定义*,sets:warehouses/w1 w2 w3 w4 w5 w6/:capacity;vendors/v1,v2,v3,v4,v5,v6,v7,v8/:demand;endsets,2023/3/19,*成员较多时,可使用隐式成员列表,setname/member1.memberN/:attribute_list;
16、,2023/3/19,数字型字符数字型星期型月份型年份-月份型,*隐式成员列表类别*,2023/3/19,(1)数字型,1.n 例:1.5(1,2,3,4,5),(2)字符数字型,stringM.stringN例:truck3.truck34,2023/3/19,(3)星期型,dayM.dayN例:mon.fri(Mon,Tue,Wed,Thu,Fri),(4)月份型,MonthM.MonthN例:OCT.JAN(Oct,Nov,Dec,Jan),2023/3/19,(5)年份-月份型,monthYearM.monthYearN例:OCT2019.JAN2019(2019.10 2019.11
17、 2019.12 2019.1),2023/3/19,*仓库和小贩的集合也可如下定义*,sets:warehouses/w1.w6/:capacity;vendors/v1.v8/:demand;endsets,2023/3/19,3.派生集合定义法:,setname(parent_set_list)/member_list/:attribute_list;parent_set_list是父集合名列表,2023/3/19,*48条运输路线集合定义*,links(warehouses,vendors):cost,volume;,2023/3/19,*三个集合定义如下*,sets:warehous
18、es/wh1.wh6/:capacity;vendors/v1.v8/:demand;links(warehouses,vendors):cost,volume;endsets,2023/3/19,运输问题的三个集合说明:,这段代码定义了4个属性值,在接下来的模型中就可以使用属性值capacity(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);vol
19、ume的引用同cost。,2023/3/19,4.集合成员过滤:,trucks/1.100/:capacity;heavy_duty(trucks)|capacity(&1是集合索引号放置器,如果有两个父集合,就是&1,&2,2023/3/19,*下面我们学习数据定义*,以data:开始,以enddata结束;data:.enddata,2023/3/19,例如:设有如下集合,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,则数据段可以为,2023/3/19,data:x=1,2,3;y=
20、4 5 6;enddata,data:x,y=1 4 2 5 3 6;enddata,多个数据之间可用逗号或空格分隔,2023/3/19,若成员属性值相同,数据段定义如下:,data:x=3;!(所有成员的x=3);y=6;!(所有成员的y=6);enddata,2023/3/19,也可以在运行时输入属性值:,data:x=?;!(运行时输入所有成员的x值);y=6;enddata,2023/3/19,*运输问题的数据部分*,data:capacity=60,55,51,43,41,52;demand=35 37 22 32 41 32 43 38;,2023/3/19,cost=6 2 6
21、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,2023/3/19,sets: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,集合成员可以在数据段定义:,2023/3/19,运输实例:,sets:warehouses:capacity;endsetsdata:!可以写成wa
22、rehouses=w1.w6;!也可以同时定义集合成员列表和属性值;warehouses,capacity=w1 60,w2 55,w3 51,w4 43,w5 41,w6 52;enddata,2023/3/19,*初始化定义*,只在非线性规划中使用,指定初始值。init:.endinit,2023/3/19,例:init:x=0.999;y=0.002;endinit y=log(x);x2+y2=1;给了恰当的初始值,会减少运算时间。,2023/3/19,*计算段定义*,calc:.endcalc,计算段的作用:在模型输入后,LINGO开始正式求解模型之前对原始数据进行一定的计算,得到我
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 学习 LINGO 语言 课件 ppt
链接地址:https://www.31ppt.com/p-3753977.html