LINGO详细教程
lingo教程(word文档)

LINGO 是用来求解线性和非线性优化问题的简易工具。
LINGO 内置了一种建立最优化模型的语言,可以简便地表达大规模问题,利用LINGO 高效的求解器可快速求解并分析结果。
§1 LINGO 快速入门当你在windows 下开始运行LINGO 系统时,会得到类似下面的一个窗口:外层是主框架窗口,包含了所有菜单命令和工具条,其它所有的窗口将被包含在主窗口之下。
在主窗口内的标题为LINGO Model – LINGO1的窗口是LINGO 的默认模型窗口,建立的模型都都要在该窗口内编码实现。
下面举两个例子。
例1.1 如何在LINGO 中求解如下的LP 问题:,6002100350..32min 212112121≥≤+≥≥++x x x x x x x t s x x在模型窗口中输入如下代码: min =2*x1+3*x2; x1+x2>=350; x1>=100;2*x1+x2<=600;然后点击工具条上的按钮 即可。
例1.2 使用LINGO 软件计算6个发点8个收点的最小费用运输问题。
产销单位运价如model:!6发点8收点运输问题;sets:warehouses/wh1..wh6/: capacity;vendors/v1..v8/: demand;links(warehouses,vendors): cost, volume;endsets!目标函数;min=@sum(links: cost*volume);!需求约束;@for(vendors(J):@sum(warehouses(I): volume(I,J))=demand(J));!产量约束;@for(warehouses(I):@sum(vendors(J): volume(I,J))<=capacity(I));!这里是数据;data:capacity=60 55 51 43 41 52;demand=35 37 22 32 41 32 43 38;cost=6 2 6 7 4 2 9 54 95 3 8 5 8 25 2 1 9 7 4 3 37 6 7 3 9 2 7 12 3 9 5 7 2 6 55 5 2 2 8 1 4 3;enddataend然后点击工具条上的按钮即可。
lingo教程

lingo教程LINGO是用来求解线性和非线性优化问题的简易工具。
LINGO 内置了一种建立最优化模型的语言,可以简便地表达大规模问题,利用LINGO高效的求解器可快速求解并分析结果。
§1 LINGO 快速入门安装:实验室的所有电脑都已经事先安装好了Lingo 8(或者9,10,11)。
如果要在自己的电脑上安装这个软件,建议从网上下载一个破解版的,按照提示一步一步地安装完毕。
简单例子:当你在windows系统下开始运行LINGO时,会得到类似于下面的一个窗口:外层是主框架窗口,包含了所有菜单命令和工具条,其它所有的窗口将被包含在主窗口之下。
在主窗口内的标题为LINGO Model –LINGO1的窗口是LINGO的默认模型窗口,建立的模型都要在该窗口内编码实现。
下面举两个例子。
例1 某工厂在计划期内要安排生产I、II两种产品,已知生产单位产品所需的设备台时及A、B两种原材料的消耗,如表所示。
产品I 产品II 设备 1 2 8台时原材料A 4 0 16kg 原材料B 0 4 12kg工厂每生产一件产品I可获利2元,每生产一件产品II可获利3元,问应该如何安排生产计划使该厂获利最多?我们用下面的数学模型来描述这个问题。
设x_1、x_2分别表示在计划期内产品I、II的产量。
因为设备的有效台时是8,这是一个限制产量的条件,所以在确定产品I、II的产量时,要考虑不超过设备的有效台时数,即可用不等式表示为x_1 + 2x_2 <=8 同理,因原材料A、B的限量,可以得到以下不等式4x_1 <=16 4x_2 <=12 该工厂的目标是在不超过所有资源限量的条件下,如何确定产量x_1、x_2以得到最大的利润。
若用z表示利润,这时z=2x_1+3x_2.综合上述,该计划问题可用数学模型表示为:目标函数max z=2x_1+3x_2约束条件x_1+2x_2<=84x_1 <=16 4x_2 <=12 x_1、x_2 >=0 一般来说,一个优化模型将由以下三部分组成:1. 目标函数(Objective Function):要达到的目标。
LINGO应用教程

