第四章 常用生产系统模型

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

LOGO
定义如下决策变量:
MinZ cij xij
i j
(4-1)
xij 1 i V j i xij 1 j V i j s.t. xij | S | 1 S V i , jS x {0,1} i, j V ij
LOGO
(3)r-Opt算法 r-Opt算法一般是对构造算法和插入算法产生的线路进行改 进的算法。主要用于对称型旅行商问题的求解。核心思想是 对给定的初始回路,每次通过交换r条边来改进当前的解。 通常,r增大可以使改进的结果更优秀。但是,通过大量的 仿真实验,发现3-Opt比2-Opt好,但是4-Opt和5-Opt却并不 比3-Opt优秀,但计算量却增大很多。
4.2.2 背包问题的模型和分类
LOGO
1.背包问题的模型 背包问题可以描述为:有n物品,一个最大承受重量为C的 背包,每件物品的价值是 p j ( j 1,2, , n)。物品的重量是 wj ( j 1,2, , n) 。要求在不超过背包最大承受重量的前提下,使装载的物品 总价值最高。数学模型如下: n (4-3) max z px
第四章 常用的生产系统模型
4.1 4.2 4.3 4.4 4.5 4.6 4.7
LOGO
TSP问题模型
背包问题模型 指派问题模型 切割与布局问题模型 车辆路径问题模型 生产调度问题模型
项目调度问题模型
思考与练习题
4.1 TSP问题模型
4.1.1 TSP问题概述
LOGO
旅行商问题( Traveling Salesman Problem , TSP )又 称旅行推销员问题、货郎担问题,简称 TSP 问题,是最基本 的组合优化问题。该问题是在寻求单一旅行者由起点出发,
通过所有给定的需求点之后,最后再回到原点的最小路径成
本。
4.1.2 TSP问题的模型
LOGO
对于n个城市的TSP问题,总共有 条巡回线路。当n很大时, 线路的数目将成为天文数字,此时想要精准的求出其全局最优 解,以目前的技术条件来说是十分困难的。
TSP问题的数学模型:在一个正权图 G=(V,E)中,顶点的集合为 V={1,2,…..n},各点之间的连线集合为 E,已知各顶点连线之 间的距离( cij 0, i, j V),TSP要求G的哈密尔顿(Hamilton)回路 上的消耗达到最小值。
Step1:随机取城市 O 作为起点 Step2:找到离 O 最近的节点 l ,构成局部线路 O- l -O。 Step3:从未访问的点中,找到距离已形成的局部线路上最近的点 v 。 Step4:在局部线路中寻找待插入的弧 (i, j ) , 使其满足 civ cvj cij 最小, 将 v 插入 (i, j ) 之间。 Step5:返回 Step3,直到所有的节点被访问。
LOGO
LOGO
2. 贪婪算法 贪婪算法通过一系列的选择得到问题的解,在每次都做出 在当前状态下看来是最好的选择,通过局部最优达到整体 最优。 贪婪算法类似于动态规划法,在对问题求解时,首先把问 题分解成若干个子问题,它从上而下,依次利用贪婪准则。 通过每步的贪婪选择就可得到一个问题的最优解。 贪婪算法与动态规划法的不同之处在于:贪婪算法的当前 选择可能要依赖已经做出的所有选择,但不依赖于有待于 做出的选择和子问题。而动态规划法的当前选择不仅依赖 已经做出的所有选择,而且还依赖于有待于做出的选择和 子问题。
Step1:根据一定的规则求出每个顶点的候选顶点集,人为地规定该顶点只能和候选集中 的顶点相连接 Step2:先构建一个初始可行解。 Step3:对每一个顶点轮流进行 r-opt 交换,直到无法改进当前解为止。 Step4:输出当前的解作为结果。
LOGO
图 4-5 3-Opt 的示意图
4.1.5TSP的应用领域 TSP问题除了广泛应用在与路径相关的问题中,如送餐问 题、快递取送问题等,还在望远镜伺服电机控制、搜索太 空行星、人类基因测序等领域有应用。 TSP应用最为广泛的则是在生产制造领域,如印刷电路板 的钻孔问题。印刷电路板上有大量小孔,用来装载计算机 芯片和导通各层电路板之间的连接。 利用TSP问题的高效算法,可以将电路板生产线的产量提 高10%左右。与此类似的,半导体芯片内的激光刻蚀点位 的优化,也可以转化为TSP问题,该问题的规模相当于10 万个城市的TSP问题。此外,数控机床刀具的切割线路优 化、半导体器件的测试、3D打印设备的雕刻线路优化等问 题,都可以转化为TSP问题。
LOGO
(1)贪婪算法 贪婪算法首选随机选择一个城市作为起点,然后依次从未访 问的城市中,选择离当前城市最近的城市作为下一个访问地。 贪婪算法的流程如下所示: Step1:随机选择一个城市i作为起点。 Step2:从未访问的城市中选择距离i最近的城市j作为下一 个要访问的城市。 Step3:将j作为当前城市,从未访问的城市中选择距离j最 近的城市z作为下一个要访问的城市。 Step4:重复上述过程,直到所有城市都被访问。
cij =c ji
非对称型旅行商问题可以化为对称型旅行商问题,用对称 型的方法求解。 TSP问题中,三角形不等式在很多情况下是自动满足的。
cij 是边任意三点 所谓闭包,是指是{1, 2,..., n} 的完全图中, 之间距离满足三角形不等式时,该问题称为三角型旅行 商问题 (i, j) 的距离,则cij 是 i j 的最短路长。当 cij 是欧 氏距离时,则称为欧氏距离的旅行商问题。
LOGO

