矩形排料问题,组合优化问题

上传人:第*** 文档编号:34261891 上传时间:2018-02-22 格式:DOCX 页数:10 大小:19.76KB
返回 下载 相关 举报
矩形排料问题,组合优化问题_第1页
第1页 / 共10页
矩形排料问题,组合优化问题_第2页
第2页 / 共10页
矩形排料问题,组合优化问题_第3页
第3页 / 共10页
矩形排料问题,组合优化问题_第4页
第4页 / 共10页
矩形排料问题,组合优化问题_第5页
第5页 / 共10页
点击查看更多>>
资源描述

《矩形排料问题,组合优化问题》由会员分享,可在线阅读,更多相关《矩形排料问题,组合优化问题(10页珍藏版)》请在金锄头文库上搜索。

1、二维矩形条带装箱问题的底部左齐择优匹配算法_蒋兴波 matlab的实现,不包括遗传算法部分。function area = PackingAlgorithm(length,width,length1,width1,length2,width2,length3,width3,restrict1,restrict2)area = 0;frameCount = 1;count1 = 0;count2 = 0;runLLABF;function runLLABFrectBig.length = length;rectBig.width = width;rectSmall(1).length = len

2、gth1;rectSmall(1).width = width1;rectSmall(1).color = r;rectSmall(2).length = length2;rectSmall(2).width = width2;rectSmall(2).color = b;rectSmall(3).length = length3;rectSmall(3).width = width3;rectSmall(3).color = g;edges(1).x = 0;edges(1).y = 0;edges(1).length = rectBig.length;edges(2).x = -100;e

3、dges(2).y = 10000;edges(2).length = 0;edges(3).x = rectBig.length+100;edges(3).y = 10000;edges(3).length = 0;while(1)flag = -1;if(flag = restrict1rectSmall(1).length = 100000;rectSmall(1).width = 100000;endif count2 = restrict2rectSmall(2).length = 100000;rectSmall(2).width = 100000;endsortRect = so

4、rt(rectSmall(1).length,rectSmall(1).width,.rectSmall(2).length,rectSmall(2).width,.rectSmall(3).length,rectSmall(3).width);minRect = sortRect(1);minRect2 = sortRect(2);sortedEdges,lowestEdge,id = edgesSort(edges);,h = size(sortedEdges);for i = 1:hif(sortedEdges(i).y+minRect lengthbreakendif frameCou

5、nt 300break;endendendfunction initialrectBig.length = 30;rectBig.width = 20;rectSmall(1).length = 4;rectSmall(1).width = 3;rectSmall(2).length = 3;rectSmall(2).width = 3;rectSmall(3).length = 4;rectSmall(3).width = 1;edges(1).x = 0;edges(1).y = 0;edges(1).length = rectBig.length;% edges(1).x = 12;%

6、edges(1).y = 10;% edges(1).length = 2;% % edges(2).x = 3;% edges(2).y = 8;% edges(2).length = 2;% % edges(3).x = 6;% edges(3).y = 4;% edges(3).length = 1;% % edges(4).x = 1;% edges(4).y = 8;% edges(4).length = 2;endfunction sortedEdges,lowestEdge,id = edgesSort(edges)sortedEdges = edges;,m = size(so

7、rtedEdges);for j = 1:mfor i = j:mif(sortedEdges(i).x=2)i = 2;while(1)if( sortedEdges(i-1).y = sortedEdges(i).y )sortedEdges(i-1).length = sortedEdges(i-1).length + sortedEdges(i).length;for j = i:(m-1)sortedEdges(j) = sortedEdges(j+1);endsortedEdges(m) = ;,n = size(sortedEdges);m = n;continue;end,n

8、= size(sortedEdges);m = n;if i = nbreak;endi = i+1;endelse lowestEdge = sortedEdges(1);endlowestEdges = sortedEdges;,n = size(lowestEdges);y = lowestEdges(1).y;for i = 2:nif(ylowestEdges(i).y)y = lowestEdges(i).y;endend for i = 1:nif(lowestEdges(i).y = y )lowestEdge = lowestEdges(i);id = i;break;end

9、endendfunction Edges,flag = FullFitFirst(Edges,lEdge,lEdgeId,rectSmall)for i = 1:3if ( rectSmall(i).length = lEdge.length ).& ( (lEdge.y+rectSmall(i).width = Edges(lEdgeId-1).y) | ( lEdge.y+rectSmall(i).width = Edges(lEdgeId+1).y )if( lEdge.y+rectSmall(i).width selected(j).area)tmpSelected = selecte

10、d(i);selected(i) = selected(j);selected(j) = tmpSelected;endendendindex = selected(n).index;if(selected(n).rotation = 0)if lEdge.y+rectSmall(index).width selected(j).area)tmpSelected = selected(i);selected(i) = selected(j);selected(j) = tmpSelected;endend endindex = selected(n).index;if(selected(n).

11、rotation = 0)Edges(m+1).x = lEdge.x+rectSmall(index).length;Edges(m+1).y = lEdge.y;Edges(m+1).length = lEdge.length-rectSmall(index).length;Edges(lEdgeId).y = lEdge.y+rectSmall(index).width;Edges(lEdgeId).length = rectSmall(index).length;figurePlot(lEdge,rectSmall(index),rectSmall(index).color);area

12、 = area+rectSmall(index).width*rectSmall(index).length;if index = 1count1 = count1+1;endif index = 2count2 = count2+1;end endif(selected(n).rotation = 1)Edges(m+1).x = lEdge.x+rectSmall(index).width;Edges(m+1).y = lEdge.y;Edges(m+1).length = lEdge.length-rectSmall(index).width;Edges(lEdgeId).y = lEd

13、ge.y+rectSmall(index).length;Edges(lEdgeId).length = rectSmall(index).width;figurePlotRotation(lEdge,rectSmall(index),rectSmall(index).color);area = area+rectSmall(index).width*rectSmall(index).length;if index = 1count1 = count1+1;endif index = 2count2 = count2+1;end end endendfunction Edges,flag =

14、cannotPalce(Edges,lEdge,lEdgeId,rectSmall,flag2)count = 0;for i = 1:3if (rectSmall(i).width lEdge.length) & (rectSmall(i).length lEdge.length) | (flag2 = -1)count = count + 1;endendif count = 3flag = 1;if Edges(lEdgeId-1).y Edges(lEdgeId+1).yEdges(lEdgeId).y = Edges(lEdgeId-1).y;elseEdges(lEdgeId).y

15、 = Edges(lEdgeId+1).y;endendflag = 1;endfunction figurePlot(lEdge,rect,color)x1 = lEdge.x;y1 = lEdge.y; x2 = x1+rect.length;y2 = y1;x3 = x2;y3 = y2 + rect.width;x4 = x1;y4 = y3;x = x1,x2,x3,x4;y = y1,y2,y3,y4;patch(x,y,color,facealpha,0.5);axis(-1 length+1 -1 width+1)% set(gca,XTick,0:2:length);% set(gca,YTick,0:2:width);% m(frameCount) = getframe;m = getframe(gcf);im = frame2im(m);I,map = rgb2ind(im,256);if frameCount = 1imwrite(I,map,out.gif,gif,loopcount,inf,Delaytime,0.2)elseimwrite(I,map,out.gif,gif,write

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 解决方案

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号