第十章 LINGOLingo 软件是求解线性规划、非线性规划的数学软件,也可用于一些线性和非线性方程组的求解等。
Lingo 实际上也是最优化问题的一种建模语言,包括许多常用的数学函数供使用者建立优化模型时调用,并可以接受与其他数据文件交换数据。
第一节 LINGO 软件的基本使用方法1.1 LINGO 使用入门在windows 操作系统下启动LINGO 后,将进入LINGO 集成环境,包括主框架窗口和模型窗口两部分。
主框架窗口集成了菜单和命令按钮,模型窗口用于输入模型。
例1 求解数学模型12121212max 23..4310351200x x s t x x x x x x ++≤+≤≥≥解:在模型窗口输入LINGO 求解模型如下:输入模型后选择菜单LINGO|Solve 或者按工具栏的,LINGO开始编译模型,如有语法错误将返回一个错误的消息并指明错误出现的位置;如果通过编译,LINGO将激活Solver运算器寻求模型的最优解,首先出现Solver Status状态窗口显示模型求解的运算状态信息:状态窗口显示的信息含义如下:“Global optimal solution found”表示得到全局最优解。
“Objective value: 7.454545”表示最优目标值为7.454545。
“Total solver iterations:2” 表示迭代2次得到结果。
“V alue”给出最优解中各变量的值:x1=1.272727,x2=1.636364。
Reduced Cost 值列出最优单纯形表中判别数所在行的变量的系数,表示当变量有微小变动时,目标函数的变化率。
其中基变量的reduced cost值应为0,对于非基变量xj,相应的reduced cost值表示当某个变量xj 增加一个单位时目标函数减少的量( max型问题)。
本例中此值均为0。
SLACK OR SURPLUS值给出约束条件的松驰变量或剩余变量的值。
lingo教程(完整版)

LINGO 是用来求解线性和非线性优化问题的简易工具。
LINGO 内置了一种建立最优化模型的语言,可以简便地表达大规模问题,利用LINGO 高效的求解器可快速求解并分析结果。
§1 LINGO 快速入门当你在windows 下开始运行LINGO 系统时,会得到类似下面的一个窗口:外层是主框架窗口,包含了所有菜单命令和工具条,其它所有的窗口将被包含在主窗口之下。
在主窗口内的标题为LINGO Model – LINGO1的窗口是LINGO 的默认模型窗口,建立的模型都都要在该窗口内编码实现。
下面举两个例子。
例1.1 如何在LINGO 中求解如下的LP 问题:0,6002100350..32min 212112121≥≤+≥≥++x x x x x x x t s x x在模型窗口中输入如下代码: min =2*x1+3*x2; x1+x2>=350; x1>=100;2*x1+x2<=600;然后点击工具条上的按钮 即可。
例1.2 使用LINGO 软件计算6个发点8个收点的最小费用运输问题。
产销单位运价如model:!6发点8收点运输问题;sets:warehouses/wh1..wh6/: capacity;vendors/v1..v8/: demand;links(warehouses,vendors): cost, volume;endsets!目标函数;min=@sum(links: cost*volume);!需求约束;@for(vendors(J):@sum(warehouses(I): volume(I,J))=demand(J));!产量约束;@for(warehouses(I):@sum(vendors(J): volume(I,J))<=capacity(I));!这里是数据;data:capacity=60 55 51 43 41 52;demand=35 37 22 32 41 32 43 38;cost=6 2 6 7 4 2 9 54 95 3 8 5 8 25 2 1 9 7 4 3 37 6 7 3 9 2 7 12 3 9 5 7 2 6 55 5 2 2 8 1 4 3;enddataend然后点击工具条上的按钮即可。
lingo教程

