基于混合单亲遗传算法的二维装箱问题求解

来源 :学习导刊 | 被引量 : 0次 | 上传用户:nofengy
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘 要:针对二维矩形装箱问题,在现有IFFA算法的基础上加以改进,提出了IFFA2算法,并将它与单亲遗传算法进行结合构成混合单亲遗传算法来解决二维单箱装箱问题。在算法中,提出了新的的编码方案,并设计了相应的适应度函数和遗传操作,解码时引入了IFFA2算法,将启发式算法与遗传算法进行了有效的结合。
  关键词:二维装箱问题;IFFA2算法;碎片;单亲遗传算法
  1 引言
  装箱问题是指将一些给定的不同尺寸的物品按照要求摆放入有一定容积的容器中,以获得某种最佳的效益。该问题是一个典型的组合优化问题,属于NP-hard问题[1]。可以从不同的角度对装箱问题进行分类,从装箱物体所属空间进行分类,可分为一维、二维及三维装箱问题。
  本文研究的是二维装箱问题中的一种。该问题可描述为[2]:给定n个矩形物品集合 和一个宽度为有限值W,高度无限的箱子,其中第 个物品的宽度为 ,高度为 , 。要求将所有的物品装入箱子中而使所占箱子高度为最小。生产生活中很多实际问题可归结为该类装箱问题,如裁剪、装载、印刷排版、玻璃和木材的切割等等。
  早在二十世纪七十年代,人们就开始了对装箱问题的探讨和研究[3]。到目前,提出了大量的解决方法。其中常见的主要有启发式算法和遗传算法等。2006年9月大連海事大学的汤岩等人提出了一种IFFA算法,并将该算法与遗传算法相结合实现了二维装箱问题的求解。
  IFFA2算法是一种启发式算法,它是在IFFA算法的基础上进一步做了改进,考虑了碎片利用的一种算法。又将该算法与单亲遗传算法相结合实现了对二维装箱问题的求解。
  2 IFFA2算法
  2.1 IFFA算法思想及存在的不足
  IFFA 算法是汤岩[4]等人提出的一种启发式算法,该算法的主要思想是:每个物品在装箱时寻找高度最小的合适区间装入,当同时有多个高度相等的合适区间时,优先使用造成浪费面积(碎片)最小的方案,在高度和浪费面积都相等的情况下,优先使用最左边的区间。
  IFFA算法虽然是一种较优秀的算法,但没有考虑已有碎片的利用,仍会产生较多的浪费空间。
  2.2 IFFA2算法的提出
  为了得到更合理的布局,本文在IFFA算法的基础上考虑了碎片的利用,提出了IFFA2算法。该算法的主要思想是在将每个物品装箱时,先从目前的碎片中查找看有没有可以装入该物品的碎片,如果有,则将其装入碎片空间中;如果找不到这样的碎片,则按照IFFA算法进行装箱。
  在该算法中,首先以箱子的左下角为坐标原点,以箱子所在平面为xoy面建立直角坐标系。由于区间和碎片存在频繁的删除和插入,所以采用了链表的形式来定义区间及碎片,区间按照从左到右的顺序连接在一起。碎片按照宽度由大到小(宽度相同的按高度由大到小)的顺序链接在一起。具体结构如下:
  定义碎片结点:
  point1 = ^sp;
  sp = record
  xsp: integer; / /碎片左下角横坐标
  ysp: integer; / /碎片左下角纵坐标
  wsp: integer; / /碎片宽度
  hsp: integer; / /碎片高度
  next: point1; / /向前的指针
  end;
  定义区间结点:
  point2 = ^qj;
  qj = record
  xqj: integer; / /区间左下角横坐标
  yqj: integer; / /区间左下角纵坐标(即为该区间的高度)
  wqj: integer; / /区间的宽度
  next: point2; / /向前的指针
  end;
  3 基于IFFA2算法的混合单亲遗传算法在二维装箱问题中的实现
  遗传算法是模拟生物界优胜劣汰、适者生存的一种自适应搜索算法。在传统遗传算法中,对于顺序编码来说常规的交叉算子往往会出现非法解,为了避免非法解,就得采用一些特殊的交叉算子,同时执行交叉操作后常会使一些较优秀的基因块被破坏,为了避免以上这些问题的产生,本文采用了单亲遗传算法[5],将其与IFFA2算法相结合来求解二维装箱问题,具体实现如下:
  3.1编码
  假设所有物品在装箱时都可以进行90°旋转,采用以下的编码方式:先将所有要装箱的物品进行统一编号,一个物品的编号与染色体中一个基因的编码对应,基因的编码可以为正或者为负,且规定,若基因编码为正则表示其对应的物品是直接装入,若编码为负则表示其对应的物品的是旋转90°后再装入。假设有 个要装箱的物品,则在 个物品编号前加上正负号就构成了一条染色体,染色体中每个基因编码与相应物品的编号以及该物品的装箱方式相对应。例如:有6个要装箱的矩形物品,则(-2,6, 5, 3,-1,-4)就是一条染色体,它表示物品的装箱顺序为265314,其中3号、5号和6号物品直接装箱,1号、2号和4号物品旋转90°后再装箱。
  3.2解码
  个体解码方法:染色体中的基因码与装箱物品编号之间是一一对应的,即染色体中第 个基因码对应的就是第 个要装箱物品的编号,基因码的正负决定该物品的装箱方式。具体装箱过程按照IFFA2算法进行。算法步骤如下:
  第1步:把第一个要装箱的物品放入箱子的左下角;
  第2步:对于当前要装箱的物品,首先搜索碎片链表,找可容得下该物品的最小碎片将其放入,并修改碎片链表,转向第4步,若找不到则执行第3步;
  第3步:找到最低可放置区间将当前物品装箱,并相应修改区间链表,如果需要合并区间,那么在装入物品后将会产生新的碎片,这时还需将新的碎片插入到碎片链表中,转向第4步;   第4步:将当前物品左下角的坐标值放入到事先建立好的位置数组中,转第5步。
  说明:在算法执行前要建立一个 的二维数组,用以记录当前种群中各个个体对应的装箱模式下 个物品装箱后其左下角的坐标值,其中: 是装箱物品的个数, 是种群中个体数目。
  第5步:若所有物品已装完,则结束;否则转第2步。
  3.3 初始种群的产生
  在遗传算法中,初始种群的好坏直接影响到算法的求解质量及收敛速度。在生活中有这样的例子:要将一定数量的小米和大豆同装入一个容器中,为了节省空间,在装的时候可以把大豆先装入,然后将小米插入到大豆形成的缝隙中。这里参照上述的例子,先将矩形按照面积从大到小的顺序排列,再将其按已有顺序分成若干组,其中第一组的矩形面积大于第二组的矩形面积,第二组的面积大于第三组的面积,依次类推。然后再采用随机键的方式分别在各个矩形组中随机产生一个矩形排放的先后顺序,最后再将它们按照第一组、第二组等的顺序排列,这样就确定出矩形排放的一个完整的先后顺序。
  矩形的放置方式通过产生随机数的方式确定,对于每个矩形,都随机生成一个[0,1]之间的随机数,若随机数大于等于0.5,则该矩形直接放入,若随机数小于0.5,则旋转90°后再放入。
  3.4适应度函数
  文中装箱问题的装箱目的是装完所有物品后,要使物品的总计高度最小,当几个方案高度相同时,要采用浪费面积最小的方案。选取适应度函数如下:
  其中,M是一个足够大的正数,它使得 >0, 为按照某一方案装箱后的高度, 为要装箱的所有矩形面积之和,它是一个常数, vs为当前装箱方案产生的碎片面积之和,A是一个大于0的常数,用作调整参数。
  3.5 选择算子
  在選择过程中采用轮盘赌选择法和最优个体保存法。
  3.6 变异算子
  变异可以增加群体多样性,为了保持一定水平的变异率,增大产生新的基因块的概率,从而加快收敛速度,这里对于每个经过选择的个体全部进行变异操作。
  采用了以下四种变异算子,在变异时,对于每个个体,随机产生[1,4]之间的整数 ,根据 取值的不同,执行不同的变异操作,具体操作如下(假设装箱物品的个数为n):
  (1)单点基因倒位
  随机选取[1,n]上的两个整数确定变异点,然后将位于变异点之间的子串中的基因按照逆序排列。
  (2)单点基因移位
  随机选取[1,n]上的两个整数确定变异点,然后将位于变异点之间的子串中的基因依次后移,并且把该子串中最后一位基因移到最前面。
  (3)多点基因换位
  对于一个染色体,先确定一个正整数m,再取[1,m]上的随机数i,然后随机交换i对位置的基因值。
  (4)多点基因突变
  对于一条染色体,先确定一个正整数t,再取[1,t]上的随机数i,然后随机地改变i个基因的值,即如果原来的值为正,则将其变为负;如果原来的值为负,则将其变为正。
  对于一个个体,通过前三种变异可随机改变某些物品的装箱顺序,通过多点基因突变,可随机的改变某些物品的放置方式。
  3.7终止条件
  本文采用的终止条件是出现早熟情况或达到遗传代数时终止迭代。
  4 结束语
  装箱问题在现实生产和生活中普遍存在,成功的解决该问题,将对生产生活有重要的指导作用。本文对现有的算法进行了总结分析,进一步提出了新算法,并采用该算法实现了对二维装箱问题的求解,在算法中,设计了相应的编码、种群初始化方法、适应度函数及遗传操作。由于一些客观原因,没有对该算法进行算例试算,下一步将继续研究并编制程序通过算例来验证其有效性。
  参考文献
  [1] 邢文训,谢金星.现代优化计算方法[M].北京:清华大学出版社,2005:1-47,113-148.
  [2]赵素芬.几何布局问题及其应用(一)[J].呼和浩特科技,1993(2):19-21.
  [3]陈胜达.基于遗传与递归的装箱算法研究[D].厦门大学,2006:1-34.
  [4]汤岩,胡俊敏,武立丰.一种改进的二维装箱问题的混合遗传算法[J].集美大学学报(自然科学版),2006,11(3):258-262.
  [5]王珍和.用单亲遗传算法解决影片递送问题[D].内蒙古大学,2003:19-26.
  作者简介:李玉贤(1982年6月—),女,内蒙古呼和浩特市人,讲师,理学硕士,从事高等数学的教学。
