1.2 线性规划模型的求解软件

在数学建模过程中,绝大部分的优化模型都需借助软件求解模型。目前,求解线性规划模型的软件主要可以分为以下两类:第一类,使用经典、完善的优化类软件求解线性规划模型,如LINGO软件等;第二类,采用常用软件的函数命令求解线性规划模型,如MALTAB软件或者Python软件的linprog函数等。在这些软件中,读者并不需要关注具体的优化算法,只需要注重模型表达的准确性。下面分别简单介绍以上两类软件。

美国芝加哥大学的莱纳斯·施拉盖教授于1980年前后开发了一套专门用于求解最优化问题的软件包。经过多年的不断完善和扩充,莱纳斯·施拉盖教授成立了LINDO系统公司进行商业化运作,并取得了巨大成功。这套优化软件包的主要产品有四种:LINDO(目前已停止更新),LINGO,LINDO API和What's Best。在最优化软件的市场上,上述软件占有很大的份额。尤其是在供微机上使用的最优化软件市场上,上述软件产品具有绝对的优势。读者可以前往该公司的网站主页下载上述四种软件的演示版以及大量应用案例(网址:http://www.lindo.com)。演示版与正式版的基本功能类似,但演示版求解问题的规模受到严格限制。即使是正式版,通常也被分成求解包、高级版、超级版、工业版、扩展版等不同版本。不同版本的区别在于可求解问题的规模不同。求解规模越大的版本,其销售价格也越昂贵。各版本的求解规模如表1-1所示。

表1-1 不同版本优化软件的求解规模

除LINGO软件外,广受大学生喜爱的两类计算软件MATLAB和Python也配备数学函数或者优化工具箱以实现线性规划模型的求解功能。

MATLAB的名称由matrix、laboratory两个单词组合而成,是由美国Mathworks 公司发布的,主要面对科学计算、可视化以及交互式程序设计的高科技计算环境的软件。目前,国内大部分高校数学类相关专业开设了数学软件课程教授MATLAB软件的使用方法。因此,本书将不再介绍MATLAB软件的基础语法知识,而重点讲述如何调用MATLAB的函数、工具箱求解优化模型。采用MATLAB软件求解线性规划模型有以下两种典型方式:使用函数命令linprog或者optimtool工具箱。后续将结合具体案例进行讲解。

近年来,Python软件以其在机器学习领域的广泛应用,逐渐成为大学生计算机语言类基础课程的主要内容。在各类大学生数学建模竞赛中,相当一部分学生选择Python软件作为求解数学模型的工具语言。考虑到本书的读者并非都是MATLAB软件用户,故将以一定篇幅介绍Python软件求解优化模型的方法。Python软件有许多模块提供了求解线性规划模型的方法,如scipy库的optimize模块提供了一个求解线性规划模型的函数linprog。此外,cvxopt库的solvers模块也可以求解线性规划模型。注意:对仅学过Python软件的读者而言,在学习本书的过程中只需关注各类模型的Python软件求解部分,而无须额外学习MATLAB软件的相关内容。