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