其他文献
摘要:目前我国高职教育普遍单一重视学生的专业技能培养,忽视了对于学生的职业素养的培养,对于学生心理职业素质培养更是没有形成体系,本篇文章提出高职院校学生的心理职业素质培养中存在的几点问题,并对培养途径做出了拓展性的思考。  关键词:高职院校 心理职业素质 培养途径  高职学生教育是各类教学活动中与社会联系最紧密的一部分, 它直接为社会输出高素质的职业劳动者, 高职学校的学生在校期间的学习实际上是一
期刊
摘要:学生自主学习、合作学习能力的培养是新课程标准体系下的一个重要的价值方向。对于数学这门传统学科而言,培养学生的数学逻辑能力,锻炼学生的数学思维,更是传授数学知识过程中的一个重要行为和目标。“小组讨论”这一合作学习的方法在教学实践中早已被证明为是极具效率和潜力的,在学生数学思维的开发和创新方面起到了非常大的作用。  关键词:合作学习;小组讨论;思维开发  合作学习对于数学学习意义之理论探究  合
期刊
摘要:作为旅游专业学生的一门必修课,餐饮服务不仅有助于学生了解一些和餐饮有关的基本知识,而且还可以帮助学生掌握一些关于餐饮服务的基本技能。本文分析了目前中职旅游餐饮教学中存在的问题,提出了有关的解决措施。  关键词:中职旅游餐饮;问题;对策  近些年来,我国经济的快速发展使得旅游业的发展也十分迅速。据有关资料表明,过去十年我国的餐饮业收入增长了一倍多,各种高级餐厅如雨后春笋般出现。餐饮服务作为中职
期刊
内容提要:新的课程标准对初中英语教学提出了新的要求,英语教学如何适应时代的发展,这是每一个英语教育工作者面临的新问题。这次新课改将构建一个开放的、充满生机和有中国特色的社会主义基础教育课程体系。本文主要从英语教学的角度来解读课程改革对教学的意义。  关键词:课程改革 英语教学 影响  英语教学改革是新一轮基础教育课程改革的重要内容之一。它要求我们在总结经验教训的基础上,对英语教学的观念、目标、内容
期刊
[摘要] 良好的学习兴趣是学习活动中最直接最有效的推动力,兴趣的形成依赖于学习兴趣的培养。面对素质相对较低,学习缺乏主动性,根本谈不上对数学有兴趣的中职学生,提高他们的学习数学的兴趣是我们中职教师迫切需要解决的问题。  [关键词] 数学教学;学习兴趣;激发  学习兴趣是指人比较愉快地力求接近并认识某种事物或活动而乐意进行学习的心理倾向,它表现为学生对某种学习内容或从事某种学习活动的选择性态度和积极
期刊
摘要:长期以来,云南省普洱市澜沧县是拉祜族聚集的地区,英语教学进展缓慢,由于拉祜族学生自身学习语言的特点及其生活环境的影响,英语成绩两极分化严重,许多拉祜族学生慢慢丧失了学习英语的信心,最终放弃了这个学科,而变成了拉祜族学生继续学习前行的阻力。本文认为要改变这种不良状况,有效的教学和诱导是关键,为拉祜族学生的英语学习打下基础。  关键词:基础知识、诱发兴趣、教会学习、培养、自学能力  云南省普洱市
期刊
轻负高效的智慧课堂是每个老师追求的终极目标。轻负就是要让学生在轻松、愉悦的环境中学习,“负担轻”,解放孩子,拓展学生个性发展的空间。轻负高效就是要“教得活”,“学得活”,使学生在“学得好”的同时又不至于负担过重。  正如《数学教学大纲》指出:“学生是数学学习的主人。在教学过程中,要加强学生的数学实践活动,引导他们在实践中主动地获得知识,形成能力,避免烦琐的分析和琐碎机械的练习。”  如何才能真正地
期刊
地理学科是研究人类赖以生存和发展的地理环境,以及人类活动与地理环境关系的一门学科。其教学目的不仅是让学生获得基本的地理技能和方法,更重要的是要让学生受到爱国主义、辩证唯物主义和历史唯物主义的思想政治教育,以及有关国情,国策教育,同时还要对学生進行科学的资源观、人口观、环境观的教育。德国教育学家赫而巴特有句名言“教学产生思想,而教育则形成品格,教育不能脱离教学,这就是我教育的全部” ,由这句话我们不
期刊
摘要:对口升学为中职学生提供了上大学的机会,但必须要经历高考的严格筛选,再加上中职学生普遍学习基础薄弱,因此针对中职学生进行针对性的考前复习是中职院校的重要工作之一。本文正是基于次数,对中职对口升学英语考试的复习流程进行详细讲解,旨在提高教师的教学效率和学生们的复习质量,从而全面的提高学生升学率。  关键词:中职;升学;英语;复习  一、合理规划复习流程  合理的复习流程规划可以有效提高学生的复习
期刊
思维,被恩格斯誉为“世间最美丽的花朵”,无论是学生的学习活动,还是人类的一切发明创造活动,都离不开思维,数学是思维的体操,数学思维的深刻性是数学思维品质的基础,是数学观念,数学意识的集中反映,数学思维的深刻性是指数学思维活动的抽象程度和概括水平,涉及思维活动的深度、广度和难度,经集中表现在对于数学问题的思考,能抓住问题的本质和规律,深入细致地加入以分析和解决,而不被一些表面的现象所迷惑。平时笔者经
期刊