LOGO

4.1.4 TSP问题的求解算法
LOGO
1.求解算法概述 目前针对TSP问题求解的算法大致可以分为三类:精确算法、 启发式算法和智能优化算法。精确算法又称为最优化算法, 指能够通过有限的计算和推理得到优化问题的最优解的算法。 研究的比较多的精确算法有: 分支定界法(Branch and Bound Approach) 割平面法(Cutting Planes Approach) 网络流法(Network Flow Approach) 动态规划法(Dynamic Programming Approach) 这一类算法能够得到问题的精确解,计算复杂度很大,只能 用来求解小规模的问题,较大规模的问题求解时间过长,因 而不能很好地满足实际应用的需要。
4.2.3 背包问题的求解算法 1.递归法 假设容量大小为C的背包,对于可用的每一项i,可以把 i放入背包的同时使其他项有最优方式装载,来得到一种最 优解。假设那些项都是大小和值的结构,并由typedef struct{int size; int val;} Item; 定义。同时,有一个类型为 Item的长度为N的数组。对于每一个可能项,递归计算包含 那一项得到的最大值,然后找出所有这些值的最大值。算法 的伪代码描述如下:
4.3.2 指派问题的分类
LOGO
贪婪算法求解背包的过程是: 1. 先将物品按价值密度的值降序排列, 2. 然后依次将物品放入背包内,直至超出背包最大容纳量 为止。 算法的描述如下:.1 指派问题概述 在生产管理中,决策者总是希望能够对人员进行最佳分 配,以最大程度地发挥他们各自的工作效率。指派问题是指 在满足特定指派要求的条件下,优化匹配两个或多个集合, 使指派方案总体效果最佳。指派问题发展出了很多变型,如 瓶颈指派问题,广义指派问题,二次指派问题,半指派问题 等等。 应用领域:车间调度计划和运输调度计划。 车间调度计划中:给机器指派任务、给工人安排作业、给机 器安排工人等; 运输调度计划中:给仓库安排车辆、给客户指派运输车辆、 给客户指定供货工厂等。 还用于设备布置问题、资金预算计划、机场停机位置指派等。
LOGO
(3)多约束背包问题 多约束背包问题(Multi-constrained Knapsack Problem, MKP)也称为多重背包问题或者多维背包问题。在多约束背包 问题中,有多个背包存在,同时带有约束条件(重量、尺寸、 可靠性等)。这时不仅要确定选择哪个物品放入背包,而且 要确定放入哪个背包。实际中的资源配置问题、货物装载问 题等都是该问题的应用。例如,在资源受限的情况下,生产 哪些产品的组合能使利润最大的问题。产品相当于物品、资 源相当于不同的背包、产品消耗的资源相当于放入不同背包 时所表现出来的重量。
LOGO
(2)最邻近插入法 插入型算法一般思想为:通过某种插入方式选择插入边 (i, j) 和插入点 k ,然后将 k 插入 (i, j)之间,形成线路{ , i, k , j, } 。 重复上述过程形成回路。在具体实施中,可以将出发点取遍 各点而得到多个解,从中选择最好的一个,但这样增加了算 法的时间复杂度。对于最邻近插入法,即选择最邻近的点插 入,具体算法步骤如下:
LOGO
4.2背包问题模型
LOGO
4.2.1背包问题概述 背包问题(Knapsack Problem)是典型的组合优化问题, 是NP完全问题。 背包问题在实际生活中有着广泛的应用,例如资源分配、 预算控制、项目选择、货仓装载、工厂材料切割、投资决 策等问题。在密码学、商业、组合数学和计算复杂性理论 等领域中常常出现此类问题的变形。 背包问题尽管结构形式简单,但它却具有组合爆炸的性质, 而且许多优化问题都可以通过解一系列背包子问题来解决。

