




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、逻辑运算符(Logical Operator)#NOT#否定 #EQ#相等#NE#不等#AND#并且#OR#或者#GT#大于#GE#大于等于#LT#小于#LE#小于等于问题:某公司有60万元资金,计划投资甲、乙两个项目,按要求对项目甲的投资不小于对项目乙投资的倍,且对每个项目的投资不能低于5万元,对项目甲每投资1万元可获得0.4万元的利润,对项目乙每投资1万元可获得0.6万元的利润,问如何分配资金在两个项目上才可获得最大利润?求解步骤:1.定义决策变量;2.目标函数;3.约束条件。求解方法:图解法(变量少时)、单纯形法、大M法、对偶单纯形法等。教材实例:决策变量往往很少。
2、大规模线性规划问题:决策变量多有几十、成百上千以致更多个? 书写目标函数足够长,约束条件足够多?max=0.4*x+0.6*y;x+y<=60;x>=2/3*y;x>=5;y>=5;LINGO全称是Linear INteractive and General Optimizer的缩写-交互式的线性和通用优化求解器。L linear programming. I- integer programming.N-non-linear programming.LINGO Comprehensive modeling language and solvers for l
3、inear, non-linear, and integer programming. Lingo软件简介美国芝加哥(Chicago)大学的林纳斯·施拉格(Linus Schrage)教授于1980年前后开发, 后来成立 LINDO系统公司(LINDO Systems Inc.)。 网址: 主要产品:· What'sBest! Excel add-in for linear, integer, and non-linear modeling. · LINGO Comprehensive modeling language and sol
4、vers for linear, non-linear, and integer programming. (Lingo 14.0 Thur, 2nd May 2013)· Lindo API Powerful callable library of optimization solvers and routines. · Solver Suite An introductory bundle of What'sBest!, LINGO and Lindo API.LINGO 9.0(2005年推出)和LINDO6.1是美国LINDO系统公司开发
5、的一套专门用于求解最优化问题的软件包。LINDO用于求解线性规划和二次规划问题,LINGO除了具有LINDO的全部功能外,还可以用于求解非线性规划问题,也可以用于一些线性和非线性方程(组)的求解,等等。LINGO和LINDO软件的最大特色在于可以允许优化模型中的决策变量是整数(即整数规划),而且执行速度很快(比matlab强)LINGO实际上还是最优化问题的一种建模语言,包括许多常用的函数可供使用者建立优化模型时调用,易于方便地输入、求解和分析大规模最优化问题。速度快和容易使用让LINDO Systems Inc 公司成为求解最佳化模型软件的领导供货商。线性、非线性和整数规划的求解程序已经被全
6、世界数千万的公司用来做最大化利润和最小化成本的分析。应用的范围包含生产线规划、运输、财务金融、投资分配、资本预算、混合排程、库存管理、资源配置等领域。优化模型介绍 实际问题中的优化模型Min/Max z=f(x), x=(x1,.,xn)T s.t. g i(x)0,i=1,2,.,mx1,.,xn0其中 x决策变量, f(x)目标函数, gi(x) 0约束条件数学规划分类:连续规划线性规划(LP): Linear programming二次规划(QP): Quadratic programming非线性规划(NLP): Non Linear Programming 整数规划(IP):Inte
7、ger Programming 0-1整数规划、一般整数规划、 纯整数规划(PIP)、混合整数规划(MIP)note:LP, QP, ILP, IQP, PILP, PIQP, NLP, INLP, PINLP.MATLAB命令:linprog(线性规划), bintprog(0-1整数规划)牢记:Lingo默认所有决策变量都非负,故变量非负条件可以不必输入。一些例子例1.解多项式方程: 求方程 x4+8x3 -10=0的根。(P154 Matlab求的结果1.0344,系数向量+系统函数调用)x4+8*x3-10=0;例2.解线性方程组:(P170 Matlab求的结果 【0.9958,0.
8、9579,0.7916】,系数矩阵+常数列向量+Jacobi迭代函数)10*x1-x2=9;-x1+10*x2-2*x3=7;-2*x2+10*x3=6;例3.解不定方程组:中国古代算书张丘建算经中有一道著名的百鸡问题:公鸡每只值5 文钱,母鸡每只值3 文钱,而3 只小鸡值1 文钱。用100 文钱买100 只鸡,问:这100 只鸡中,公鸡、母鸡和小鸡各有多少只?(有四组解,1、2、3重循环,或全由矩阵运算+find函数完成)cocks+hens+chicks=100;5*cocks+3*hens+chicks/3=100;例4.无条件极值:设 求函数f在(0.5,0.5,0.5)附近的最小值。
9、(P178 Matlab求的结果为最小值点<0.5,1.0,1.0>,最小值为4, 函数定义+fminsearch函数调用)min=x+y2/x/4+z2/y+2/z;或min=x+y2/x/4+z2/y+2/z;init: x=0.5; y=0.5; z=0.5;endinit例5.条件极值:求解有约束最优化问题。(P179 Matlab求的结果为最优值点<0.3394,0.3303>,最优值为0.2456, 目标函数定义+约束条件定义+最优参数设置+fmincon函数调用)min=0.4*x2+x12+x22-x1*x2+x13/30;x1+0.5*x2>=0
10、.4;0.5*x1+x2>=0.5;例6.如何在LINGO中求解如下的LP问题:min=2*x1+3*x2;x1+x2>=350;x1>=100;2*x1+x2<=600;例7.如何在LINGO中求解如下的IQP问题:max=98*x1+277*x2-x12-0.3*x1*x2-2*x22;x1+x2<=100;x1<2*x2;gin(x1);gin(x2);课堂练习:利用lingo求解求解方程x3-5x2+3x+6=0在x=1和x=4附近的根。求解方程组 。求解约束条件:x1-x2+x34和x1+x35下 -10x1-20x2-30x3的极大值。利用集合求
11、解上面最后一题sets: a/1,2,3/:x;!集合元素为数字;endsetsmax=-10*x(1)-20*x(2)-30*x(3); x(1)-x(2)+x(3)>=4; x(1)+x(3)>=5;!sets:poultry/cocks,hens,chicks/:John;!集合元素为单词;endsetsJohn(1)+John(2)+John(3)=100;5*John(1)+3*John(2)+John(3)/3=100;!不用集合函数写代码时要用序号表示下标变量;学好Lingo需要掌握的几个重要方面· 基本语法结构· 掌握集合(SETS)的应用
12、83; 正确阅读求解报告· 正确理解求解状态窗口· 学会设置基本的求解选项(OPTIONS)一、Lingo基本语法1、定义目标函数为MIN=. 或 MAX=.2、以一个分号“;”结尾 除SETS, ENDSETS, DATA , ENDDATA, END之外3、变量可以放在约束条件右端,也可放在约束条件的左端。4、默认假定各变量非负。5、注释:“!”6、<、>等同于、建模(或写代码)时需要注意的几个问题 1、尽量使用实数优化,减少整数约束和整数变量2、尽量使用光滑优化,减少非光滑约束的个数 如:尽量少使用绝对值、符号函数、多个变量求最大/最小值、四舍五入、取整函
13、数等3、尽量使用线性模型,减少非线性约束和非线性变量的个数 (如x/y <5 改为x<5y)4、合理设定变量上下界,尽可能给出变量初始值 5、模型中使用的参数数量级要适当 (如小于103)Lingo运算符及其优先级算术运算符关系运算符+ - * / <(=) = >(=)v 用于构造目标与约束条件逻辑运算符(Logical Operator)#NOT#否定 #EQ#相等#NE#不等#AND#并且#OR#或者#GT#大于#GE#大于等于#LT#小于#LE#小于等于EQual,Greater Than,Greater-than-or-Equal-to,
14、Less Than,Less-than-or-Equal-tov 用于集合过滤条件结果:FALSE TRUE优先级最高优先级最低#NOT#(负号)* /+(减法)#EQ# #NE# #GT# #GE# #LT# #LE#AND# #OR#< = >v 先左后右,先括号内,后括号外Lingo内部函数”标准数学函数:abs(x) 返回x的绝对值sin(x) 返回x的正弦值,x采用弧度制cos(x) 返回x的余弦值tan(x) 返回x的正切值exp(x) 返回常数e的x次方log(x) 返回x的自然对数mod( x,y) 返回x被y除的余数sign(x) 如果x<0返回-1;否则x
15、=0,返回0;再否则返回1floor(x) 返回x的整数部分。当x>=0时,返回不超过x的最大整数;当x<0时,返回不低于x的最小整数。smax(x1,x2,xn) 返回x1,x2,xn中的最大值smin(x1,x2,xn) 返回x1,x2,xn中的最小值sqrt( x) 返回x的平方根变量界定函数变量界定函数实现对变量取值范围的附加限制,共4种:bin(x) 限制x为0或1bnd(L,x,U) 限制LxUfree(x) 取消对变量x的默认下界为0的限制,即x可以取任意实数gin(x) 限制x为整数在默认情况下,LINGO规定变量是非负的,也就是说下界为0,上界为+。free取消了
16、默认的下界为0的限制,使变量也可以取负值。bnd用于设定一个变量的上下界,它也可以取消默认下界为0的约束。集合操作函数LINGO提供了几个函数帮助处理集。 1in(set_name,primitive_index_1 ,primitive_index_2,)如果元素在指定集中,返回1;否则返回0。2wrap(index,limit) !缠绕该函数返回j=index-k*limit,其中k是一个整数,取适当值保证j落在区间1,limit内。该函数相当于mod(index,limit)+1。该函数在循环、多阶段计划编制中特别有用。例如:wrap(1,7)为1 wrap(3,7)为3 wrap(7,
17、7)为7 wrap(8,7)为1 !减去7的某个倍数 问 wrap(20,7)为?3size(set_name)该函数返回集set_name的成员个数。在模型中明确给出集大小时最好使用该函数。它的使用使模型更加数据中立,集大小改变时也更易维护。集循环函数集循环函数遍历整个集进行操作。其语法为function(setname(set_index_list)|conditional_qualifier:expression_list);function相应for、sum、max、min之一;setname是要遍历的集;set_ index_list是集索引列表;例如:一维的或二维的conditio
18、nal_qualifier是用来限制集循环函数的范围,当集循环函数遍历集的每个成员时,LINGO都要对conditional_qualifier进行判断,若结果为真,则对该成员执行function操作,否则跳过,继续执行下一次循环。expression_list是被应用到每个集成员的表达式列表,当用的是for函数时,expression_list可以包含多个表达式,其间用逗号隔开。这些表达式将被作为约束加到模型中。当使用其余的三个集循环函数时,expression_list只能有一个表达式。如果省略set_index_list,那么在expression_list中引用的所有属性的类型都是se
19、tname集。222222222222222222222222222222222222222222222222221for该函数用来产生对集成员的约束。基于建模语言的标量需要显式输入每个约束,不过for函数允许只输入一个约束,然后LINGO自动产生每个集成员的约束。例 产生序列1,4,9,16,25model:sets: number/1.5/:x;endsets for(number(I): x(I)=I2);end2sum该函数返回遍历指定的集成员的一个表达式的和。例 求向量5,1,3,4,6,10前5个数的和。model:data: N=6;enddatasets: number/1.N
20、/:x;endsetsdata: x = 5 1 3 4 6 10;enddata s=sum(number(I) | I #le# 5: x); );!此处不能写成I <=5;end3min和max返回指定的集成员的一个表达式的最小值或最大值。例 求向量5,1,3,4,6,10前5个数的最小值,后3个数的最大值。model:data: N=6;enddatasets: number/1.N/:x;endsetsdata: x = 5 1 3 4 6 10;enddata minv=min(number(I) | I #le# 5: x); maxv=max(number(I) | I
21、#ge# N-2: x);!倒数3个;end问:求下标为偶数的元素的最大值?111111111111111111111111111111111111111111111111111111111111111111输入和输出函数text函数该函数被用在数据部分用来把解输出至文本文件中。它可以输出集成员和集属性值。status()返回LINGO求解模型结束后的状态:0 Global Optimum(全局最优)1 Infeasible(不可行)2 Unbounded(无界)3 Undetermined(不确定)4 Feasible(可行)5 Infeasible or Unbounded(通常需要关闭“
22、预处理”选项后重新求解模型,以确定模型究竟是不可行还是无界)6 Local Optimum(局部最优)7 Locally Infeasible(局部不可行,尽管可行解可能存在,但是LINGO并没有找到一个)8 Cutoff(目标函数的截断值被达到)9 Numeric Error(求解器因在某约束中遇到无定义的算术运算而停止) 通常,如果返回值不是0、4或6时,那么解将不可信,几乎不能用。该函数仅被用在模型的数据部分来输出数据。例model:min=sin(x);data: text()=status();!text('c:tt.txt')=x;enddatainit: x=3;
23、endinit部分计算结果为: Local optimal solution found at iteration: 33 Objective value: -1.000000 6 Variable Value Reduced Cost X 4.712388 0.000000结果中的6就是status()返回的结果,表明最终解是局部最优的。Lingo条件判断函数IF(logical_condition, true_result, false_result)例 求解最优化问题min=fx+fy; fx=if(x #gt# 0, 100,0)+2*x; !不能写成x >0; fy
24、=if(y #gt# 0,60+3*y,2*y); x+y>=30;随机数qrand(seed) 纯小数产生服从(0,1)区间的拟随机数(均匀分布)。qrand只允许在模型的数据部分使用,它将用拟随机数填满集属性。通常,声明一个m×n的二维表,m表示运行实验的次数,n表示每次实验所需的随机数的个数。例DATA: M = 4; N = 2; SEED = 1234567; ENDDATA SETS: ROWS /1.M/; COLS /1.N/; TABLE( ROWS, COLS): X; ENDSETS DATA: X = qRAND( SEED);!此函数只能用在data段
25、 ENDDATA如何查错、排错?200多个错误代码Model Debugging: LINGO|Debuginfeasible 和 unbounded models:sufficient 和 necessary 例:infeasible model:model:Row1Max=3*X+7*Y;Row2X+2*Y<=3;Row32*X+Y<=2;Row40.55*X+Y>=4;end例:unbounded model:model:Row1Max=3*X+7*Y+Z;Row2X+2*Y>=3;Row32*X+Y-Z<=2;end习题1. 用Lingo求解下列线性规划: (1)max z=6x1-2x2-10x3+8x4,2.求解下列二次规划:(下述步骤Lingo->Options->Nonlinear Solver->Quadratic Recognition 进行设置可得全局最优解)3.用Lingo求解下列方程组的所有实数解:(1)(有两组解)Variable Value X -0.9817137 Y 0.1903991Variable Value X 0.356
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《风景园林招投标与概预算》试题A附参考答案详解(模拟题)
- 2025-2026年高校教师资格证之《高等教育法规》通关题库含答案详解(模拟题)
- 2023国家能源投资集团有限责任公司第一批社会招聘笔试备考题库及参考答案详解
- 2025福建省泉州凤栖实业有限责任公司社会招聘17人笔试备考试题附答案详解(模拟题)
- 5.2酸碱指示剂的选择65课件
- Brand KPIs for online betting:Interwetten in Germany-英文培训课件2025.5
- 2025届高考物理大一轮复习课件 第七章 第37课时 专题强化:用三大观点解决动力学问题
- 数字化粮库智慧粮仓信息化可视化解决方案
- 组织行为学视角下的互联网行业“996”加班文化
- 分管教育教学副校长工作总结:以学促行・以研提质・筑牢教育教学发展根基
- 老年肺炎临床诊断与治疗专家共识(2024年版)解读课件
- 2025年社会保障政策考试卷及答案关系
- 2025年小学一年级奥林匹克数学竞赛训练考试题(附答案解析)
- 2025年宁夏银川市中考物理一模试卷(含解析)
- 2025年度高考历史人教版必修二知识提纲
- 2025年初中学业水平考试地理模拟试卷(核心素养与能源地理)
- 玻璃瓶合同协议
- 药食同源106种25年4月更新
- 非车险培训课件
- 云南邮政面试题及答案
- 国开2024《人文英语4》边学边练参考答案
评论
0/150
提交评论