lingo入门教程之一--- 初识lingo lingo对于一些线性或者非线性的规划,优化问题非常有效首先介绍一下,在lingo中运行程序时出现的页面(在工具栏点击类似靶子一样的图标便可运行)Solver status:求解器(求解程序)状态框Model Class:当前模型的类型:LP,QP,ILP,IQP,PILP,PIQP,NLP,INLP,PINLP(以I开头表示IP,以PI开头表示PIP)State:当前解的状态: "Global Optimum", "LocalOptimum", "Feasible", "Infeasible“(不可行), "Unbounded“(无界), "Interrupted“(中断), "Undetermined“(未确定)Object:解的目标函数值Infeasibility:当前约束不满足的总量(不是不满足的约束的个数):实数(即使该值=0,当前解也可能不可行,因为这个量中没有考虑用上下界命令形式给出的约束)Iteration:目前为止的迭代次数Extend solverstatus:扩展的求解器(求解程序)状态框Solver type:使用的特殊求解程序:Bestobj :目前为止找到的可行解的最佳目标函数值Objbound:目标函数值的界Steps:特殊求解程序当前运行步数:Active:有效步数Variables(变量数量):变量总数(Total)、非线性变量数(Nonlinear)、整数变量数(Integer)。
Constraints(约束数量):约束总数(Total)、非线性约束个数(Nonlinear)。
Nonzeros(非零系数数量):总数(Total)、非线性项系数个数(Nonlinear)。
GeneratorMemory Used (K) (内存使用量)ElapsedRuntime (hh:mm:ss)(求解花费的时间)运行之后页面介绍(这里的运行界面并不是与上面的运行过程中出现界面一致,即并非来自于同一个程序运行出现)第一行表示在经过457次迭代后得到局部最优解第二行给出该局部最优解的具体值下面给出取局部最优值时,x1 x2的具体取值这里求解的是局部最优解,如果想求出全局最优解,可以进行页面设置:lingo --> option --> global solver --> 勾选use global solver对于运行结果也可以另存为,格式一般为ldt,因为有时候对于求解一个问题,或许需要运行很久才可以得出结果,所以没必要每次为了看结果都运行,而是运行成功一次后便把结果保存下来注意事项LINGO总是根据“MAX=”或“MIN=”寻找目标函数;程序语句的顺序一般不重要,既可以随意调换;程序运用函数时都是以@开头;程序中的变量默认为非负数,想要改变变量类型必须有相应函数调整程序中变量不区分大小写;语句必须以分号结尾;注释以!开始,且注释语句后面必须也有分号,注释默认注释到第一个分号处,意思是分号前面会全部被注释掉。
lingo入门教程(共55张)

3 3
A2
8 67
A3 4
7
B2
8 9
5 C2 6
T
第18页,共55页。
分析
(fēnxī)
6 A1 5 6
B1 6 C1
S
3 3
A2
8 67
A3 4
7
B2
8 9
5 C2 6
T
假设从S到T的最优行驶路线 P 经过城市C1, 则P中从S到C1的子路也一定 是从S到C1的最优行驶路线; 假设 P 经过城市C2, 则P中从S到C2的子路也一定是从S到C2的最优行驶路线. 因此, 为得到从S到T的最优行驶路线, 只需要先求出从S到Ck(k=1,2)的最 优行驶路线, 就可以方便地得到从S到T的最优行驶路线.
第19页,共55页。
分析
(fēnxī)
6 A1 5 6
B1 6 C1
S
3 3
A2
8 67
A3 4
7
B2
8 9
5 C2 6
T
此例中可把从S到T的行驶过程分成4个阶段,即 S→Ai (i=1,2 或3), Ai → Bj(j=1或2), Bj → Ck(k=1或2), Ck → T. 记d(Y,X)为城 市Y与城市X之间的直接距离(若这两个城市之间没有道路直 接相连,则可以认为直接距离为∞),用L(X)表示城市S到城市
L B2 minL A1 5, L A2 6, L A3 4 7 L A3 4; L C1 minL B1 6, L B2 8 15 L B2 8;
略2去),最小运量136.2275(吨公里)。
1
3
5
0
0
1
2
3
4
5
6
lingo教程_

