首页 第7讲 优化软件LinGo的使用

第7讲 优化软件LinGo的使用

举报
开通vip

第7讲 优化软件LinGo的使用null优化软件LinGo的使用优化软件LinGo的使用null1. 优化模型与优化软件简介null 最优化是工程技术、经济管理、科学研究、社会生活中经常遇到的问题, 如:优化模型和优化软件的重要意义结构设计资源分配生产计划运输方案解决优化问题的手段 经验积累,主观判断 作试验,比优劣 建立数学模型(优化模型),求最优策略(决策)(最)优化:在一定条件下,寻求使目标最大(小)的决策 CUMCM赛题:约一半以上与优化有关,需用软件求解null运筹学(OR: Operations/Operational Researc...

第7讲 优化软件LinGo的使用
null优化软件LinGo的使用优化软件LinGo的使用null1. 优化模型与优化软件简介null 最优化是工程技术、经济管理、科学研究、社会生活中经常遇到的问题, 如:优化模型和优化软件的重要意义结构 设计 领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计 资源分配生产 计划 项目进度计划表范例计划下载计划下载计划下载课程教学计划下载 运输 方案 气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载 解决优化问题的手段 经验 班主任工作经验交流宣传工作经验交流材料优秀班主任经验交流小学课改经验典型材料房地产总经理管理经验 积累,主观判断 作试验,比优劣 建立数学模型(优化模型),求最优策略(决策)(最)优化:在一定条件下,寻求使目标最大(小)的决策 CUMCM赛题:约一半以上与优化有关,需用软件求解null运筹学(OR: Operations/Operational Research) 管理科学(MS: Management Science) 决策科学 (DS: Decision Science)(最)优化理论是运筹学的基本内容无约束优化OR/MS/DS优化(Optimization), 规划(Programming)线性规划非线性规划网络优化组合优化整数规划不确定规划多目标规划目标规划动态规划null优化问题三要素:决策变量;目标函数;约束条件优化问题的一般形式 可行解(满足约束)与可行域(可行解的集合)  最优解(取到最小/大值的可行解)null无约束优化:最优解的分类和条件给定一个函数 f(x),寻找 x* 使得 f(x*)最小,即局部最优解全局最优解最优解在可行域边界上取得时不能用无约束优化方法求解null约束优化的 简单分类 线性规划(LP) 目标和约束均为线性函数 非线性规划(NLP) 目标或约束中存在非线性函数 二次规划(QP) 目标为二次函数、约束为线性 整数规划(IP) 决策变量(全部或部分)为整数 整数线性规划(ILP),整数非线性规划(INLP) 纯整数规划(PIP), 混合整数规划(MIP) 一般整数规划,0-1(整数)规划连续优化离散优化数学规划null常用优化软件 1. LINDO/LINGO软件 2. MATLAB优化工具箱 3. EXCEL软件的优化功能 4. SAS(统计分析)软件的优化功能 5. 其它MATLAB优化工具箱能求解的优化模型MATLAB优化工具箱能求解的优化模型优化工具箱3.0 (MATLAB 7.0 R14)连续优化离散优化无约束优化非线性 极小 fminunc非光滑(不可 微)优化 fminsearch非线性 方程(组) fzero fsolve全局 优化 暂缺非线性 最小二乘 lsqnonlin lsqcurvefit线性规划 linprog 纯0-1规划 bintprog 一般IP(暂缺) 非线性规划 fmincon fminimax fgoalattain fseminf 上下界约束 fminbnd fmincon lsqnonlin lsqcurvefit 约束线性 最小二乘 lsqnonneg lsqlin约束优化二次规划 quadprog null 2. LINDO公司的主要软件产品及功能简介 LINDO 公司软件产品简要介绍 LINDO 公司软件产品简要介绍 美国芝加哥(Chicago)大学的Linus Schrage教授于1980年前后开发, 后来成立 LINDO系统公司(LINDO Systems Inc.), 网址:http://www.lindo.com LINDO: Linear INteractive and Discrete Optimizer (V6.1) LINGO: Linear INteractive General Optimizer (V9.0) LINDO API: LINDO Application Programming Interface (V3.0) What’s Best!: (SpreadSheet e.g. EXCEL) (V8.0)演示(试用)版、学生版、高级版、超级版、工业版、扩展版… (求解问题规模和选件不同)LINDO和LINGO软件能求解的优化模型LINDO和LINGO软件能求解的优化模型 LINGO LINDO优化模型线性规划 (LP) 非线性规划 (NLP) 二次规划 (QP) 连续优化整数规划(IP) LINDO/LINGO软件的求解过程 LP QP NLP IP 全局优化(选) ILP IQP INLP LINDO/LINGO软件的求解过程 LINDO/LINGO预处理程序线性优化求解程序 非线性优化求解程序 分枝定界管理程序 1. 确定常数 2. 识别类型1. 单纯形算法 2. 内点算法(选)1、顺序线性规划法(SLP) 2、广义既约梯度法(GRG) (选) 3、多点搜索(Multistart) (选) 建模时需要注意的几个基本问题 建模时需要注意的几个基本问题 1、尽量使用实数优化,减少整数约束和整数变量 2、尽量使用光滑优化,减少非光滑约束的个数 如:尽量少使用绝对值、符号函数、多个变量求最大/最小值、四舍五入、取整函数等 3、尽量使用线性模型,减少非线性约束和非线性变量的个数 (如x/y <5 改为x<5y) 4、合理设定变量上下界,尽可能给出变量初始值 5、模型中使用的参数数量级要适当 (如小于103)null 3. LINGO软件的使用简介 界面界面帮助帮助界面界面模型模型min或max f(x) S.T. G(x)≤或≥或=0 L ≤x≤U要素: 1.变量 (符号) 2.常量(数据) 3.关系(函数、方程)需要掌握的几个重要方面需要掌握的几个重要方面LINGO: 掌握集合(SETS)的应用; 正确阅读求解 报告 软件系统测试报告下载sgs报告如何下载关于路面塌陷情况报告535n,sgs报告怎么下载竣工报告下载 ; 正确理解求解状态窗口; 学会设置基本的求解选项(OPTIONS) ; 掌握与外部文件的基本接口方法nullLINGO软件简介 目标与约束段 集合段(SETS ENDSETS) 数据段(DATA ENDDATA) 初始段(INIT ENDINIT) 计算段 (CALC ENDCALC) - LINGO9.0LINGO模型的构成:5个段LINGO模型的优点 包含了LINDO的全部功能 提供了灵活的编程语言(矩阵生成器)实例实例变量声明区 数据赋值区 关系表示区 模型变量变量数学表示: LinGo表示:1.单下标变量SI/1..n/:x;变量变量数学表示: LinGo表示:2.多下标变量I/1..n/;J/1..m/;IJ(I,J):x;变量取值限制变量取值限制 @BND(下限, 变量或分量, 上限);默认下限为0 @FREE(变量或分量) ; @GIN(变量或分量); 限制变量或分量为整数 @BIN( 变量或分量) ; 限制变量或分量为0,1通常与@for联用@for(I:@bin(x));数学函数数学函数@ABS(X) @COS(X) @EXP(X) @LOG(X) @SIN(X) @TAN(X) @SMAX(X1, X2,..., XN) @SMIN(X1, X2,..., XN) @FLOOR(X) integer function @LGM(X) gamma function @SIGN(X) sign function条件和逻辑运算符条件和逻辑运算符#EQ# = #NE# ≠ #GT# > #GE# ≥ #LT# < #LE# ≤ #AND# 与 #OR# 或 #NOT# 非@IF(条件表达式, 真值, 否值)条件函数nullXCOST = @IF( x #GT# 0, 100, 0) + 2 * x;@IF(条件表达式, 真值, 否值)特殊符号集合函数集合函数数学表示: LinGo表示:2.@SUM( SI( i) | i #LE# k: a( i));1.@SUM( SI: a);集合函数特征集合函数特征@函数( 下标集 [ (下标变量) [ |条件表达式]] : 变量表达式);@SUM( SI( i) | i #LE# k: a( i));重要的集合函数重要的集合函数@FOR @SUM @MIN @MAX@FOR(SI(i)|i#NE#3:x(i)<=100); 例题1例题1数学模型: min s.t.其中: xl=5 2 4 6 cl= 4 9 4 c = 10 6 7 12 16 10 5 9 5 4 10 10 分析:分析:下标变量有: 1. xl 4个分量 2. cl 3个分量 3. x ,c 3×4个分量 下标集: si 1,…,3 sj 1,…,4 sij =(si,sj) 1.下标变量 si/1..3/:cl; sj/1..4/:xl; sij(si,sj):c,x; lingo建模:lingo建模min @sum(si(i): @sum(sj(j): c(i,j)*x(i,j)) ); lingo建模2.目标函数min @sum(sij:c*x);min简写 @sum(sij(i,j):c(i,j)*x(i,j));null2.约束条件: @for(sj(j):等式);@for(si(i):@sum(sj(j)):x(i,j))=cl(i));@sum(si(i):x(i))=xl(j)null完整模型: model: sets: si/1..3/:cl; sj/1..4/:xl; sij(si,sj):c,x; endsets !数据设置; data: xl= 5 2 4 6; cl= 4 9 4; c = 10 6 7 12 16 10 5 9 5 4 10 10; enddata [obj] min = @sum( sij: c*x); @for( sj(j): [eq1] @sum( si(i): x(i,j)) = xl(j)); @for( si(i): [eq2] @sum( sj(j): x(i,j)) = cl(i)); end模型求解模型求解最优非零解最优非零解灵敏度分析灵敏度分析例题2例题2数学模型:2000,B min s.t.其中: b,c,s为常量 null完整模型: model: sets: GC/1..7/:s,t; A/1..15/:y,z,b; link(GC,A):c,x; endsets min=@sum(link(i,j):c(i,j)*x(i,j))+0.1*@sum(A(j): 0.5*((1+y(j))*y(j)+(1+z(j))*z(j))); @for(GC(i):@sum(A(j):x(i,j))>=500*t(i); @sum(A(j):x(i,j))<=s(i)*t(i)); @for(A(j):@sum(GC(i):x(i,j))=y(j)+z(j)); @for(A(j)|j#LE#14:z(j)+y(j+1)=b(j)); y(1)=0.0;z(15)=0.0; @for(GC:@BIN(t)); data: s= ; b= ; c= ; enddata end求解情况求解情况求解情况求解情况例题3例题3SETS: CITIES/1..5/:F; ROADS(CITIES, CITIES)/ 1,2 1,3 1,4 2,5 3,5 4,5/:D; ENDSETS DATA: D=13 12 11 12 3 6; ENDDATA F(5) = 0; @FOR(CITIES(i)|i #LT# 5: F(i) = @MIN(ROADS(i,j):D(i,j)+F(j)) );求解情况求解情况数据文件数据文件数据文件的格式: 数据向量或数据矩阵~ 数据文件读入: 常量=@FILE(数据文件文件名); 文件名:nlp_em.txt选址问题:NLP选址问题:NLP改建两个新料场,需要确定新料场位置(xj,yj)和运量cij ,在其它条件不变下使总吨公里数最小。决策变量: ci j,(xj,yj)~16维非线性规划模型nullLINGO模型的构成:4个段集合段(SETS ENDSETS) 数据段(DATA ENDDATA) 初始段(INIT ENDINIT) 目标与 约束段 局部最优:89.8835(吨公里 ) LP:移到数据段边界边界集合的类型集合的类型 集合 派生集合 基本集合 稀疏集合 稠密集合 元素列表法 元素过滤法 直接列举法 隐式列举法setname [/member_list/] [: attribute_list];setname(parent_set_list) [/member_list/] [: attribute_list];SETS: CITIES /A1,A2,A3,B1,B2/; ROADS(CITIES, CITIES)/ A1,B1 A1,B2 A2,B1 A3,B2/:D; ENDSETSSETS: STUDENTS /S1..S8/; PAIRS( STUDENTS, STUDENTS) | &2 #GT# &1: BENEFIT, MATCH; ENDSETS集合元素的隐式列举集合元素的隐式列举运算符的优先级 运算符的优先级 三类运算符: 算术运算符 逻辑运算符 关系运算符集合循环函数集合循环函数四个集合循环函数:FOR、SUM 、 MAX、MIN @function( setname [ ( set_index_list)[ | condition]] : expression_list);[objective] MAX = @SUM( PAIRS( I, J): BENEFIT( I, J) * MATCH( I, J)); @FOR(STUDENTS( I): [constraints] @SUM( PAIRS( J, K) | J #EQ# I #OR# K #EQ# I: MATCH( J, K)) =1); @FOR(PAIRS( I, J): @BIN( MATCH( I, J))); MAXB=@MAX(PAIRS( I, J): BENEFIT( I, J)); MINB=@MIN(PAIRS( I, J): BENEFIT( I, J));Example:nullSolver Type: B-and-B Global MultistartModel Class: LP, QP,ILP, IQP,PILP, PIQP,NLP,INLP,PINLP State: Global Optimum Local Optimum Feasible Infeasible Unbounded Interrupted Undeterminednull7个选项卡(可设置80-90个控制参数)null LINGO系统(LINGO)主菜单LINGO|Options命令打开一个含有7个选项卡的窗口,通过它修改LINGO系统的各种控制参数和选项。新的设置生效新的设置生效,并关闭窗口当前设置变为默认设置,下次启动LINGO时这些设置仍然有效恢复LINGO系统定义的原始默认设置(缺省设置)废弃本次操作,退出对话框显示本对话框的帮助信息 nullLINGO|Options|Interface(界面)选项卡错误信息对话框:如果选择该选项,求解程序遇到错误时将打开一个对话框显示错误,关闭该对话框后程序才会继续执行;否则,错误信息将在报告窗口显示,程序仍会继续执行 弹出屏幕:如果选择该选项,则LINGO每次启动时会在屏幕上弹出一个对话框,显示LINGO的版本和版权信息;否则不弹出 解的截断:小于等于这个值的解将报告为“0” (缺省是10-9) 填充数据库表:当LINGO向电子表(如EXCEL文件)或数据库中输出数据时,如果电子表或数据库中用来接收收据的空间大于实际输出的数据占用的空间,是否对多余的表空间进行数据填充?(缺省值为不进行填充) nullLINGO|Options|Interface(界面)选项卡状态栏:如果选择该选项,则LINGO系统在主窗口最下面一行显示状态栏;否则不显示状态窗口:如果选择该选项,则LINGO系统每次运行LINGO| Solve命令时会在屏幕上弹出状态窗口;否则不弹出工具栏:如果选择该选项,则显示工具栏;否则不显示简洁输出:如果选择该选项,则LINGO系统对求解结果报告等将以简洁形式输出;否则以详细形式输出nullLINGO|Options|Interface(界面)选项卡LINGO扩展格式:模型文件的缺省保存格式是lg4格式(这是一种二进制文件,只有LINGO能读出)LINDO纯文本格式:模型文件的缺省保存格式变为LINDO格式(纯文本)LINGO纯文本格式:模型文件的缺省保存格式变为lng格式(纯文本)nullLINGO|Options|Interface(界面)选项卡行数限制:语法配色的行数限制(缺省为1000)。LINGO模型窗口中将LINGO关键此显示为兰色,注释为绿色,其他为黑色,超过该行数限制后则不再区分颜色。特别地,设置行数限制为0时,整个文件不再区分颜色。括号匹配:如果选择该选项,则模型中当前光标所在处的括号及其相匹配的括号将以红色显示;否则不使用该功能延迟:设置语法配色的延迟时间(秒,缺省为0,从最后一次击键算起)。nullLINGO|Options|Interface(界面)选项卡报告发送到命令窗口:如果选择该选项,则输出信息会发送到命令窗口;否则不使用该功能输入信息反馈:如果选择该选项,则用File|Take Command命令执行命令脚本文件时,处理信息会发送到命令窗口;否则不使用该功能页面大小限制:命令窗口每次显示的行数的最大值为Length(缺省为没有限制),显示这么多行后会暂停,等待用户响应;每行最大字符数为Width(缺省为74,可以设定为64-200之间),多余的字符将被截断行数限制:命令窗口能显示的行数的最大值为Maximum(缺省为800);如果要显示的内容超过这个值,每次从命令窗口滚动删除的最小行数为Minimum(缺省为400)nullLINGO|Options|General Solver(通用求解程序)选项卡矩阵生成器的内存限制:缺省值为32M,矩阵生成器使用的内存超过该限制,LINGO将报告"The model generator ran out of memory" 运行限制: 迭代次数:求解一个模型时,允许的最大迭代次数(缺省值为无限)运行限制: 运行时间:求解一个模型时,允许的最大运行时间(秒)(缺省值为无限)对偶计算:求解时控制对偶计算的级别,有三种可能的设置: None: 不计算任何对偶信息; Prices:计算对偶价格(缺省设置); Prices and Ranges:计算对偶价格并分析敏感性; Prices, Opt Only: 只计算最优行的对偶价格 。nullLINGO|Options|General Solver(通用求解程序)选项卡固定变量的归结、简化:求解前对固定变量的归结程度(相当于预处理程度): None:不归结; Always:总是归结; Not with global and multistart:在全局优化和多初值优化程序中不归结。 模型的重新生成:控制重新生成模型的频率,有三种可能的设置: Only when text changes:只有当模型的文本修改后才再生成模型; When text changes or with external references:当模型的文本修改或模型含有外部引用时(缺省设置); Always:每当有需要时。nullLINGO|Options|General Solver(通用求解程序)选项卡线性化程度:决定求解模型时线性化的程度,有四种可能的设置: Solver Decides:若变量数小于等于12个,则尽可能全部线性化;否则不做任何线性化(缺省设置) None:不做任何线性化 Low:对函数@ABS(), @MAX(), @MIN(), @SMAX(), @SMIN(),以及二进制变量与连续变量的乘积项做线性化 High:同上,此外对逻辑运算符#LE#, #EQ#, #GE#, #NE#做线性化线性化的误差限:设置线性化的误差限(缺省值为10-6)线性化的大M系数:设置线性化的大M系数(缺省值为106)nullLINGO|Options|General Solver(通用求解程序)选项卡允许无限制地使用基本集合的成员名:选择该选项可以保持与LINGO4.0以前的版本兼容:即允许使用基本集合的成员名称直接作为该成员在该集合的索引值(LINGO4.0以后的版本要求使用@INDEX函数)检查数据和模型中的名称是否重复使用:选择该选项,LINGO将检查数据和模型中的名称是否重复使用,如基本集合的成员名是否与决策变量名重复检查数据和模型中的名称是否重复使用:选择该选项,LINGO将检查数据和模型中的名称是否重复使用,如基本集合的成员名是否与决策变量名重复最小化内存使用量:是否最小化内存使用量。缺省设置为“是”。使用这个功能的一个缺点是可能引起计算速度下降nullLINGO|OPTIONS|Linear Solver(线性求解程序)选项卡求解时的算法,有四种可能的设置: Solver Decides:LINGO自动选择算法(缺省设置) Primal Simplex:原始单纯形法 Dual Simplex:对偶单纯形法 Barrier: 障碍法 (即内点法)模型降维:控制是否检查模型中的无关变量,从而降低模型的规模: Off:不检查 On:检查 Solver Decides:LINGO自动决定(缺省设置)初始线性可行性误差限:控制线性模型中约束满足的初始误差限(缺省值为3*10-6).最后线性可行性误差限:控制线性模型中约束满足的最后误差限(缺省值为10-7).nullLINGO|OPTIONS|Linear Solver(线性求解程序)选项卡原始单纯形法:有三种可能的设置: Solver Decides:LINGO自动决定(缺省设置) Partial:LINGO 对一部分可能的出基变量进行尝试 Devex:用Steepest-Edge(最陡边)近似算法对所有可能的变量进行尝试,找到使目标值下降最多的出基变量对偶单纯形法:有三种可能的设置: Solver Decides:LINGO自动决定(缺省设置) Dantzig:按最大下降比例法确定出基变量 Steepest-Edge:最陡边策略,对所有可能的变量进行尝试,找到使目标值下降最多的出基变量价格策略(决定出基变量的策略) nullLINGO|OPTIONS|Linear Solver(线性求解程序)选项卡冷启动时:设置LINGO|Debug命令调试所使用的程序(冷启动的含义是不从当前基开始,而是从头开始运行)。有四种可能的设置: Solver Decides:LINGO自动选择算法(缺省设置) Primal Simplex:原始单纯形法 Dual Simplex:对偶单纯形法 Barrier: 障碍法 (即内点法) 热启动时同冷启动(热启动的含义是从当前基开始运行) 调试时采用的求解程序矩阵分解:选择该选项,LINGO将尝试将一个大模型分解为几个小模型求解;否则不尝试检查模型的数据平衡性:选择该选项,LINGO检查模型中的数据是否平衡(数量级是否相差太大)并尝试改变尺度使模型平衡;否则不尝试nullLINGO|OPTIONS|Nonlinear Solver(非线性求解程序)选项卡初始非线性可行性误差限:控制模型中约束满足的初始误差限(缺省值为10-3)最后非线性可行性误差限:控制模型中约束满足的最后误差限(缺省值为10-6)非线性规划的最优性误差限:当目标函数在当前解的梯度小于等于这个值以后,停止迭代(缺省值为2*10-7)缓慢改进的迭代次数的上限:当目标函数在连续这么多次迭代没有显著改进以后,停止迭代(缺省值为5)非线性求解程序的版本:在个别情况下,可能老版本会更有效些,可能的选择有: Solver Decides:LINGO自动选择 (缺省设置,目前就是2.0版); Ver 1.0:选择1.0 版本; Ver 2.0:选择2.0 版本。nullLINGO|OPTIONS|Nonlinear Solver(非线性求解程序)选项卡导数计算方式:设置导数计算方式,有5种选择: Solver Decides:LINGO自动选择 (缺省设置) Backward analytical:前向解析法计算导数; Forward analytical:前向解析法计算导数 Central differences:中心差分法计算数值导数 Forward differences:前向差分法计算数值导数。生成初始解:选择该选项, LINGO将用启发式方法生成初始解;否则不生成(缺省值)识别二次规划:选择该选项, LINGO将判别模型是否为二次规划,若是则采用二次规划算法(包含在线性规划的内点法中);否则不判别(缺省值)策略nullLINGO|OPTIONS|Nonlinear Solver(非线性求解程序)选项卡SLP方向:选择该选项, LINGO在每次迭代时用SLP (Successive LP,逐次线性规划)方法寻找搜索方向(缺省值)有选择地检查约束:选择该选项, LINGO在每次迭代时只检查必须检查的约束(如果有些约束函数在某些区域没有定义,这样做会出现错误);否则,检查所有约束(缺省值)策略最陡边策略:选择该选项, LINGO在每次迭代时将对所有可能的变量进行尝试,找到使目标值下降最多的变量进行迭代;缺省值为不使用最陡边策略nullLINGO|OPTIONS|Integer Pre-Solver(整数预处理程序)选项卡最小时间:每个分枝节点使用启发式搜索的最小时间(秒)水平:控制采用启发式搜索的次数(缺省值为3,可能的值为0-100). 启发式方法的目的是从分枝节点的连续解出发,搜索一个好的整数解。探测水平(级别):控制采用探测(Probing)技术的级别(探测能够用于混合整数线性规划模型,收紧变量的上下界和约束的右端项的值)。可能的取值为: Solver Decides:LINGO自动决定(缺省设置) 1-7:探测级别逐步升高。启发式方法约束的割(平面)nullLINGO|OPTIONS|Integer Pre-Solver(整数预处理程序)选项卡最大迭代检查的次数:为了寻找合适的割,最大迭代检查的次数。应用节点:控制在分枝定界树中,哪些节点需要增加割(平面),可能的取值为: Root Only:仅根节点增加割(平面) All Nodes:所有节点均增加割(平面) Solver Decides:LINGO自动决定(缺省设置)相对上限:控制生成的割(平面)的个数相对于原问题的约束个数的上限(比值),缺省值为0.75约束的割(平面)对根节点的次数(缺省值为200)对其他节点的次数(缺省值为2)类型:控制生成的割(平面)的策略nullLINGO|OPTIONS|Integer Solver(整数求解程序)选项卡控制分枝策略中优先对变量取整的方向,有三种选择: Both:LINGO自动决定(缺省) Up:向上取整优先 Down:向下取整优先绝对误差限:当变量与整数的绝对误差小于这个值时,该变量被认为是整数。缺省值为10-6分枝控制分枝策略中优先对哪些变量进行分枝,有两种选择: LINGO Decides:LINGO自动决定(缺省设置) Binary:二进制(0-1)变量优先整性相对误差限:当变量与整数的相对误差小于这个值时,该变量被认为是整数。缺省值为8*10-6nullLINGO|OPTIONS|Integer Solver(整数求解程序)选项卡热启动:当以前面的求解结果为基础,热启动求解程序时采用的算法,有四种可能的设置: LINGO Decides:LINGO自动选择算法(缺省) Primal Simplex:原始单纯形法 Dual Simplex:对偶单纯形法 Barrier: 障碍法 (即内点法)目标函数的绝对误差限:当当前目标函数值与最优值的绝对误差小于这个值时,当前解被认为是最优解(也就是说:只需要搜索比当前解至少改进这么多个单位的解)。缺省值为8*10-8LP求解程序冷启动:当不以前面的求解结果为基础,冷启动求解程序时采用的算法,有四种可能的设置( 同热启动)最优性目标函数的相对误差限:当当前目标函数值与最优值的相对误差小于这个值时,当前解被认为是最优解(也就是说:只需要搜索比当前解至少改进这么多百分比的解)。缺省值为5*10-8nullLINGO|OPTIONS|Integer Solver(整数求解程序)选项卡最优性开始采用相对误差限的时间(秒):在程序开始运行后这么多秒内,不采用相对误差限策略;此后才使用相对误差限策略。缺省值为100秒 误差限篱笆值(同LINDO)节点选择:控制如何选择节点的分枝求解,有以下选项: LINGO Decides: LINGO自动选择(缺省设置) Depth First:按深度优先 Worst Bound:选择具有最坏界的节点 Best Bound:选择具有最好的界的节点强分枝的层数:控制采用强分枝的层数。也就是说,对前这么多层的分枝,采用强分枝策略。所谓强分枝,就是在一个节点对多个变量分别尝试进行预分枝,找出其中最好的解(变量)进行实际分枝nullLINGO|OPTIONS|Global Solver(全局最优求解程序)选项卡 全局最优求解程序使用全局最优求解程序:选择该选项,LINGO将用全局最优求解程序求解模型,尽可能得到全局最优解(求解花费的时间可能很长);否则不使用全局最优求解程序,通常只得到局部最优解变量上界设定变量的上界,缺省值为1010设置这个界的三种应用范围: None: 所有变量都不使用这个上界; All: 所有变量都使用这个上界; Selected:先找到第1个局部最优解,然后对满足这个上界的变量使用这个上界(缺省设置)nullLINGO|OPTIONS|Global Solver(全局最优求解程序)选项卡 全局最优求解程序只搜索比当前解至少改进这么多个单位的解(缺省值为10-6)按绝对值控制两类误差限全局最优求解程序在凸化过程中增加的约束的误差限(缺省值为10-7)nullLINGO|OPTIONS|Global Solver(全局最优求解程序)选项卡 全局最优求解程序策略第1次对变量分枝时使用的分枝策略 Absolute Width(绝对宽度) Local Width(局部宽度) Global Width(全局宽度) Global Distance(全局距离) Abs (Absolute) Violation(绝对冲突) Rel (Relative) Violation(相对冲突,缺省设置) 选择活跃分枝节点的方法: Depth First(深度优先) Worst Bound(具有最坏界的分枝优先,缺省) Reformulation:模型重整的级别: None(不重整) Low(低) Medium(中) High(高,缺省)nullLINGO|OPTIONS|Global Solver(全局最优求解程序)选项卡 多初始点求解程序尝试次数:设定用多少个初始点尝试求解,有以下几种可能的设置: Solver Decides:由LINGO决定(缺省设置,对小规模NLP问题为5次,对大规模问题不使用多点求解程序) Off:不使用多点求解程序 N(>1的正整数):N点求解null 程序与数据分离文 本 文 件使用外部数据文件Cut (or Copy) – Paste 方法 @FILE 输入数据、@TEXT输出数据(文本文件) @OLE函数与电子表格软件(如EXCEL)连接 @ODBC函数与数据库连接 LINGO命令脚本文件LG4 (LONGO模型文件) LNG (LONGO模型文件) LTF (LONGO脚本文件) LDT (LONGO数据文件) LRP (LONGO报告文件)常用文件后缀null@FILE和@TEXT:文本文件输入输出MODEL: SETS: MYSET / @FILE(‘myfile.txt’) / : @FILE(‘myfile.txt’); ENDSETS MIN = @SUM( MYSET( I): SHIP( I) * COST( I)); @FOR( MYSET( I): [CON1] SHIP( I) > NEED( I); [CON2] SHIP( I) < SUPPLY( I)); DATA: COST = @FILE(‘myfile.txt’); NEED = @FILE(‘myfile.txt’); SUPPLY = @FILE(‘myfile.txt’); @TEXT(‘result.txt’)=SHIP, @DUAL(SHIP), @DUAL(CON1); ENDDATA ENDmyfile.txt文件 的内容、格式: Seattle,Detroit,Chicago,Denver~ COST,NEED,SUPPLY,SHIP~ 12,28,15,20~ 1600,1800,1200,1000~ 1700,1900,1300,1100null@OLE :与EXCEL连接MODEL: SETS: MYSET: COST,SHIP,NEED,SUPPLY; ENDSETS MIN = @SUM( MYSET( I): SHIP( I) * COST( I)); @FOR( MYSET( I): [CON1] SHIP( I) > NEED( I); [CON2] SHIP( I) < SUPPLY( I)); DATA: MYSET =@OLE('D:\JXIE\BJ2004MCM\mydata.xls','CITIES'); COST,NEED,SUPPLY =@OLE(mydata.xls); @OLE(mydata.xls,'SOLUTION')=SHIP; ENDDATA END mydata.xls文件中必须有下列名称(及数据): CITIES, COST,NEED,SUPPLY,SOLUTION在EXCEL中还可以通过“宏”自动调用LINGO(略) 也可以将EXCEL表格嵌入到LINGO模型中(略)null@ODBC :与数据库连接输入基本集合元素: setname/@ODBC([‘datasource’ [, ‘tablename’ [, ‘columnname’]]])/ 输入派生集合元素: setname/@ODBC([‘source’[,‘table’ [, ‘column1’[, ‘column2’…]]]])/目前支持下列DBMS: (如为其他数据库,则需自行安装驱动) ACCESS, DBASE,EXCEL,FOXPRO,ORACLE, PARADOX,SQL SERVER, TEXE FILES使用数据库之前,数据源需要在ODBC管理器注册输入数据: Attr_list=@ODBC([‘source’[,‘table’ [, ‘column1’[, ‘column2’…]]]]) 输出数据: @ODBC([‘source’[,‘table’ [, ‘column1’[, ‘column2’…]]]])= Attr_list具体例子略Excel与Lingo数据交换Excel与Lingo数据交换nullnullnullnullLingo运算求解设置Lingo运算求解设置nullnullnullnullnullnull 4. 建模与求解实例(结合软件使用)例 钢管下料 问题1. 如何下料最节省 ? 例 钢管下料 问题2. 客户增加需求:节省的标准是什么?由于采用不同切割模式太多,会增加生产和管理成本,规定切割模式不能超过3种。如何下料最节省?切割模式按照客户需要在一根原料钢管上安排切割的一种组合。 切割模式合理切割模式的余料应小于客户需要钢管的最小尺寸钢管下料 合理切割模式为满足客户需要,按照哪些种合理模式,每种模式切割多少根原料钢管,最为节省?合理切割模式2. 所用原料钢管总根数最少 钢管下料问题1 两种标准1. 原料钢管剩余总余量最小nullxi ~按第i 种模式切割的原料钢管根数(i=1,2,…7) 约束满足需求 决策变量 目标1(总余量)按模式2切割12根,按模式5切割15根,余料27米 最优解:x2=12, x5=15, 其余为0; 最优值:27整数约束: xi 为整数null当余料没有用处时,通常以总根数最少为目标 目标2(总根数)钢管下料问题1 约束条件不变 最优解:x2=15, x5=5, x7=5, 其余为0; 最优值:25。按模式2切割15根,按模式5切割5根,按模式7切割5根,共25根,余料35米 虽余料增加8米,但减少了2根 与目标1的结果“共切割27根,余料27米” 相比 null钢管下料问题2对大规模问题,用模型的约束条件界定合理模式增加一种需求:5米10根;切割模式不超过3种。现有4种需求:4米50根,5米10根,6米20根,8米15根,用枚举法确定合理切割模式,过于复杂。决策变量 xi ~按第i 种模式切割的原料钢管根数(i=1,2,3) r1i, r2i, r3i, r4i ~ 第i 种切割模式下,每根原料钢管生产4米、5米、6米和8米长的钢管的数量null满足需求模式合理:每根余料不超过3米整数非线性规划模型钢管下料问题2目标函数(总根数)约束条件整数约束: xi ,r1i, r2i, r3i, r4i (i=1,2,3)为整数null增加约束,缩小可行域,便于求解原料钢管总根数下界: 特殊生产计划:对每根原料钢管 模式1:切割成4根4米钢管,需13根; 模式2:切割成1根5米和2根6米钢管,需10根; 模式3:切割成2根8米钢管,需8根。 原料钢管总根数上界:31 模式排列顺序可任定 钢管下料问题2需求:4米50根,5米10根,6米20根,8米15根每根原料钢管长19米nullLINGO求解整数非线性规划模型Local optimal solution found at iteration: 12211 Objective value: 28.00000 Variable Value Reduced Cost X1 10.00000 0.000000 X2 10.00000 2.000000 X3 8.000000 1.000000 R11 3.000000 0.000000 R12 2.000000 0.000000 R13 0.000000 0.000000 R21 0.000000 0.000000 R22 1.000000 0.000000 R23 0.000000 0.000000 R31 1.000000 0.000000 R32 1.000000 0.000000 R33 0.000000 0.000000 R41 0.000000 0.000000 R42 0.000000 0.000000 R43 2.000000 0.000000 模式1:每根原料钢管切割成3根4米和1根6米钢管,共10根; 模式2:每根原料钢管切割成2根4米、1根5米和1根6米钢管,共10根; 模式3:每根原料钢管切割成2根8米钢管,共8根。 原料钢管总根数为28根。
本文档为【第7讲 优化软件LinGo的使用】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_944887
暂无简介~
格式:ppt
大小:2MB
软件:PowerPoint
页数:0
分类:工学
上传时间:2012-02-12
浏览量:16