《运筹学》实验指导
《运筹学》实验指导
目录绪论23第一章LINGO软件介绍15第二章常见模型的LINGO编程15第1节线性规划问题的LINGO求解及灵敏度分析151.1线性规划的LINGO编程171.2灵敏度分析第2节运输问题的LINGO求解1922第3节整数规划的LINGO求解223.1整数规划的LIGNO实现233.2指派问题的LIGNO实现第三章上机实验2424实验一线性规划问题的求解与LINGO软件的初步使用25实验二运输问题的LINGO求解25实验三整数规划0-1规划和指派问题的LINGO求解实验四26自选题实验27附录实验报告模板-
1 目录 绪论 . 2 第一章 LINGO 软件介绍 . 3 第二章 常见模型的 LINGO 编程 . 15 第 1 节 线性规划问题的 LINGO 求解及灵敏度分析 . 15 1.1 线性规划的 LINGO 编程 . 15 1.2 灵敏度分析 . 17 第 2 节 运输问题的 LINGO 求解 . 19 第 3 节 整数规划的 LINGO 求解 . 22 3.1 整数规划的 LIGNO 实现 . 22 3.2 指派问题的 LIGNO 实现 . 23 第三章 上机实验 . 24 实验一 线性规划问题的求解与 LINGO 软件的初步使用 . 24 实验二 运输问题的 LINGO 求解 . 25 实验三 整数规划 0-1 规划和指派问题的 LINGO 求解 . 25 实验四 自选题实验 . 26 附录 实验报告模板. 27
绪论运筹学是一门应用学科,它广泛应用于经济、军事、交通和管理等社会的各个领域。运筹学应用现代科学技术知识、用定量分析的方法,解决实际中提出的问题,为决策者选择最优决策,提供定量依据。运筹学通常是从实际问题出发,根据决策问题的特征,建立适当的数学模型,研究和分析模型的性质和特点,设计解决模型的方法或算法来解决实际问题在解决生产、经营和管理活动中的实际决策问题时,一般都是建立变量多、约束多的大型复杂的运筹学模型,通常需通过计算机软件才能求解。因此,学习运筹学的计算机求解和进行上机实验,就是运筹学教学的重要组成部分。现在求解各类运筹学模型的软件有多种,主要有Microexcel,Matlab,LINDO,LINGO,WinQSB和Dash-Xpress等。Microexcel主要利用规划求解来解线性规划模型,WinQSB功能比较齐全,但是主要适合解决规模较小的运筹学模型,英国运筹学软件Dash-Xpress目前在中国的使用率不高,Matlab是通过矩阵的方法解决线性规划,对非线性规划和其它运筹学模型,特别是大规模的模型的输入不太方便。而LINGO和LINDO是目前使用最广泛的运筹学专业软件,特别是LINGO,模型的输入和编程十分方便,可解决大规模的运筹学模型。因此,本课程的上机实验就是基于LINGO软件开展进行。LINGO软件由美国LINDO系统公司推出,它内置建模语言,可以求解线形规划、整数规划、非线性规划等各类优化模型,还可以求解一些线性、非线性方程组,功能非常强大又易用。相比较于其他软件而言,其优点在于:1)LINGO软件基于WindoWs界面开发,编程语言简洁易学,学生容易掌握,可以弥补运筹学实验课时少的不足。对决策变量和约束条件较少的数学规划模型,LINGO软件的输入程序命令几乎和其数学模型的表达式相同。对相对比较复杂的数学模型,LINGO软件引入了集合和属性等建模语言,借此能够表达一系列相似的约束条件,从而可以快速方便地表达较大规模的优化问题。2)LINGO软件的数据输入和输出非常方便,建立的模型可以通过Windows剪贴板传递数据,也可以直接从文本文件或Excel数据文件中获取资料,或将求解结果直接输出到这些数据文件中。3)LINGO软件有9种类型的函数,包括基本运算符,一些常规的数学函数、用来定义变量取值范围的变量界定函数、方便集操作的集操作函数和集循环函数、与外部数据源联系的数据输入输出函数等,可供编写程序时引用,用法非常简单。2
2 绪论 运筹学是一门应用学科,它广泛应用于经济、军事、交通和管理等社会的各 个领域。运筹学应用现代科学技术知识、用定量分析的方法,解决实际中提出的 问题,为决策者选择最优决策,提供定量依据。 运筹学通常是从实际问题出发,根据决策问题的特征,建立适当的数学模型, 研究和分析模型的性质和特点,设计解决模型的方法或算法来解决实际问题。 在解决生产、经营和管理活动中的实际决策问题时,一般都是建立变量多、 约束多的大型复杂的运筹学模型,通常需通过计算机软件才能求解。因此,学习 运筹学的计算机求解和进行上机实验,就是运筹学教学的重要组成部分。 现在求解各类运筹学模型的软件有多种,主要有 Microexcel,Matlab, LINDO,LINGO,WinQSB 和 Dash-Xpress 等。Microexcel 主要利用规划求解 来解线性规划模型,WinQSB 功能比较齐全,但是主要适合解决规模较小的运 筹学模型,英国运筹学软件 Dash-Xpress 目前在中国的使用率不高,Matlab 是 通过矩阵的方法解决线性规划,对非线性规划和其它运筹学模型,特别是大规 模的模型的输入不太方便。而 LINGO 和 LINDO 是目前使用最广泛的运筹学专 业软件,特别是 LINGO,模型的输入和编程十分方便,可解决大规模的运筹学 模型。因此,本课程的上机实验就是基于 LINGO 软件开展进行。 LINGO 软件由美国 LINDO 系统公司推出,它内置建模语言,可以求解线 形规划、整数规划、非线性规划等各类优化模型,还可以求解一些线性、非线 性方程组,功能非常强大又易用。相比较于其他软件而言,其优点在于: 1)LINGO 软件基于 Windows 界面开发,编程语言简洁易学,学生容易掌 握,可以弥补运筹学实验课时少的不足。对决策变量和约束条件较少的数学规 划模型,LINGO 软件的输入程序命令几乎和其数学模型的表达式相同。对相对 比较复杂的数学模型,LINGO 软件引入了集合和属性等建模语言,借此能够表 达一系列相似的约束条件,从而可以快速方便地表达较大规模的优化问题。 2)LINGO 软件的数据输入和输出非常方便,建立的模型可以通过 Windows 剪贴板传递数据,也可以直接从文本文件或 Excel 数据文件中获取资 料,或将求解结果直接输出到这些数据文件中。 3)LINGO 软件有 9 种类型的函数,包括基本运算符,一些常规的数学函 数、用来定义变量取值范围的变量界定函数、方便集操作的集操作函数和集循 环函数、与外部数据源联系的数据输入输出函数等,可供编写程序时引用,用 法非常简单
4)LINGO拥有一整套快速的,内建的求解器用来求解线性的,非线性的,二次约束的和整数的优化问题,计算速度快,解算能力强大,其优化工具箱要比MATLAB强大。可以看到,LINGO软件相对其他软件的优越之处,一是语言的简练;二是集的合理使用。下面的章节我们将逐步了解LINGO的用途。第一章LINGO软件介绍1.文件菜单(FileMenu)1.1新建(New)从文件菜单中选用“新建”命令、单击新建”按钮或直接按F2键可以创建一个新的Model"窗口。在这个新的"Model"窗口中能够输入所要求解的模型。1.2打开(Open)从文件菜单中选用“打开”命令、单击打开”按钮或直接按F3键可以打开一个已经存在的文本文件。这个文件可能是一个Model文件。1.3保存(Save)从文件菜单中选用保存”命令、单击“保存”按钮或直接按F4键用来保存当前活动窗口(最前台的窗口)中的模型结果、命令序列等保存为文件。1.4另存为..(SaveAs...)从文件菜单中选用另存为..:"命令或按F5键可以将当前活动窗口中的内容保存为文本文件,其文件名为你在“另存为..:对话框中输入的文件名。利用这种方法你可以将任何窗口的内容如模型、求解结果或命令保存为文件。1.5关闭(Close)在文件菜单中选用“关闭"(Close)命令或按F6键将关闭当前活动窗口。如果这个窗口是新建窗口或已经改变了当前文件的内容,LINGO系统将会提示是否想要保存改变后的内容。1.6打印(Print)在文件菜单中选用打印"(Print)命令、单击“打印"按钮或直接按F7键可以将当前活动窗口中的内容发送到打印机。1.7打印设置(PrintSetup...)在文件菜单中选用打印设置.:"命令或直接按F8键可以将文件输出到指定的打印机。3
3 4)LINGO 拥有一整套快速的,内建的求解器用来求解线性的,非线性 的,二次约束的和整数的优化问题,计算速度快,解算能力强大,其优化工具 箱要比 MATLAB 强大。 可以看到,LINGO 软件相对其他软件的优越之处,一是语言的简练;二是 集的合理使用。下面的章节我们将逐步了解 LINGO 的用途。 第一章 LINGO 软件介绍 1. 文件菜单(File Menu) 1. 1 新建(New) 从文件菜单中选用“新建”命令、单击“新建”按钮或直接按 F2 键可以创建一 个新的“Model”窗口。在这个新的“Model”窗口中能够输入所要求解的模型。 1. 2 打开(Open) 从文件菜单中选用“打开”命令、单击“打开”按钮或直接按 F3 键可以打开一 个已经存在的文本文件。这个文件可能是一个 Model 文件。 1. 3 保存(Save) 从文件菜单中选用“保存”命令、单击“保存”按钮或直接按 F4 键用来保存当 前活动窗口(最前台的窗口)中的模型结果、命令序列等保存为文件。 1. 4 另存为...(Save As...) 从文件菜单中选用“另存为...”命令或按 F5 键可以将当前活动窗口中的内 容保存为文本文件,其文件名为你在“另存为...”对话框中输入的文件名。利用 这种方法你可以将任何窗口的内容如模型、求解结果或命令保存为文件。 1. 5 关闭(Close) 在文件菜单中选用“关闭”(Close)命令或按 F6 键将关闭当前活动窗口。如果 这个窗口是新建窗口或已经改变了当前文件的内容,LINGO 系统将会提示是否 想要保存改变后的内容。 1. 6 打印(Print) 在文件菜单中选用“打印” (Print)命令、单击“打印”按钮或直接按 F7 键可以 将当前活动窗口中的内容发送到打印机。 1. 7 打印设置(Print Setup...) 在文件菜单中选用“打印设置...”命令或直接按 F8 键可以将文件输出到指 定的打印机
1.8打印预览(PrintPreview)在文件菜单中选用打印预览...”命令或直接按Shift+F8键可以进行打印预览。1.9输出到日志文件(LogOutput...)从文件菜单中选用"LogOutput..."命令或按F9键打开一个对话框,用于生成一个日志文件,它存储接下来在“命令窗口”中输入的所有命令。1.10提交LINGO命令脚本文件(TakeCommands...)从文件菜单中选用TakeCommands..·"命令或直接按F11键就可以将LINGO命令脚本(commandscript)文件提交给系统进程来运行。1.11引入LINGO文件(ImportLingoFile...)从文件菜单中选用"ImportLingoFile..."命令或直接按F12键可以打开一个LINGO格式模型的文件,然后LINGO系统会尽可能把模型转化为LINGO语法允许的程序。1.12退出(Exit)从文件菜单中选用"Exit"命令或直接按F10键可以退出LINGO系统。2.编辑菜单(EditMenu)2.1恢复(Undo)从编辑菜单中选用恢复”(Undo)命令或按Ctrl+Z组合键,将撤销上次操作、恢复至其前的状态。2.2剪切(Cut)从编辑菜单中选用剪切”(Cut)命令或按Ctrl+X组合键可以将当前选中的内容剪切至剪贴板中。2.3复制(Copy)从编辑菜单中选用"复制”(Copy)命令、单击"复制"按钮或按Ctrl+C组合键可以将当前选中的内容复制到剪贴板中。2.4粘贴(Paste)从编辑菜单中选用粘贴”(Paste)命令、单击粘贴"按钮或按Ctrl+V组合键可以将粘贴板中的当前内容复制到当前插入点的位置。2.5粘贴特定..(PasteSpecial。。)与上面的命令不同,它可以用于剪贴板中的内容不是文本的情形。2.6全选(SelectAll)从编辑菜单中选用SelectAll"命令或按Ctrl+A组合键可选定当前窗口中的所有内容。4
4 1. 8 打印预览(Print Preview) 在文件菜单中选用“打印预览...”命令或直接按 Shift+F8 键可以进行打印预 览。 1. 9 输出到日志文件(Log Output...) 从文件菜单中选用“Log Output...”命令或按 F9 键打开一个对话框,用于生 成一个日志文件,它存储接下来在“命令窗口”中输入的所有命令。 1. 10 提交 LINGO 命令脚本文件(Take Commands...) 从文件菜单中选用“Take Commands...”命令或直接按 F11 键就可以将 LINGO 命令脚本(command script)文件提交给系统进程来运行。 1. 11 引入 LINGO 文件(Import Lingo File...) 从文件菜单中选用“Import Lingo File...”命令或直接按 F12 键可以打开一个 LINGO 格式模型的文件,然后 LINGO 系统会尽可能把模型转化为 LINGO 语法 允许的程序。 1. 12 退出(Exit) 从文件菜单中选用“Exit”命令或直接按 F10 键可以退出 LINGO 系统。 2. 编辑菜单(Edit Menu) 2. 1 恢复(Undo) 从编辑菜单中选用“恢复”(Undo)命令或按 Ctrl+Z 组合键,将撤销上次操 作、恢复至其前的状态。 2. 2 剪切(Cut) 从编辑菜单中选用“剪切”(Cut)命令或按 Ctrl+X 组合键可以将当前选中的 内容剪切至剪贴板中。 2. 3 复制(Copy) 从编辑菜单中选用“复制”(Copy)命令、单击“复制”按钮或按 Ctrl+C 组合键 可以将当前选中的内容复制到剪贴板中。 2. 4 粘贴(Paste) 从编辑菜单中选用“粘贴”(Paste)命令、单击“粘贴”按钮或按 Ctrl+V 组合键 可以将粘贴板中的当前内容复制到当前插入点的位置。 2. 5 粘贴特定.(Paste Special。) 与上面的命令不同,它可以用于剪贴板中的内容不是文本的情形。 2. 6 全选(Select All) 从编辑菜单中选用“Select All”命令或按 Ctrl+A 组合键可选定当前窗口中的 所有内容