修改运行时的 内存限制
激活敏感 性分析
LINGO软件菜单——WINDOW
1. 命令行窗口(Open Command Window ) 从窗口菜单中选用“Open Command Window”命令或直接按Ctrl+1可以打开LINGO 的命令行窗口。在命令行窗口中可以获得命 令行界面,在“:”提示符后可以输入LINGO的 命令行命令。 2. 状态窗口(Status Window) 从窗口菜单中选用“Status Window”命 令或直接按Ctrl+2可以打开LINGO的求解状 态窗口。 3. 回到模型窗口(Sent To Back) Ctrl+B 4. 关闭所有窗口(Close All) Ctrl+3 5. 并行放置窗口 (Tile) Ctrl+4 6. 层叠放置窗口(Cascade) Ctrl+5 7. 放置图标(Arrange Icons) Ctrl+6
解的目标函数值
目前为止的 迭代次数
• 运行状态窗口
使用的特殊求解程序 : B-and-B (分枝定界算法) Global (全局最优求解程序) Multistart(用多个初始点求解的程序)
LINGO软件菜单——EIDT
1. 恢复(Undo) 从编辑菜单中选用“恢复”(Undo)命令或按Ctrl+Z组合键,将撤销上 次操作、恢复至其前的状态。 2. 剪切(Cut) 从编辑菜单中选用“剪切”(Cut)命令或按Ctrl+X组合键可以将当前选 中的内容剪切至剪贴板中。 3. 复制(Copy) 从编辑菜单中选用“复制”(Copy)命令、单击“复制”按钮或按Ctrl+C组 合键可以将当前选中的内容复制到剪贴板中。 4. 粘贴(Paste) 从编辑菜单中选用“粘贴”(Paste)命令、单击“粘贴”按钮或按Ctrl+V 组合键可以将粘贴板中的当前内容复制到当前插入点的位置。 5. 粘贴特定..(Paste Special。。) 与上面的命令不同,它可以用于剪贴板中的内容不是文本的情形. 6. 全选(Select All) 从编辑菜单中选用“Select All”命令或按Ctrl+A组合键可选定当前窗口 中的所有内容。 7. 匹配小括号(Match Parenthesis) 从编辑菜单中选用“Match Parenthesis”命令、单击“Match Parenthesis”按钮或按Ctrl+P组合键可以为当前选中的开括号查找匹配的 闭括号。 8. 粘贴函数(Paste Function) 从编辑菜单中选用“Paste Function”命令可以将LINGO的内部函数粘贴 到当前插入点。
《Lingo教程》课件

