基于Beam Search算法的集装箱装载问题研究
[ 1 ] 呼士召, 陈钢 , 周巍 , 潮 铸 .“ 韦森 特 ” 台风 期 间广 东 电 网调 度 应 急 处 理 及 反 思E J ] .广 东 电力 , 2 O 1 3 , 2 6 ( 6 ) : 1 — 4 .
使用复合块 , 这是获得较高装载率的关键因素之一 。
择 函数 和完 整装 载方案 的评 价 函数 , 计算效 果 优 于 R e n
等 人 提 出 的 基 于 树 搜 索 的方 法 。 目前 , 满足 C 和 C 约
束 的集装 箱 装 载 问 题 的 最 好 算 法 是 I . Ar a y a [ 3 等 人 提
基于 c o v e r r e p r e s e n t a t i o n方 法 而 不 是 c u t r e p r e s e n t a —
摘 要 : 针对具有优先装载约束 的集装箱装载 问题 , 对P a r t i a l B e a m S e a r c h算法进行 了改进 。在搜 索过程 中去 除相 似 中间状 态, 增加 了搜索过程的 多样性 , 提 高了算法的搜 索效率。实验 结果证 明了算法的有效性。
关键词 : 集 装 箱 装 载 问题 ; B e a m S e a r c h算 法 ; 优先装载约束 ; 搜 索 过 程 多样 性
D OI : 1 0 . 1 1 9 0 7 / r j d k . 1 5 1 2 9 2
中 图分 类 号 : TP 3 1 9
文 献标 识 码 : A
文章编号 : 1 6 7 2 — 7 8 0 0 ( 2 0 1 5 ) 0 0 7 — 0 1 0 6 — 0 3 本 文 针 对 具 有 优 先 装 载 约 束 的 集装 箱 装 载 问题 , 改 进
分别基于简单块和复合块 , 各 用 总 体 计 算 时 间 的 一 半
来 计 算 装 载 方 案 。在 计 算 过 程 中不 仅 使 用 简 单 块 , 同时 也
中产生 的相 似 中 间状 态 来 提 高 搜 索 过 程 的多 样 性 , 进 而提高 搜索 效率 。
及 报 送 的 实用 性 和 可 靠 性 。 电 网 异 常 信 息 自动 统 计 与 报 送 统 计 平 台 的建 设 为 调 度 员 和 管 理 部 门 及 时 掌 握 电 网 故 障信 息 , 快速准确作 出调度决 策提供 了可靠 的工具 , 对 保 障 台 风 等 自然 灾 害期 间 电 网安 全 稳 定 运 行 有 着 重 要 意 义 。
0 引言
在集 装箱 的 实 际装 载 过 程 中, 除 了 考 虑 最 大 化 空 间利 用率 之 外 , 还要考虑多种约束 因素, 如: 货 物 的 摆 放方向、 某 些货 物 的 隔离 性 、 货物的承载能力、 货 物 装 载 的稳 定 性 、 装 载 的优 先 级 、 网技 术 ,2 0 1 2 , 4 0 ( 1 ) : 9 1 — 9 3 .
J 3 J P AND EY A K, B HUY AN, P M0HAP T RA D P . C o mp o n e n t b a s e d
e xc e p t i o n h a n d l i n g f r a me wo r k f o r SOA b a s e d s e r v i c e s r C] .2 0 1 4
了P a r t i a l B e a m S e a r c h算 法 , 通 过 去 除 搜 索 过 程 中 生 成 的
相 似 中间 状 态 来 增 加 搜 索 过 程 的 多 样 性 , 进 而 提 高 算 法 的 搜索效率 。
1 改进 的具 有 优 先 装 载 约 束 的 P a r t i a l B e a m S e a r c h算 法
t i o n 方 法 进 行 装 载 空 间表 达 , 这 是 获得 较 高 装 载 率 的 关 键
因素 之 一 。
1 . 2 货 物 块 种 类
出的基 于 B e a m S e a r c h的算法 , 该算 法 的最 主要 特 点 是
运用 B e a m S e a r c h算 法 进 行 搜 索 时 , 通 过 去 除 搜 索 过 程
第1 4 卷 第7 期
2 0 1 5 年 7 月
软 件 导 刊
So f t wa r e Gu i d e
VO I .1 4NO .7
J u l y. 201 5
基于 B e a m S e a r c h算 法 的集 装 箱装 载 问题 研 究
杨 会 志
( 电子科技 大学 中山 学院 计 算机 学 院 , 广 东 中山 5 2 8 4 0 2 )
根据 We n b i n Z h u l 4 等 提 出 的 集 装 箱 装 载 算 法 分 析 框 架, 改 进 的具 有 优 先 装 载 约 束 的 P a r t i a l Be a m S e a r c h算 法
可 以从 以下 6个 方 面 进 行 描 述 。
1 . 1 空 间 表 达 方 法
前, 针 对 货 物 装 载 过 程 中 具 有 优 先 装 载 约 束 的 研 究 成
果 还 比较少 , 主 要 有 Re n _ 】 等 人 提 出 的 基 于 树 搜 索 的 方 法, 在该 方 法 中 , 采 用 5个 评 价 函 数 选 择 简 单 块 。 Ni n g
Wa n g 等人 提 出的基 于 P a r t i a l B e a m S e a r c h的 方 法 , 该 方 法改进 了 B e a m S e a r c h算 法 , 定 义 了 更 加 高 效 的 块 选
基于Beam Search算法的集装箱装载问题研究
基于Beam Search算法的集装箱装载问题研究
杨会志
【期刊名称】《软件导刊》
【年(卷),期】2015(014)007
【摘要】针对具有优先装载约束的集装箱装载问题,对Partial Beam Search算法进行了改进.在搜索过程中去除相似中间状态,增加了搜索过程的多样性,提高了算法的搜索效率.实验结果证明了算法的有效性.
【总页数】3页(P106-108)
【作者】杨会志
【作者单位】电子科技大学中山学院计算机学院,广东中山528402
【正文语种】中文
【中图分类】TP319
【相关文献】
1.基于改进遗传算法的集装箱装载优化问题研究 [J], 于金;金乐;杜海璐
2.基于禁忌算法的多约束集装箱装载问题研究 [J], 屈援;王雪莲
3.基于混合遗传算法的多约束集装箱装载问题研究 [J], 胡瑞;丁香乾;张峰;魏旭
4.基于混合遗传算法的航材集装箱装载问题研究 [J], 刘硕;崔崇立;宗彪
5.基于Beam Search算法的集装箱装载问题研究 [J], 杨会志
因版权原因,仅展示原文概要,查看原文内容请购买。
装载问题5种项目解决方案
.. . .. . ..算法分析与设计2016/2017(2)实验题目装载问题5种解法学生姓名学生学号. 专业学习资料... . .. . ..学生班级任课教师提交日期2017计算机科学与技术学目录一问题定义 (4)二解决方案 (4)1优先队列式分支限界法求解 (4)1.1算法分析 (4)1.2代码 (4)1.3运行结果 (17)2队列式分支限界法求解 (17)2.1算法分析 (17)2.2代码 (18)2.3测试截图 (30)3回朔法-迭代 (30)3.1算法分析 (30)3.2代码 (30)3.3测试截图 (35)4回朔法-递归 (35)4.1算法分析 (35)4.2代码 (35). 专业学习资料... . .. . ..4.3测试截图 (41)5贪心算法 (42)5.1算法分析 (42)5.2代码 (42)5.3测试截图 (46). 专业学习资料.一问题定义有一批共有n 个集装箱要装上两艘载重量分别为c1 和c2 的轮船,其中集装箱i 的重量为w[i], 且重量之和小于(c1 + c2)。
装载问题要求确定是否存在一个合理的装载方案可将这n 个集装箱装上这两艘轮船。
如果有,找出一种装载方案。
二解决方案1优先队列式分支限界法求解1.1算法分析活结点x在优先队列中的优先级定义为从根结点到结点x的路径所相应的载重量再加上剩余集装箱的重量之和。
优先队列中优先级最大的活结点成为下一个扩展结点。
以结点x为根的子树中所有结点相应的路径的载重量不超过它的优先级。
子集树中叶结点所相应的载重量与其优先级相同。
在优先队列式分支限界法中,一旦有一个叶结点成为当前扩展结点,则可以断言该叶结点所相应的解即为最优解。
此时可终止算法。
1.2代码1.2-1////MaxHeap.htemplate<class T>class MaxHeap{public:MaxHeap(int MaxHeapSize = 10);~MaxHeap() {delete [] heap;}int Size() const {return CurrentSize;}T Max(){ //查找if (CurrentSize == 0){throw OutOfBounds();}return heap[1];}MaxHeap<T>& Insert(const T& x); //增MaxHeap<T>& DeleteMax(T& x); //删void Initialize(T a[], int size, int ArraySize);private:int CurrentSize, MaxSize;T *heap; // element array};template<class T>MaxHeap<T>::MaxHeap(int MaxHeapSize){// Max heap constructor.MaxSize = MaxHeapSize;heap = new T[MaxSize+1];CurrentSize = 0;}template<class T>MaxHeap<T>& MaxHeap<T>::Insert(const T& x){// Insert x into the max heap.if (CurrentSize == MaxSize){cout<<"no space!"<<endl;return *this;}// 寻找新元素x的位置// i——初始为新叶节点的位置,逐层向上,寻找最终位置int i = ++CurrentSize;while (i != 1 && x > heap[i/2]){// i不是根节点,且其值大于父节点的值,需要继续调整heap[i] = heap[i/2]; // 父节点下降i /= 2; // 继续向上,搜寻正确位置}heap[i] = x;return *this;}template<class T>MaxHeap<T>& MaxHeap<T>::DeleteMax(T& x){// Set x to max element and delete max element from heap. // check if heap is emptyif (CurrentSize == 0){cout<<"Empty heap!"<<endl;return *this;}x = heap[1]; // 删除最大元素// 重整堆T y = heap[CurrentSize--]; // 取最后一个节点,从根开始重整// find place for y starting at rootint i = 1, // current node of heapci = 2; // child of iwhile (ci <= CurrentSize){// 使ci指向i的两个孩子中较大者if (ci < CurrentSize && heap[ci] < heap[ci+1]){ci++;}// y的值大于等于孩子节点吗?if (y >= heap[ci]){break; // 是,i就是y的正确位置,退出}// 否,需要继续向下,重整堆heap[i] = heap[ci]; // 大于父节点的孩子节点上升i = ci; // 向下一层,继续搜索正确位置ci *= 2;}heap[i] = y;return *this;}template<class T>void MaxHeap<T>::Initialize(T a[], int size,int ArraySize){// Initialize max heap to array a.delete [] heap;heap = a;CurrentSize = size;MaxSize = ArraySize;// 从最后一个内部节点开始,一直到根,对每个子树进行堆重整 for (int i = CurrentSize/2; i >= 1; i--){T y = heap[i]; // 子树根节点元素// find place to put yint c = 2*i; // parent of c is target// location for ywhile (c <= CurrentSize){// heap[c] should be larger siblingif (c < CurrentSize && heap[c] < heap[c+1]) {c++;}// can we put y in heap[c/2]?if (y >= heap[c]){break; // yes}// noheap[c/2] = heap[c]; // move child upc *= 2; // move down a level}heap[c/2] = y;}}1.2-2///6d3-2.cpp//装载问题优先队列式分支限界法求解#include "stdafx.h"#include "MaxHeap.h"#include <iostream>using namespace std;const int N = 4;class bbnode;template<class Type>class HeapNode{template<class Type>friend void AddLiveNode(MaxHeap<HeapNode<Type>>& H,bbnode *E,Type wt,bo ol ch,int lev);template<class Type>friend Type MaxLoading(Type w[],Type c,int n,int bestx[]);public:operator Type() const{return uweight;}private:bbnode *ptr; //指向活节点在子集树中相应节点的指针Type uweight; //活节点优先级(上界)int level; //活节点在子集树中所处的层序号};class bbnode{template<class Type>friend void AddLiveNode(MaxHeap<HeapNode<Type>>& H,bbnode *E,Type wt,bo ol ch,int lev);template<class Type>friend Type MaxLoading(Type w[],Type c,int n,int bestx[]);friend class AdjacencyGraph;private:bbnode *parent; //指向父节点的指针bool LChild; //左儿子节点标识};template<class Type>void AddLiveNode(MaxHeap<HeapNode<Type>>& H,bbnode *E,Type wt,bool ch,int l ev);template<class Type>Type MaxLoading(Type w[],Type c,int n,int bestx[]);int main(){float c = 70;float w[] = {0,20,10,26,15};//下标从1开始int x[N+1];float bestw;cout<<"轮船载重为:"<<c<<endl;cout<<"待装物品的重量分别为:"<<endl;for(int i=1; i<=N; i++){cout<<w[i]<<" ";}cout<<endl;bestw = MaxLoading(w,c,N,x);cout<<"分支限界选择结果为:"<<endl;for(int i=1; i<=4; i++){cout<<x[i]<<" ";}cout<<endl;cout<<"最优装载重量为:"<<bestw<<endl;return 0;}//将活节点加入到表示活节点优先队列的最大堆H中template<class Type>void AddLiveNode(MaxHeap<HeapNode<Type>>& H,bbnode *E,Type wt,bool ch,int l ev){bbnode *b = new bbnode;b->parent = E;b->LChild = ch;HeapNode<Type> N;N.uweight = wt;N.level = lev;N.ptr = b;H.Insert(N);}//优先队列式分支限界法,返回最优载重量,bestx返回最优解template<class Type>Type MaxLoading(Type w[],Type c,int n,int bestx[]){//定义最大的容量为1000MaxHeap<HeapNode<Type>> H(1000);//定义剩余容量数组Type *r = new Type[n+1];r[n] = 0;for(int j=n-1; j>0; j--){r[j] = r[j+1] + w[j+1];}//初始化int i = 1;//当前扩展节点所处的层bbnode *E = 0;//当前扩展节点Type Ew = 0; //扩展节点所相应的载重量//搜索子集空间树while(i!=n+1)//非叶子节点{//检查当前扩展节点的儿子节点if(Ew+w[i]<=c){AddLiveNode(H,E,Ew+w[i]+r[i],true,i+1); }//右儿子节点AddLiveNode(H,E,Ew+r[i],false,i+1);//取下一扩展节点HeapNode<Type> N;H.DeleteMax(N);//非空i = N.level;E = N.ptr;Ew = N.uweight - r[i-1];}//构造当前最优解for(int j=n; j>0; j--){bestx[j] = E->LChild;E = E->parent;}return Ew;}1.3运行结果2队列式分支限界法求解2.1算法分析在算法的循环体中,首先检测当前扩展结点的左儿子结点是否为可行结点。
具有重心平衡约束的集装箱装载问题研究
具有重心平衡约束的集装箱装载问题研究作者:杨会志来源:《电脑知识与技术》2015年第08期摘要:针对集装箱装载问题中混合禁忌搜索算法虽然满足集装箱重心平衡约束但存在装载率较低的缺点,从采用基于矩阵的空间约束表达形式、基于简单块构造装载方案、根据禁忌搜素算法的编码次序选择装载货物种类以及设计新的装载方案的评价函数等方面对G2LA算法进行改进,并把改进后的G2LA算法作为混合禁忌搜索算法中的基础启发式装载算法。
实验结果表明了本算法的有效性。
关键词:集装箱装载;重心平衡约束;禁忌搜索;编码;G2LA算法中图分类号:TP391.72 文献标识码 A 文章编号:1009-3044(2015)08-0220-03Abstract: This paper presents a novel hybrid tabu search approach to the container loading problem to provide a better space utilization in the case of satisfying the constraint of weight distribution. An improved G2LA algorithm, which covers the spatial representation system based on matrices, using simple blocks to construct loading plan, using encoding order of tabu search to load blocks, as well asnew evaluation function of loading solutions, is devised as a loading heuristic to incorporate tabu search. Experimental results with benchmark data show that the new approach is effective.Key words: container loading problem; weight distribution; tabu search; encoding;G2LA algorithm1 前言在集装箱的实际装载过程中,除了考虑最大化空间利用率之外,往往需要考虑多种约束,如:货物的摆放方向;某些货物的隔离性;货物的承载能力;货物装载的稳定性;装载的优先级;集装箱的承重性等。
集装箱装船顺序优化模型及算法研究
集装箱装船顺序优化模型及算法研究摘要本论文提出了一个用于集装箱装船顺序优化的动态整数规划模型。
模型同时兼顾了集装箱在堆场中和在船上的摆放位置,并把集装箱在不同港口的装卸作业作为一个整体。
在实现装船顺序最优化的同时该模型还可保证船只在不同荷载分布下的稳定性。
模型的求解是一个离散的NP-hard问题,论文给出了用遗传算法解决该问题的算法框架,并通过正交因子试验探讨了算法参数的显著性和交互效应,从而大大缩短了算法在解决该问题时的运算时间。
关键词集装箱运输,装卸优化,倒箱,遗传算法Modeling and Algorithm Study for Optimizing Container Loading Planning for ContainershipAbstractIn this paper, a mathematical model is proposed for developing plans for loading containers on containerships. The mathematical model is formulated as a dynamic integer programming problem. The model integrates many factors, such as the storage policies, container ship stowage and the transfers at different terminals. As weight is one of the critical factors that the model deals with, the best solution can also sati sfy the meta-centric height restriction of the container ship. Since the problem is known to be NP-hard, GA is chosen due to the relatively good results in reasonable time. Unique coding method, evaluation function, genetic crossover and mutation operators are designed aimed at this problem and the significance and interactive effect of different parameters settings used during operation are analyzed. The paper shows that by using orthogonal fractional experimental designs, a good GA structure can be achieved to solve a large, computationally intensive schedule problem.Key words:Container Transfers, Loading-unloading Optimization, Setup Arrangement, Genetic Algorithms1 引言近年来,全球集装箱的运输量增长迅猛。
基于混合遗传算法的多约束集装箱装载问题研究
在运输中如何进行货物的有效装载,即怎样将一批矩形货物布入一个或多个集装箱中,使集装箱的空间利用率达到最高,这属于NP完全问题。集装箱装载问题根据集装箱数量的有限和无限划分成两类:一是集装箱数量无限,盒子必须全部装完,要使所用的集装箱数量最少;二是集装箱数量有限,盒子数量超过了集装箱的装载能力,要求被装载盒子的总体积达到最大,使空间利用率最高。在实际中第二类问题更为常见,所以在此只分析第二类问题。 目前常用的布局优化方法多为不带约束的简化布局问题,而现实生活中存在着大量的约束条件。 针对具有货物底置位置、允许侧放方式、最大堆码层数等多约束条件下的集装箱装载问题和目前集装箱容积有效利用率普遍较低的情况,本文将这些约束考虑到启发式规则中,根据装载中单种货物数量一般较多的实际情况,提出了一种新的基于空间划分的启发式算法,并将其与遗传算法结合,进一步提出了混合遗传算法求解多约束装箱问题。该算法已用于企业的实际装箱中,结果表明,本文提出的方法可行且有效。1 多约束集装箱装载的启发式策略 实际装载中单种货物数量一般较多,采用现有针对单个物品的基于三维空间的启发式算法存在装载效率和空间利用率低的问题。因此,本文采用同类型货物一次性装载的思想,提出了一种新的基于空间划分的启发式策略。该策略根据待布局空间块中货物装载方式的不同将剩余空间最多划分为五种空间块。实际应用中,对算法中的约束条件处理方法是引入不同变量分别表示货物的侧放方式、货物的堆码层数、底置等级等属性。1.1 基于空间划分的启发式算法流程 算法流程的步骤如下: (1)初始化空间块序列为集装箱箱体。 (2)依次按底置等级递增、体积递减对货物类型排序。 (3)从货物类型序列中按顺序取某类型货物,从空间块列表中取第一个第一个可用空间块。 (4)将所取类型的货物一次性装载到所取空间块中。根据货物可取侧放方式、最大堆码层数的不同,计算空间块的最大装载数量(本文称为标准装车),同时产生标准装车的摆放方式。当货物数量小于标准装车时(称为非标准装车),根据货物数量、允许侧放方式、最大堆码层数产生非标准装车的摆放方式。 (5)分割空间块,将其添加到空间块序列,按体积对空间块重新排序。 (6)如(4)为标准装车,求所取类型货物的剩余数量,从空间块列表中取第一个可用空间块,转(4);否则转(3)。1.2 定序定序规则 定序规则用来确定物体布入的先后顺序,对最终布局结果的优劣有重要影响。由于货物底置等级越低,要求放置的位置越低,所以采用依次按底置等级递增、体积递减的定序规则对货物类型排序。
数学建模——码头货轮集装箱装卸的优化问题2
欢迎共阅码头货轮集装箱装卸的优化问题摘要集装箱“货币化”已成为发展趋势,而港口发展渐渐滞后于集装箱的吞吐量,研究集装箱装卸的优化问题能有效扩大港口生产力,提高港口经济效益。
本文将建立集卡线路规划模型和岸桥、集卡与龙门吊协同优化模型,通过禁忌搜索算法进行求解,并通过青岛港的数据对模型进行实证分析。
对于提高装卸效率,降低装卸成本这一问题,我们将其分解为线路规划、协目录摘要 0一、问题重述 (2)1.1问题的背景 (2)1.2要解决的问题 (2)二、问题分析 (2)2.1概论 (2)2.2问题一的分析 (2)一、问题重述1.1问题的背景集装箱码头是海陆联运的枢纽站,在各个经济体的贸易中都占据着举足轻重的地位。
港口的装卸货能力在一定程度上代表着一个港口的生产力,在集装箱吞吐量不断增大而港口发展渐渐滞后的现状下,研究港口集装箱装卸的优化问题就显得尤为重要。
影响集装箱装卸效率的因素主要有装卸设备的硬件配备和在现有设备基础上对各方资源的优化协调程度。
本文将以青岛港前湾港集装箱码头(QQCT)为现实背景,来考虑码头货轮集装箱装卸的优化问题。
(来源:百度图片)图4平面图(泊位确定)2.2问题一的分析这是一个线路规划问题,通过对港口平面图、集卡运行速度、桥吊和龙门吊的工作效率分析,得到了集卡的最优工作路线。
问题的特点在于集卡在运输进口、过境等集装箱时是联合搭配的。
问题的难点在于堆场与堆场之间可以相互通行,集卡返回码头时携带需要装船的集装箱,而且需要卸的集装箱往往和需要装的集装箱数目不一致,加大了理解和计算的难度。
2.3问题二的分析这是一个资源优化问题,通过对桥吊、集卡、龙门吊三个因素进行综合考虑,得到三种资源的最优配比。
问题的特点在于问题一的结论影响问题二的分析,桥吊、集卡、龙门吊之间的相互调配相互制约,但存在整体最优的情况。
问题的难点是在各因素相互制约的条件下寻找最优解,合理有效利用第一问的数据。
5.1.1模型分析通过查阅资料,我们将集卡的工作流程抽象如下(图5)5.1.2⎪⎪⎭⎫⎝⎛+++=∑∑∑∑∈∈∈∈r r a a a j a j a jr i r i r i m i d i d j m j s d s d ij d d sd sd ij R t t R R t Min δ (1) 堆场对应具体货物,如下为集卡调度模型的表示:∑∑∈∈r aa jr id i d j d d ijR tMin (2)约束条件:(2)式为行驶时间最小的目标函数;(3)、(4)式为进口、过境箱与出口箱数目相等的一一搭配; (5)式为变量的约束条件;(6)、(7)式进口、过境箱数大于出口箱数的虚拟搭配; (8)、(9)式进口、过境箱数小于出口箱数的虚拟搭配。
1基于混合遗传算法的集装箱堆场装卸作业调度优化_靳志宏
(1 .大连海事大学 交通运输管理学院 , 辽宁 大连 116026 ;2.大连港集团公司 , 辽宁 大连 116004)
摘要 :以缩短龙门吊 作业 时间为 目标 , 建 立其 装卸调 度优 化 模型 .基于问题自身特点 , 将 近邻搜 索(NS)策 略嵌入 遗传 算 法(GA)中 , 开发混合遗传算法(NSGA).算例分析 显示了模 型 及算法的有效性与实用性 , 对提高船 方及港方的 运营绩效 可 起到积极的促进作用 . 关键词 :集装箱堆场 ;龙门吊 ;调度 ;近邻搜索(NS);遗传算 法
定义可知 , 当需提取的集装箱处于堆存区域的最上
层时 , 准备时间为零 ;否则 , 准备时间应等于锁定集
装箱所用时间与移动上层集装箱所用时间之和乘以
压在待提集装箱上的层高 .式(3)表示龙门吊的实际
作业时间包括锁定集装箱所用时间 、移动龙门吊大
车的时间 、移动龙门吊小车时间及堆场到码头前沿
的运输时间 .式(4)表示当某一集装箱被提走时 , 与
4 2 大 连 海 事 大 学 学 报 第 38 卷
求这一实际约束加以考虑 , 而对龙门吊在实际作业 过程中的调度研究较少 .本文建立以龙门吊作业时 间最小化为目标的调度优化模型 , 开发基于近邻搜 索策略的混合遗传算法(NSGA).算例分析显示了模 型及算法的有效性与实用性 .
T t =1
N
(P Ttn
n =1
+RTtn ))
n =1 ,2 , …, L
(1)
P Ttn
=
Htn (2Ts +Tm), Htn
0,
Htn
≠0 =0
RTtn = Ts +BnBW vD +Rn RW vX +da v
基于遗传算法的集装箱配载问题研究
基于禁忌搜索算法求解集装箱装载问题
第31卷第2期2009年4月沈 阳 工 业 大 学 学 报Journal of Shenyang University of Technol ogyVol 131No 12Ap r 12009收稿日期:2006-11-18.基金项目:辽宁省教育厅基金资助项目(2004F043).作者简介:刘嘉敏(1964-),女,江苏镇江人,副教授,博士,主要从事计算机图形学、CAD 和布局优化等方面的研究.文章编号:1000-1646(2009)02-0212-05基于禁忌搜索算法求解集装箱装载问题刘嘉敏1,董宗然2,马广 1(1.沈阳工业大学信息科学与工程学院,沈阳110178; 2.大连东软信息学院计算机科学与技术系,辽宁大连116023)摘 要:针对具有广泛应用背景、多约束条件和求解困难的集装箱装载问题,引入具有人工智能记忆机制、基于邻域搜索而避免局部最优的禁忌搜索算法,探讨了在求解集装箱装载问题中禁忌搜索的编码、解码和邻域解生成等关键技术,给出了基于物体数量的编码过程与剩余空间处理方法相结合的解码过程和邻域解生成的实现过程,并为对空间利用率影响较大的剩余空间设计了合理的划分与合并规则.通过实例测试和比较,显示出很好的效果,表明该算法是行之有效的.关 键 词:禁忌搜索;集装箱装载;组合优化;布局;启发式中图分类号:TP 391.72 文献标志码:ASolv i n g con ta i n erload i n g ba sed on t abu search a lgor ithmL I U J ia 2m in 1,DON G Zong 2ran 2,M A G uang 2kun1(1.S chool of Infor m ation Science and Engineering,S henyang U niversity of Technology,Shenyang 110178,C hina;2.D epart m ent of C om puter S cience and Technology,D alian N eusoft Institute of Infor m ation,D alian 116023,C hina )Abstract:A tabu search algorithm w as app lied in order to solve the con tainerloading p roblem w ith the w ideapp lication background,m ulti p le constraint and d ifficult solu tion .The tabu search algorithm based on the neighbourhood search can avo id the local op ti m ization avoidance and has the artificial intelligence m em ory m echanis m.Such key techniques as encoding,decoding and generation of neighbourhood so lution for the tabu search in solving the containerloading p roblem w ere discussed .The i m p lem en tation of the encodingp rocess based on the box quan tity and decoding p rocess com bined w ith the rem aining space handling m ethod as w ell as the neighbourhood solu tion generation w as p resented .The partitioning and m erg ing p rinci p les of the rem aining sp ace w ere designed .The effectivity of the p roposed m ethod has been p roved by test and com parison .Key words:tabu search;con tainer loading;com binatorial op ti m ization;packing;heuristic 集装箱装载问题(Container Loading Pr oble m )广泛存在于轮船配载、火车车厢装载和汽车车厢装载等实际应用中.提高集装箱内部空间的利用率是提高集装箱运输效益的重要途径.集装箱装载问题的一般性描述是:将一批待布入小物体(长方体货物)装入到长方体容器(集装箱)中,目标是优化排布使容器的体积利用率和(或)重量利用率最高,同时要求满足一定的目标约束条件,如货物搬运的难易性、某些货物的隔离性、货物装载的稳定性和集装箱的承重性等.从计算复杂性分析,装箱问题属于NP 完全问题[1],应用中采用的是具有多项式时间的近似算法.近似算法主要分为启发式算法和随机算法.基本启发式算法依赖于对问题构造和性质的认识,属于局部择优算法;随机算法不依赖解的性质,从解空间中随机选择多个解,再用一定标准选择优解,重复这一过程直到找到近优解或最优解.这种方法简单明了,但计算耗时.在此基础上发展起来的现代启发式方法是处于随机算法和基本启发式算法之间的一类算法,包括遗传算法(G A )、禁忌搜索(TS)算法和模拟退火(S A)算法等,这类算法在引入随机搜索的同时,考虑了问题的原有构造,限制了随机搜索的盲目性,使搜索过程沿着预期方向进行.对于集装箱装载问题,国内工作多采用逐个、优先放入大物体的策略[2-3],考虑的优化因素较少;国外文献中提到了物体组合的启发式方法,如按层(Layer)和块(B l ock)等方式组合物体[1,4-7]. Pisinger提出了按层和条的方式来装箱[1].Eley采用同质块(由相同物体组成)填充集装箱.上述方法在物体种类繁多,尺寸差异大的时候不适用.在采用现代启发式算法求解集装箱装载问题方面,国内研究集中在使用遗传算法上.何大勇等提出的方法[8]收敛速度慢,且允许物体出现不完全支撑,导致物体不稳定排放,需用填充物固定的结果.1 禁忌搜索算法实现禁忌搜索引入了人工智能的记忆机制,对于一些复杂问题,显示出极强的寻优能力.禁忌就是禁止重复前面的操作.为了防止搜索陷入局部最优,用一个叫禁忌表的结构记录下已经到达过的局部最优点,在下一次搜索中,利用禁忌表中的信息不再或有选择地搜索这些点,以此来跳出局部最优点,同时“遗忘”又使禁忌在一定时间后失效,最终达到全局优化.TS算法一般描述:1)确定初始排序变量i0,并计算其目标函数值f.令i=i0,f=f0,设定禁忌表中的每一操作的禁止期限为0.2)如果禁忌表中的禁忌期限不为0,将其减1.在当前解的邻域中选出一定数量的最好的解,并按由优到劣次序排列.如果第一个解不是被禁忌的解或者它的函数值比目前找到的最优解好,则把它作为当前解,在禁忌表中设定该解的禁忌期限值,否则检查第二个解是否满足条件,依此类推.3)如果不满足终止判据,转(2);如果满足终止判据,停止计算,输出问题的优化解.111 编码要用禁忌搜索算法求解集装箱装载问题,首先要将原问题的可行解空间转化到禁忌搜索算法所能处理的搜索空间,搜索空间中的元素就是代表解的数字串,编码就是设计问题解数字串如何表示的过程.与遗传算法类似,解的编码方案一般用二进制串形式,具体到三维集装箱装入问题,常规的想法是将物体的三维坐标用二进制串来表示,但这种方案会形成很长的编码,导致搜索空间剧增,同时因为坐标值的调整变化仅描述了待布入物体本身位置的改变,可能会使待布入物体之间出现干涉现象.为避免干涉,编码调整前需要进行判断,即编码的变化是受限的,而处理干涉判断的计算代价是巨大的,为此,有必要设计一种更好的编码方法.对待布入物体进行编号,将其按着装入的顺序进行排列,即P=(P1,P2,P3,…,P n),其中n为待布入物体的数目,Pi(1≤i≤n)为代表物体编号的整数.例如,假设有100个物体,先将这100个物体按体积从大到小降序排列,并按此顺序进行装入,则禁忌搜索算法的初始解可定义为P= (1,2,3,…,100).数字串P是解的运算处理形式,能否简单、快速地将其转换成空间规划图的表现形式,从而求出其相关评价函数值,就成为禁忌算法能否有效应用的关键,为此,本文提出以下解码方法.112 解码解码是编码的逆过程,将搜索空间中的解转换到原问题的可行解空间,然后再对得到的可行解求出评价函数值,对于集装箱装入问题就是按照得到的装入顺序把物体按照一定规则实际装入一遍,评价函数值就是按照这种装入方式得到的空间利用率.三维装入问题的难点之一就是待布入空间形状复杂,难于描述.本文布局空间的描述采用三叉树数据结构表示,初始的当前布局空间是整个集装箱,对应于三叉树的根结点,将第一个可放入的小物体定位于当前布局空间后部的左下角,这样原布局空间被分解成3个子空间,分别对应于三叉树根结点的左、中、右3个子结点.按深度优先的原则分别对这3个独立的子空间重复上面过程.结束条件是集装箱没有可利用的剩余空间或是小物体已全部装入.用三叉树结构处理集装箱布局问题的空间分解可避免空间干涉.为了更好地利用布局空间,结合了空间合并的方法.定义剩余空间栈和废弃空间链表2个数据结构,每次装入都是从剩余空间栈栈顶弹出一个元素作为当前空间,对于一个给定的解,附加定义一个标记数组O rder[n]与之对应,将其全部元素初始化为1,表示小物体还未放入.将解中编号代表的小物体按照从前往后的顺序尝试放入当前空间,若能放入则将其放入,并把当前空间按三叉树结构分解,将新生成的空间压入剩余空间栈,将O rder数组中与该小物体对应的元素置为0,表示312第2期 刘嘉敏,等:基于禁忌搜索算法求解集装箱装载问题小物体已放入.对于所有小物体都不能放入的剩余空间,先不将其丢弃,将其放入废弃空间链表,目的是再次从剩余空间栈中选出当前空间后,看当前空间能否与相邻的废弃空间合并从而使当前空间最大化,以便大物体放入或空间充分利用.适合集装箱装载问题的三叉树空间分解方法主要有2种(见图1):①所有上方小物体都被完全支撑,排放稳定(见图1a );②可能会造成上方小物体的不完全支撑(见图1b ),若允许不完全支撑,有些情况下集装箱空间利用率会提高,但可能导致排放不稳定,需加入填充物固定.图1 空间分解示意图F i g .1 Partiti on i n g of space113 解的评价函数禁忌搜索算法得到的解要用评价函数来评价好坏,所谓解的评价函数就是对解所代表的物体的装入方案按照一定指标进行衡量的规则.与遗传算法类似,禁忌搜索算法在搜索过程中基本不使用外部信息,利用解的评价函数值进行搜索,评价函数值越大,解越好.集装箱装载是一个多目标、多约束的组合优化问题,根据优化目标可以将集装箱空间利用率、布入物体重量和货物重心分布等一起参与评价函数的计算.这比一般启发式方法先将约束考虑到启发式规则中的方法要好,因为有些复杂的布局很难凭经验检查出约束条件是否满足.本文仅做试验研究,用空间利用率为评价函数,计算公式定义为SU =∑mi =1BViCV (1)式中:SU ———集装箱空间体积利用率;BV i ———第i 个放入的小物体的体积;CV ———集装箱的体积;m ———布入的小物体数目.多目标优化时可将评价函数定义成如下形式V alueParam =k 1V 1+k 2V 2+k 3V 3+…+k n V n(2)式中:V alueParam ———总体评价函数;k i ———加权系数,凭经验和实验确定;V i ———各目标的评价函数,i =1,2,…,n .在解码过程中计算各优化目标的评价函数,解码结束后利用公式(2)计算当前解的总体评价函数.将集装箱装载问题的约束条件体现在解的评价函数中,简化了计算.114 邻域解生成算子由当前解生成邻域解的方法可任意设计,但如果邻域解和当前解差别太大,会使禁忌搜索过程趋于随机搜索;而变化太小会使收敛速度缓慢,且易于陷入局部最小.因此要设计合适的邻域算子,既保证搜索的收敛性,又保证解的优越性.对于本文这种类似于TSP 问题的以符号编码的基因串,采用在串长范围内随机生成2个交换点(解内的2个交换点位置不同,且不同邻域解的交换点位置不同),将位于交换点上的2个小物体交换位置.对于这种互换操作,每个解的邻域解有n (n -1)/2个,并称从一个解状态转移到其邻域中的另一个解状态为一次移动.显然每次移动将导致评价函数值的变化.115 计算过程TS 算法求解集装箱装载问题的实现步骤:1)设定算法参数,包括邻域解个数、候选解个数、禁忌表长度和迭代次数r 等.2)将小物体按体积降序排列,然后对其按升序编号形成当前初始解.3)根据当前解和邻域算子,生成邻域解集.4)计算邻域解评价函数(即解码).5)根据评价函数值生成候选解集.6)依据候选解集及禁忌表,更新当前解、当前最优解及禁忌表.7)迭代计数器t 加1,判断终止条件,若t 小于r ,转(3);若t 大于r ,则以此刻的当前最优解作为最优解输出,终止计算.8)判断最优解是否满足要求,若是,则算法结束,否则,转(1)设定参数,重新计算.说明:迭代的终止条件也可设置为计算时间是否超过规定值,本文测试中将计算时间作为终止条件.412沈 阳 工 业 大 学 学 报 第31卷116 空间合并在小物体装入过程中,剩余空间被不断划分成小的矩形剩余空间,对于不能再装入任何剩余小物体的剩余空间,称之为废弃空间,并将其放入废弃空间链表.集装箱的体积利用率随着废弃空间的增多而降低,因此合理地利用废弃空间可以提高集装箱空间利用率.把当前剩余空间与相邻废弃空间合并的结果作为新的当前剩余空间再与剩余废弃空间合并,直到不能与废弃空间链表中的任一废弃空间合并时停止,这样可使集装箱空间得到更充分的利用.废弃空间(W S )与当前剩余空间(CRS )可以合并的条件:1)当前剩余空间与废弃空间高度相同;2)当前剩余空间与废弃空间相邻(包括前后相邻和左右相邻),其中前后相邻满足如图2所示的关系则可合并,当前剩余空间与废弃空间左右相邻时合并的情况与此类似.图2 剩余空间合并(俯视图)F i g .2 M erg i n g of re ma i n i n g space(top v i ew)2 算例分析算例采用文献[2]中提出的一组测试数据.布局空间为国际标准集装箱,尺寸为L =58919mm,W =23818mm,H =23512mm.文献[2]中算法得到了8218%的利用率,文献[6]中方法得到80%的利用率,文献[3]中得到80159%的利用率,文献[9]中算法得到85104%的利用率(有不完全支撑);本文算法在完全支撑条件下得到84192%的利用率(数据见表1,效果见图3),在允许不完全支撑的条件下得到86138%的利用率(数据见表2,效果见图4).表1 具有完全支撑物体位置数据表Tab .1 Positi on of boxes w ith co m plete support P xP yP zPLP WPHD000180222100200100701206015012010066961321100160681107214700100110210120618000163200120318020006936173182492000603790252492009046348428309200033309630180012012019011073000120408060263008012040756027300801804060502934300120220111534301111202201114463001202222201图3 完全支撑物体布局F i g .3 Layout of boxes w ith full support表2 允许部分支撑物体位置数据表Tab .2 Positi on of boxes w ith parti a l support P xP yP zPLP WPHD00016320012030200033309630332000603790259320004634842800120140150100801501206278502301501705470642262150120726811014163002202221201140012012022011142600120120220111538300103122979383122068686821383190060408026383097981686810383168979560662038301659613266113831321657884621948600100222180248601809613050124861301805098482453613018040605029 512第2期 刘嘉敏,等:基于禁忌搜索算法求解集装箱装载问题图4 允许部分支撑物体布局F i g.4 Layout of boxes w ith parti a l support在数据表中,Px 为x方向的坐标;Py为y方向的坐标;Pz为z方向的坐标;PL为x方向物体的尺寸;P W为y方向物体的尺寸;PH为z方向物体的尺寸(坐标系参见图1);D列为被装入物体的编号.两组测试的参数设置:邻域解个数为100,候选解个数为25,禁忌表长度为10,运算时间为6s. 3 结 论计算结果表明,用禁忌搜索算法求解集装箱装载问题,可以得到较高的空间利用率.通过设定不同的评价函数,算法可以拓展到解决多目标、多约束的集装箱货物装载问题.本文为利用禁忌搜索算法求解三维装入问题提供了基础和经验,对推广禁忌搜索算法在空间规划设计中的应用具有一定意义.参考文献(References):[1]P isinger D.H euristics for the container loading p roblem[J].European Journal of O perational R esearch,2002,141(2):382-392.[2]姜义东,查建中,何大勇.集装箱装载矩形货物的布局研究[J].铁道学报,2002,22(6):13-18.(J I AN G Y i2dong,ZHA J ian2zhong,HE D a2yong.R e2 search on the packing of loading rectangular freight in2 to a container[J].Journal of the C hina R ail w ay Socie2 ty,2002,22(6):13-18.)[3]樊建华,黄有群,刘嘉敏.集装箱装入算法的研究[J].沈阳工业大学学报,2002,24(4):306-308.(FAN J ian2hua,HUAN G You2qun,L I U J ia2m in.R e2 search and i m p lem entation of algorithm of container packing[J].Journal of S henyang U niversity of Tech2 nology,2002,24(4):306-308.)[4]B ischoff E,D ow sland W B.A n app lication of the m i2crocom puter to p roduct design and distribution[J].Journal of the O perational R esearch Society,1982,33(3):271-280.[5]D ow sland K A,D ow sland W B.Packing p roblem s[J].European Journal of Operational R esearch,1992,56(1):2-14.[6]G eorge J A,R obinson D F.A heuristic for packing bo2xes into a container[J].C om puters and Operations R esearch,1980,7(3):147-156.[7]Eley M.S olving container loading p roblem by blockarrangem ent[J].European Journal of O perational R e2 search,2002,141(2):393-409.[8]何大勇,查建中,姜义东.遗传算法求解复杂集装箱装载问题方法研究[J].软件学报,2001,12(9):1380-1385.(H E D a2yong,ZHA J ian2zhong,J I ANG Y i2dong.R e2search on solution to com p lex container loading p rob2 lem based on genetic algorithm[J].Journal of Soft2 w are,2001,12(9):1380-1385.)[9]刘嘉敏,马广 ,黄有群.基于组合的三维集装箱装入启发式算法的研究[J].工程图学学报,2005,59(1):22-25.(L I U J ia2m in,M A G uang2kun,HUAN G You2qun.R e2 search of heuristic algorithm for3D container loading based on com bination[J].Journal of EngineeringG raphics,2005,59(1):22-25.)(责任编辑:邓美艳 英文审校:王丽梅)612沈 阳 工 业 大 学 学 报 第31卷。
基于遗传算法的集装箱装车配载方案的优化
基于遗传算法的集装箱装车配载方案的优化杨广全;马玉坤;刘飞【期刊名称】《中国铁道科学》【年(卷),期】2014(035)006【摘要】针对手工编制集装箱装车配载方案费时、配载不合理等问题,基于集装箱和铁路车辆的参数,推导集装箱装车后铁路车辆的转向架承重、左右两转向架承重差和合重心横向偏离量的计算公式.以1组待装车的左右两转向架承重差之和最小为目标函数,以车辆的载重、转向架承重、左右两转向架承重差和合重心横向偏离量以及集装箱的箱重限制为约束条件,建立集装箱装车配载方案的优化模型.基于遗传算法原理,设计启发式遗传算法对该模型求解,采用罚函数方法和修复策略处理约束条件,并针对编码提出特殊交叉算子和变异算子,以保证生成可行解.以将42个20英尺集装箱和16个40英尺集装箱配载在37辆铁路车辆上为例,采用建立的模型和启发式遗传算法得到集装箱装车的配载方案.该方案不仅满足铁路车辆装载技术要求,而且优于手工编制的配载方案,验证了该优化模型及其求解算法的有效性和合理性,可以实现集装箱装车配载的智能化.【总页数】7页(P124-130)【作者】杨广全;马玉坤;刘飞【作者单位】中国铁道科学研究院运输及经济研究所,北京 100081;中国铁道科学研究院运输及经济研究所,北京 100081;中国铁道科学研究院运输及经济研究所,北京 100081【正文语种】中文【中图分类】U294.3;U294.26【相关文献】1.基于遗传算法的集装箱配载问题研究 [J], 程文明;赵道致2.基于遗传算法的铁路小型集装箱装车配载优化 [J], 杨广全;梁永刚;刘平3.基于遗传算法与贪婪策略的多港口集装箱配载研究 [J], 郑斐峰;梅启煌;刘明;张小宁4.基于遗传算法的集装箱配载问题研究 [J], 周昕;尹芳5.基于集装箱倒箱和岸桥作业均衡的集装箱船配载优化 [J], 黄森佳;姜桂艳;张露因版权原因,仅展示原文概要,查看原文内容请购买。
