LINGO是用来求解线性和非线性优化问题的简易工具.doc

上传人:da****u 文档编号:1087083 上传时间:2018-12-03 格式:DOC 页数:27 大小:560.53KB
下载 相关 举报
LINGO是用来求解线性和非线性优化问题的简易工具.doc_第1页
第1页 / 共27页
LINGO是用来求解线性和非线性优化问题的简易工具.doc_第2页
第2页 / 共27页
LINGO是用来求解线性和非线性优化问题的简易工具.doc_第3页
第3页 / 共27页
LINGO是用来求解线性和非线性优化问题的简易工具.doc_第4页
第4页 / 共27页
LINGO是用来求解线性和非线性优化问题的简易工具.doc_第5页
第5页 / 共27页
点击查看更多>>
资源描述

1、1LINGO 基础以及在建模中的应用LINGO 是一个利用线性规划和非线性规划来简洁地阐述、解决和分析复杂问题的简便工具。LINGO 还是最优化问题得一种建模语言,包括许多常用的函数可供使用者建立模型时调用,并提供与其他数据文件(如文本文件、EXCEL 电子表格文件、数据库文件等)的接口,程序执行速度快,易于输入、修改、求解和分析问题。和另外一种常用的建模语言 MATLAB 相比,LINGO 有自己的独特的地方。在使用MATLAB 表述一个数学模型问题的时候,需要将模型中的约束条件进行分类(即线性等式约束、线性不等式约束、非线性等式约束、非线性不等式约束)转化成相应的矩阵形式以及相应的 M 文

2、件,如果是一个大规模的问题,还需要建立较多的 M 文件,而且,当问题中的某些约束条件有较小的改动的时候,会引起相应的 M 文件有较大的改动,这就使得 MATLAB 的灵活性较差。而在使用 LINGO 表述相同模型问题时,则只需要简单的“翻译”成相应的 LINGO程序即可。同时 LINGO 是一个专业的求解规划问题的软件,在求解速度和求解精度上都要比MATLAB 好。但是 MATLAB 也有自己的特点,所以读者在建模时,最好根据实际问题,恰当得混合使用这两种软件,才能达到较好的建模效果。LINGO 软件包有多种版本,但其软件内核和使用方法类似,本讲义以 LINGO8.0 进行简单介绍。学习本讲义

3、,仅能够让读者能够运用 LINGO8.0 建模语言表述实际问题,正确理解求解过程所显示的状态,解读输出结果。作为一门建模语言,它非常灵活,不是本讲义所能完全包含的,关于程序高级方面的设置和使用,可查看帮助文件和其他的相关资料。一 LINGO 基础1 LINGO 快速入门当你在 windows 下开始运行 LINGO 系统时,和其他的 windows 应用程序一样,会得到类似下面的一个窗口:外层是主框架窗口,包含了所有菜单命令和工具条,其它所有的窗口将被包含在主窗口之下。在主窗口内的标题为 LINGO Model LINGO1 的窗口是 LINGO 的默认模型窗口,建立的模型都都要在该窗口内编码

4、实现。下面举两个例子。2例 1.1 如何在 LINGO 中求解如下的线性规划问题: 0,62135.2min112xtsx在模型窗口中输入如下代码:min=2*x1+3*x2;x1+x2=350;x1=100;2*x1+x2=” 。LINGO 中还能用“”表示大于等于关系。LINGO 并不支持严格小于和严格大于关系运算符。然而,如果需要严格小于和严格大于关系,比如让 A 严格小于 B:A= 4.2 数学函数LINGO 提供了大量的标准数学函数:abs(x) 返回 x 的绝对值sin(x) 返回 x 的正弦值,x 采用弧度制cos(x) 返回 x 的余弦值tan(x) 返回 x 的正切值exp(

5、x) 返回常数 e 的 x 次方log(x) 返回 x 的自然对数lgm(x) 返回 x 的 gamma 函数的自然对数sign(x) 如果 x=0 时,返回不超过 x 的最大整数;当 x0时,返回不低于 x 的最大整数。smax(x1,x2,xn) 返回 x1,x2,xn 中的最大值smin(x1,x2,xn) 返回 x1,x2,xn 中的最小值4.3 金融函数(略)4.4 概率函数虽然在 LINGO 里面也提供了较多的概率函数,但从建模使用来看,MATLAB 系统里面提供的概率函数更加丰富,而且也更方便,故在此也省略。4.5 变量界定函数变量界定函数实现对变量取值范围的附加限制,共 4 种

6、:10bin(x) 限制 x 为 0 或 1bnd(L,x,U) 限制 LxUfree(x) 取消对变量 x 的默认下界为 0 的限制,即 x 可以取任意实数gin(x) 限制 x 为整数在默认情况下,LINGO 规定变量是非负的,也就是说下界为 0,上界为+。free 取消了默认的下界为 0 的限制,使变量也可以取负值。bnd 用于设定一个变量的上下界,它也可以取消默认下界为 0 的约束。4.6 集操作函数size(set_name)该函数返回集 set_name 的成员个数。在模型中明确给出集大小时最好使用该函数。它的使用使模型更加数据中立,集大小改变时也更易维护。4.7 集循环函数集循环

7、函数遍历整个集进行操作。在 LINGO 程序中目标函数和约束条件的表述,就主要通过这类函数来实现,特别是 sum 函数和 for 函数。其语法为function(setname(set_index_list)|conditional_qualifier:expression_list);function 相应于下面罗列的四个集循环函数之一;setname 是要遍历的集;set_ index_list 是集索引列表;conditional_qualifier 是用来限制集循环函数的范围,当集循环函数遍历集的每个成员时,LINGO 都要对 conditional_qualifier 进行评价,若结

8、果为真,则对该成员执行function 操作,否则跳过,继续执行下一次循环。expression_list 是被应用到每个集成员的表达式列表,当用的是for 函数时,expression_list 可以包含多个表达式,其间用逗号隔开。这些表达式将被作为约束加到模型中。当使用其余的三个集循环函数时,expression_list 只能有一个表达式。如果省略 set_index_list,那么在 expression_list 中引用的所有属性的类型都是 setname 集。1for 循环函数该函数用来产生对集成员的约束。基于建模语言的标量需要显式输入每个约束,不过for 函数允许只输入一个约束,

9、然后 LINGO 自动产生每个集成员的约束。例 4.1 产生序列1,4,9,16,25model:sets:number/1.5/:x;endsetsfor(number(I): x(I)=I2);EndFOR(集合(下标):关于集合的属性的约束关系式) 对冒号“:”前面的集合的每个元素(下标) ,冒号“:”后面的约束关系式都要成立 2sum该函数返回遍历指定的集成员的一个表达式的和。例 4.2 求向量5,1,3,4,6,10前 5 个数的和。model:data:N=6;enddatasets:number/1.N/:x;endsetsdata:x = 5 1 3 4 6 10;enddatas=sum(number(I) | I #le# 5: x);

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育教学资料库 > 课件讲义

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。