首页 理论教育 软件基本介绍

软件基本介绍

时间:2022-02-12 理论教育 版权反馈
【摘要】:优化类数学模型在数学建模竞赛中占据着极其重要的地位.曾有人做过统计,全国大学生数学建模竞赛中80%以上的问题都可以建立优化模型解决.本章将依次介绍线性规划数学模型、非线性规划数学模型、整数规划数学模型、目标规划数学模型、动态规划数学模型以及它们利用数学软件的实现方式.本章还将重点介绍两种优化软件的使用.建立优化类数学模型可能不困难,但是如何建立一个合理的优化模型,以及求解所建立的模型将是此类问题的

第5章 优化数学模型

优化类数学模型在数学建模竞赛中占据着极其重要的地位.曾有人做过统计,全国大学生数学建模竞赛中80%以上的问题都可以建立优化模型解决.本章将依次介绍线性规划数学模型、非线性规划数学模型、整数规划数学模型、目标规划数学模型、动态规划数学模型以及它们利用数学软件的实现方式.本章还将重点介绍两种优化软件的使用.建立优化类数学模型可能不困难,但是如何建立一个合理的优化模型,以及求解所建立的模型将是此类问题的难点也是本章介绍的重点.在第4章DEA评价模型中,大家已经遇到过线性规划问题.但当问题非常复杂时,建立数学规划问题已经不是问题的难点,求解模型才是问题的难点.在前面已经给大家介绍过数学软件Matlab,虽然Matlab软件也有多种求解规划问题的数学命令,但是有两类更为专业的数学软件Lindo/Lingo,它们是专门用来解决各种优化问题数学软件.

美国芝加哥大学的Linus Schrage教授于1980年前后开发了一套专门用于求解最优化问题的软件包,后来又经过多年的不断完善和扩充,并成立了Lindo系统公司进行商业化运作,取得了巨大成功.这套软件包的主要产品有4种:Lindo,Lingo,Lindo API和What’s Best,在最优化软件的市场上占有很大的份额,尤其在供微机上使用的最优化软件市场上,上述软件产品具有绝对的优势.例如Lindo公司主页上提供的信息,位列全球《财富》杂志500强的企业中,一半以上使用上述产品,其中位列全球《财富》杂志25强的企业中有23家使用上述产品.大家可以从该公司的主页上下载上面4种软件的演示版和大量应用例子.演示版与正式版的基本功能是类似的,只是试用版能够求解问题的规模受到限制.即使正式版也被分成求解包、高级版、超级版、工业版、扩展版等不同档次的版本,不同档次版本的区别也在于能够求解问题的规模大小不同.当然,规模越大版本的销售价格也越昂贵(见表5-1).

表5-1 Lindo/Lingo软件版本说明

表5-1是非常重要的,许多学生在使用Lindo/Lingo软件编程发生错误时,很多情况都是由于变量个数越界引起的.建立合理的优化模型有助于减少变量的数量,使得方便求解.这点对于学好优化软件是非常重要的.

Lindo是英文Linear Interactive and Discrete Optimizer字母的缩写形式,即“交互式的线性和离散优化求解器”,可以用来求解线性规划(LP)和二次规划(QP);Lingo是英文Linear Interactive and General Optimizer字母的缩写形式,即“交互式的线性和通用优化求解器”,它除了具有Lindo的全部功能外,还可以用于求解非线性规划,也可以用于一些线性和非线性方程组的求解等.Lindo和Lingo软件的最大特色在于允许决策变量是整数(即整数规划,包括0-1规划),而且执行速度很快.Lingo实际上还是最优化问题的一种建模语言,包括许多常用的数学函数供使用者建立优化模型时调用,并可以接受其他数据文件,即使对优化方面专业知识了解不多的用户,也能够方便地建模和输入、有效地求解和分析实际遇到的大规模优化问题,并通常能够快速得到复杂优化问题的高质量解.Lindo和Lingo软件能求解的优化模型见图5-1.

图5-1 Lindo/Lingo软件求解范围

此外,Lindo系统公司还提供了Lindo/Lingo软件与其他开发工具(如C++和Java等语言)的接口软件Lindo API(Lindo Application Program Interface),因此使Lindo和Lingo软件还能方便地融入到用户应用软件的开发中去.最后,What’s Best提供了Lindo/Lingo软件与电子表格软件的接口,能够直接集成到电子表格软件中使用.由于上述特点,Lindo、Lingo、Lindo API和What’s Best软件在教学、科研和工业、商业、服务等领域得到了广泛应用.本章只介绍在Microsoft Windows环境下运行的Lindo/Lingo最新版本的使用方法,并包括社会、经济、工程等方面的大量实际应用问题的数学建模和实例求解.需要指出的是:目前Lingo12的功能已经非常强大,所以Lindo公司已经将Lindo软件从其产品目录中删除,这意味着以后不会再有Lindo软件的新版本了.

虽然Lindo/Lingo软件的功能非常强大,但这并不是说只要将模型随随便便地输入软件中去求解就万事大吉.事实上,为了将来Lindo/Lingo能快速地得到高质量的解,对实际问题建立优化模型就必须特别仔细.下面给出值得注意的几个基本问题.

1.尽量使用实数优化模型,尽量减少整数约束和整数变量的个数.只有在万不得已时才使用整数变量和整数约束(即含有整数变量的约束).原因前面已经讲过,求解离散优化问题比连续优化问题难得多.从表5-1中可以看出,这两种优化软件对于整数变量或者整数约束的要求比连续变量或者连续约束更加严格.

2.尽量使用光滑优化模型,尽量避免使用非光滑函数.非光滑函数指存在不可微点的函数.例如,应尽量少地使用绝对值函数(|x|)、符号函数(sgn(x))、多个变量求最大(小)值、四舍五入函数、取整函数等.这些函数从数学上看是不光滑的,含有尖点(不可微点)甚至间断点(函数的不连续点),因此不利于利用导数信息.

3.尽量使用线性优化模型,尽量减少非线性约束和非线性变量的个数.应当尽量简化变量之间的约束关系.例如,对于“变量xy的比值不超过5”这样的约束,写成“x/y≤5”当然是可以的,但这是一个分式约束(同时它还有间断点y=0),因为是非线性约束xy都是非线性变量(即非线性约束中的变量),最好改写成线性约束“x≤5y”.

4.合理设定变量的上下界,尽可能给出变量的初始值.如果在实际问题中知道变量的取值范围,那就尽量告诉Lindo/Lingo,不要让软件帮你到大海去捞针.例如,如果x的取值范围在实际中是大于30小于50,就不要让软件在整个实数范围内去寻找最优解.有时实际问题中还能知道或感觉到最优解大致在哪个值附近,那就可以以初始值的形式告诉Lindo/Lingo,这对于问题的求解是很有帮助的.毕竟软件是死的,而人要比计算机聪明得多.

5.模型中使用的单位的数量级要适当.如果同一模型甚至同一约束中有的数很小而有的数很大,如0.01和100000,则这两个数的数量级相差很大了,不利于优化模型求解,因为大的数与小的数运算时误差会很大,运算精度降低.Lindo/Lingo通常建议模型中数据之间的数量级不要相差超过1000倍(即最大数与最小数(按绝对值)不要相差1000倍以上),否则会给出警告提示信息.有时,可以通过对数据选择适当的单位改变相对尺度,尽量使数据之间的数量级相差减小.

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