j 1 j
j
j
s.t.
x j 0 or 1
w x
j 1 j
n
C
, n
(4-4)
(4-5) x j =1,否则为0。由于 x j 其中x j是决策变量,当物品j被选中, 的取值只能是0或者1,因此该问题也称为0-1背包问题。
j N 1, 2,
LOGO

LOGO
(2)多选择背包问题 多选择背包问题(Multi-choice Knapsack Problem,MKP), 有时也称为分组背包问题,是一种有附加约束条件的背包问 题,该问题带有互不相关的多选择约束。即将物品分成m 组, 每组中的物品互相冲突,从每组中只能选择一种物品,在所 选物品的总重量不超过的背包重量约束的情况下,使得背包 中的物品总价值最大。在实际的生产中,产品结构的“质量 一成本”优化问题、汽车组装问题都可以归结为该问题。
LOGO
(4)多约束多选择背包问题 该问题是问题(2)和(3)的混合问题,不仅有背包的 约束还有物品选择的约束,是极难求解的问题。 (5)有依赖的背包问题 在此类背包问题中,物品之间存在某种“依赖”关系。 假如物品A依赖于B,在选择物品时,如果选择了物品A那么 必须选择物品B。如果A、B互相依赖,那么当选择B时,也必 须选择A。在有依赖的背包问题中,物品由若干主件(不依 赖于任何别的物品的物品)和若干附件(依赖于某主件的物 品)组成。
LOGO

LOGO
2.启发式算法介绍 TSP问题的启发式算法有很多,大致分为三类: 构造启发式算法:最典型的是贪婪算法和Clark&Wright算 法 插入启发式算法:最邻近插入法、最远插入法、最小插入 法等 改进启发式算法:主要是对前两种产生的线路进行改进, 主要有2-Opt、3-Opt、Or-Opt等。
(4-2)

xij是决策变量,当从城市i到j的边在路线上时, xij =1,否则
为0。前两个约束意味着对每个顶点而言,仅有一条边进 出,第三个约束则保证了没有任何子回路解的产生。其中 S是V的非空子集,|S|表示集合S中所含图G的顶点个数。
4.1.3 TSP问题的分类

LOGO
LOGO
(1)根据距离矩阵分类
int knap(int cap,int i) { int k,space max,t; for(k=i, max=0;k<N,k++) if((space=cap-items[i].size)>=0) if(t=knap(space,i+1)+items[i].val)>max) max=t; return max; }
相关文档
最新文档