学习面向对象编程的基本概念和Lingo中的类、对象和继承。
2
继承和多态
掌握继承和多态的概念,以及如何使用它们设计灵活可扩展的程序。
3
使用Lingo进行网络编程
了解如何使用Lingo进行网络通信和数据交换。
4
错误处理
学习如何处理异常和错误,以确保程序的稳定性和利用Lingo开发图形用户界面, 创建直观、互动和易于使用的应 用程序。
游戏制作
使用Lingo创建令人兴奋的游戏, 实现各种令人惊叹的游戏效果。
多媒体应用
探索Lingo在音频、视频和动画 等多媒体应用领域的应用。
Lingo开源社区
Lingo开源社区介绍
了解Lingo开源社区,与其他开发者交流经验和分享资源。
Lingo社区资源分享
探索Lingo社区分享的各种资源,如代码库、教程和文档。
Lingo的应用领域
Lingo常用于游戏开发、动画制作、多媒体交互和图形用户界面设计等领域。
Lingo环境配置
安装Lingo
下载并安装Lingo以开始您的编 程之旅。
Lingo开发环境介绍
了解Lingo的开发环境,掌握各 种工具和功能。
Lingo常用工具
收集有用的Lingo工具,以加快 您的开发效率。
总结
通过本次《Lingo教程》PPT课件,您应该对Lingo的概述、环境配置、基础和高级语法、实例应用、开源社区 以及Lingo的现状和未来有了更深入的了解。希望这些知识能够对您的Lingo开发之旅起到帮助和指导作用。
基础语法
1 变量和常量
2 数据类型
学习如何声明和使用变量和常量以存储数据。
掌握Lingo的不同数据类型,如字符串、数字 和布尔值。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
全国第四届研究生数学建模竞赛题 目 邮政运输网络中的邮路规划和邮车调度优化研究摘 要本文借助于图论典型算法(如Flody算法),以及运筹学图上作业法等典型手法,深入研究了一类曲面上的带附加条件的多路巡回问题。
分别回答了县区、市区邮政网络的邮路规划调度问题及其关于县区部分边界变动、和县区邮政中心变化引起的灵敏度分析。
并且针对每一问建立了相应的优化模型。
针对第一问、先回答了车辆个数的下确界,并用试探算法明确了三个子巡回可行,并针对三个子巡回设计了新颖的算法,先将问题松弛,将约束条件转化为准则库,找寻到经过县局的满足荷载限制的子巡回,然后定义每个子巡回的标示码、校验码、在程序中成功定义了映射,实现了三个子巡回的邮政网络划分,找到了问题的可行解域,然后以空载费用为目标函数,找到了空载费用为55.67的最优方案。
且该方案通过了检验。
针对第二问,针对市、县两级邮政网络图的特点,寻求局优解,借助于市区的最小生成树、以及市局、县局的最短路径,从中心向四周辐射,安排各子巡回,以区级车辆往返时间特点为约束,以子巡回的空余时间为罚函数,以环形回路为主兼顾辐射型回路,优先安排快车巡回,设计了相应的算法,并且给出了初始方案,且利用我们的方法调整方案,得到满意解,需要用13辆邮车完成全区的邮件任务,全区的总邮路路程为2453公里。
针对第三问,我们以减少邮路车辆为目标,研究了县区边界需要调整的点的特点,利用邻接区域的罚函数较大的回路破圈,重新构造子巡回。
既满足时间约束,又达到了降低费用和减少邮路车辆的目的。
通过我们的工作,可以减少两个邮车,总路程变比第二问减少了258公里针对第四问,我们定义了区域中心即为到达所有各点的距离之和为最小的点,但是邮政网络中的中心不仅取决于距离,同时由它的度数以及周围区域点的度数综合决定,我们利用Mthematica和Lingo中的tsp模板,借鉴第二问的表上作业法,和第三问灵敏度分析的经验,减少了两辆邮车,减少了284公里的邮路。
参赛队号 1029001 参赛学校 中国矿业大学参赛队员姓名 姜英姿 卓金武 秦 健一、问题重述邮路是邮政运输网络的基本组成单元,它是指利用各种运输工具按固定班期、规定路线运输邮件,并与沿线有交接频次的邮政局、所交换邮件总包所行驶的路线。
邮路的结构形式有三种:辐射形、环形和混合形。
辐射形邮路可以缩短运递时间,加快邮运速度。
但它的联系点较少,需用的运输工具较多,所耗费用较大。
环形是不走重复路线,联系点较多,运输工具的利用率高,运费也较省。
但是邮件送到最后几个交接点的时间较长。
混合型二者兼有。
某地区的邮政局分为地市局、县局和支局三级机构。
该地区的邮政运输网络由区级邮政运输网和县级邮政运输网构成。
区级邮政运输网由从地市局出发并最终返回地市局的区级邮车所行驶的全部邮路构成,县级邮政运输网由从县局出发并最终返回县局的县级邮车所行驶的全部邮路构成。
时限与成本是邮政运输问题的两个重要指标。
时限是指邮电部规定的邮件、报刊处理、传递的最大时间限制,时限关系到邮政通信质量的好坏;成本影响着企业的经营。
为使邮政企业实现低成本运营和较高的服务质量,我们需要对该地区的邮政运输网络进行重构,确定合适的邮路规划方案并进行邮车的合理调度。
为了满足邮政的时限要求,必须尽可能地保证各县局、支局在营业时间内收寄的多数邮件能当天运送回地市局,以及每天到达地市局的多数邮件能当天运送到目的地县局、支局。
该地区从地市局到县局每天两班车,从县局到支局每天仅有一班车。
该地区的邮政运输流程及时限规定如下:Step1:区级第一班次邮车从地市局D出发将邮件运送到各县局X i和沿途支局,并将各县局X i和沿途支局收寄的邮件运送回地市局D;区级第一班次邮车出发时间必须在06:00之后,返回地市局D时间必须在11:00之前。
Step2:县局X i将当天区级第一班次邮车及前一天的区级第二班次邮车所送达的本县邮件进行集中处理,按寄达支局装上相应的县级邮车;县局X i对邮件的集中处理时间为1小时(包括邮件的卸装、分拣封发等处理时间)Step3:各县级邮车将邮件运送到其负责的支局并将这些支局收寄的邮件运送回县局X i;Step4: 区级第二班次邮车从地市局D出发将邮件运送到各县局X i和沿途支局,并将各县局X i收寄的邮件(包括当日各县级邮车运回县局X i的邮件)和沿途支局收寄的邮件运送回地市局D;请注意区级第二班次邮车在县局X i卸装完邮件后的出发时间必须在县局X i的全部县级邮车返回县局并集中处理1小时以后,最终返回地市局D的时间必须在18:00之前。
假设区级两个班次邮车的行驶路线相同,要求区级邮政运输网必须至少覆盖该地市附近的16个支局Z58, Z59, ……, Z73和5个县局X1,……,X5。
各县级邮政运输网必须覆盖本县内区级邮车不到达的支局。
该地区邮局间公路网分布已知,并且县级邮车平均时速为30km/h,区级邮车的平均时速为65km/h,邮车在各支局卸装邮件耗时5分钟,在各县局卸装邮件耗时10分钟。
问题1:以县局X1及其所辖的16个支局Z1, Z2, ……, Z16为研究对象,假设区级第一班次邮车08:00到达县局X1,区级第二班次邮车16:00从县局X1再出发返回地市局D,若每辆县级邮车最多容纳65袋邮件,试问最少需要多少辆邮车才能满足该县的邮件运输需求?同时,为提高邮政运输效益,应如何规划邮路和如何安排邮车的运行?问题2:采用尽可能少、尽可能短的邮路可以减少邮政部门车辆和人员等的投入,从而显著降低全区邮政运输网的总运行成本。
考虑投入车况较好的邮车,通常每条邮路只需要一辆邮车即能满足运载能力要求,试问应如何构建该地区的邮政运输网络(县的划分不能变更),请你给出邮路规划和邮车调度方案。
请注意邮车的调度必须满足上文中有关该地区的邮政运输流程及时限规定。
问题3:考虑到部分县与县交界地带的支局,其邮件由邻县县局负责运送可能会降低全区的运行成本,带来可观的经济效益。
若允许在一定程度上打破行政区域的限制,你能否给出更好的邮路规划和邮车调度方案?(在此同样不必考虑邮车的运载能力的限制,每条邮路的运行成本为3元/公里)问题4:假设县局X 1,……,X 5均允许迁址到本县内任一支局处,同时原来的县局弱化为普通支局。
重新为各个县局选址,陈述迁址理由并以书面材料形式提交省局网运处。
二、模型假设2.1 模型1的假设1) 区级邮车不经过县局1X 所辖的支局,也就是说1X 局的县级邮车必须经过其所辖的16个支局;2) 该县局邮路可以采用任何一种邮路结构形式(辐射形、环形或混合形);3) 为保证邮车及邮件的安全,在实际运输邮件的过程中邮车绝对不可以超载;4) 邮车到达支局后,先将寄达该支局的邮件卸下,再将该支局收寄的邮件装上,整个邮件交换过程为5分钟。
2.2 模型2的假设1) 如果区级邮车经过某县局所辖的支局,那么该县局的邮车就不再经过这些个支局;2) 该地区的邮路可以采用任何一种邮路结构形式(辐射形、环形或混合形);3) 区级第二班次邮车的行驶路线同第一班次邮车的行使路线完全相同,也需要在沿途经过的支局停车,完成与这些支局的邮件交换过程;4) 邮车到达支局后,先将寄达该支局的邮件卸下,再将该支局收寄的邮件装上,整个邮件交换过程为5分钟;5)不考虑邮车的超载情况。
6)市局的第一次班车都是从6:00出发,第二次班车都是在18:00点返回。
2.3 模型3的假设1) 县局邮局可以负责其他县局所辖支局的邮件运输问题,市局所辖的支局还必须由市局邮车来负责。
2) 其他假设同问题2的假设。
2.4 模型4的假设1) 县级邮局可以设在原县级邮局所辖的任意支局上,也可以是原县级邮局所在的邮局;2) 县级邮局不可以打破行政区域限制运送邮件,也就是说新的县级邮局仍负责其所辖的各支局的邮件运送。
3) 其他假设同问题2的假设。
三、符号说明x ——表示节点之间的连通情况ij Dist ——表示从节点i 到节点j 的路程ij ER ——表示从节点i 到节点j 的过程中邮车的空车率i Chan ——表示邮车在过节点i 后车上邮件的变化量i Up ——表示节点i 处收寄的邮件i Down ——表示寄达节点i 处的邮件p ——表示邮路的运行成本k U ——表示k 局必须负责的支局集合四、模型准备、分析本课题阐述的是曲面上多个附加条件回路(巡回)的实现问题。
某些算法(如蚁群算法)需要网络图中各点的精确坐标,而实际上,本题只给出了相对位置,我们认为如果利用Phtoshop 等软件将图形中的点生成绝对坐标会有一定的误差可能会影响结果。
为此我们找寻新的算法。
注:比如说,根据图中的点的位置,4547,Z Z 和51Z 三个点构成明显的平面三角形。
则边4547Z Z 的长度和边4751Z Z 的长度之和大于边4551Z Z 的长度。
但是4547475145511119Z Z Z Z Z Z +=+=,显然不满足平面上图形的性质。
而且表中还有很多类似的不满足平面上的图形性质的点。
故我们可以推断,题目中给出的图不是在平面上的。
4.1 数据前期预处理4.1.1生成邻接距离矩阵利用题目所给的条件,利用软件Mathematica6.0生成任意两点的距离矩阵命名为:dist 文件格式为txt 或xls。
注:为方便Lingo 可能的计算,我们将无穷大取为100004.1.2任意子图的距离矩阵生成器 newmatrix.nb为方便后续的讨论,我们利用软件Mathematica6.0定义了可以生成任意子图的距离矩阵生成器名称newmatrix.nb ,它可以计算出任何子图的邻接矩阵。
4.1.3生成最小距离矩阵 Mind.xls我们利用Flody 算法,计算出任意两点间的最小距离。
以方便后期的计算。
4.1.4生成x1县区的距离矩阵 dist1.xls为方便问题一求解先生成生成x1县区的距离矩阵4.1.5生成各区域各自的距离矩阵 disti.xlsdisti i=1 (6)4.1.6生成tsp 问题的Lingo 模板 tsptiaoshimoban.lg4由于我们在某些情形下使用矩阵生成器和tsp 问题的模板,我们将Lingo 的tsp 模板的数据路径始终指定为:DIST = @ole('e:\juzhen\santiao4','d');4.2 问题一分析问题1仅仅讨论地区1X 的邮路调度,但这里需要考虑车辆的个数限制,可以根据邮件总量和邮车满载量来确定邮车数量的下限。
县局的邮车需要把寄达局为16个支局1216,,Z Z Z L 的所有邮件寄达至相应的支局,根据题目中给的数据,可以得到,县局邮车需要从县局运出的总邮件量为176袋,而每辆县级邮车最多容纳65袋邮件,且176 2.7165≈,所以该县局至少需要在县局装3次邮件。