• 大小: 47KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-06-09
  • 语言: 其他
  • 标签:

资源简介

禁忌搜索算法+蚁群算法,两种算法的融合解决矩形排样

资源截图

代码片段和文件信息

using System;
using System.Collections.Generic;
using System.Text;
using System.Collections;

namespace TabuAnt
{
    class Ant
    {
        public int usedArea;//蚂蚁已切割的面积
        public bool[] selectedRectangle;//当前蚂蚁已经选择的矩形
        public bool[] allowedRectangle;//当前蚂蚁允许选择的矩形
        public int[] oldFitness;//记录以前2次的适应度值
        public Ant[] ant;//蚁群
        public Rectangle[] rectangle;//矩形
        public int[][] plank;//木板
        public int maxArea;//木板面积
        public int maxLength;//木板长度
        public int maxWide;//木板宽度
        public int[] sequence;//矩形件切割的次序
        
        /// 
        /// 蚂蚁构造函数
        /// 

        /// 蚁群
        /// 矩形
        /// 木板
        /// 木板长度
        /// 木板宽度
        public Ant(Ant[] ant Rectangle[] rectangle int[][] plank int maxLength int maxWide)
        {
            usedArea = 0;
            this.ant = ant;
            this.rectangle = rectangle;
            this.plank = plank;
            this.maxLength = maxLength;
            this.maxWide = maxWide;
            maxArea = maxLength * maxWide;
            selectedRectangle = new bool[rectangle.Length];
            allowedRectangle = new bool[rectangle.Length];
            oldFitness = new int[2] { 0 0 };
           sequence  = new int[rectangle.Length];
           for (int i = 0; i < sequence.Length; i++ )
           {
               sequence[i] = i + 1;
           }
        }

        /// 
        /// 初始化蚂蚁的解
        /// 

        public void InitAnt()
        {
            usedArea = 0;
            for (int i = 0; i < rectangle.Length; i++)
            { 
                selectedRectangle[i] = false;
                allowedRectangle[i] = true;
            }
        }

        /// 
        /// 计算蚂蚁还允许选择的矩形
        /// 

        public void CountAllowed()
        {
            RectanglePaking rping = new RectanglePaking();
            for (int i = 0; i < rectangle.Length; i++)
            {
                //检查是否能插入
                if (!selectedRectangle[i] && !rping.CanInsert(plank rectangle[i].wide rectangle[i].length))
                    allowedRectangle[i] = false;
            }
        }

        /// 
        /// 得到当前蚂蚁的适应度值
        /// 

        /// 适应度值
        public double FitnessValue()
        {
            double area = 0;
            for (int i = 0; i < rectangle.Length; i++)
            {
                if (selectedRectangle[i])
                    //适应度值 = 矩形件的长度 * 矩形件的宽度
                    area += rectangle[i].length * rectangle[i].wide;
            }
            return area / maxArea;
        }

        /// 
        /// 蚂蚁的下一步选择
        /// 

        /// 表示

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       5504  2010-11-02 11:46  TabuAnt\TabuAnt\Ant.cs

     文件      12288  2010-11-02 11:50  TabuAnt\TabuAnt\bin\Debug\TabuAnt.exe

     文件      38400  2010-11-02 11:50  TabuAnt\TabuAnt\bin\Debug\TabuAnt.pdb

     文件      14328  2010-11-02 11:50  TabuAnt\TabuAnt\bin\Debug\TabuAnt.vshost.exe

     文件        490  2009-06-11 05:14  TabuAnt\TabuAnt\bin\Debug\TabuAnt.vshost.exe.manifest

     文件        690  2010-10-22 21:00  TabuAnt\TabuAnt\bin\Debug\testFile.txt

     文件        143  2010-10-20 02:49  TabuAnt\TabuAnt\bin\Debug\testFile2.txt

     文件         83  2010-10-30 21:14  TabuAnt\TabuAnt\bin\Debug\testFile3.txt

     文件        299  2010-11-02 11:50  TabuAnt\TabuAnt\obj\Debug\TabuAnt.csproj.FileListAbsolute.txt

     文件      12288  2010-11-02 11:50  TabuAnt\TabuAnt\obj\Debug\TabuAnt.exe

     文件      38400  2010-11-02 11:50  TabuAnt\TabuAnt\obj\Debug\TabuAnt.pdb

     文件       7969  2010-11-02 11:46  TabuAnt\TabuAnt\Program.cs

     文件       1358  2010-11-02 11:48  TabuAnt\TabuAnt\Properties\AssemblyInfo.cs

     文件       7322  2010-11-02 11:46  TabuAnt\TabuAnt\RectanglePaking.cs

     文件       2594  2010-11-02 11:46  TabuAnt\TabuAnt\Retangle.cs

     文件       2647  2010-11-02 11:50  TabuAnt\TabuAnt\TabuAnt.csproj

     文件       7875  2010-11-02 11:46  TabuAnt\TabuAnt\TabuSearch.cs

     文件        911  2010-11-02 11:48  TabuAnt\TabuAnt.sln

    ..A..H.     10752  2010-11-02 11:50  TabuAnt\TabuAnt.suo

     目录          0  2010-11-02 11:48  TabuAnt\TabuAnt\obj\Debug\TempPE

     目录          0  2010-11-02 11:50  TabuAnt\TabuAnt\bin\Debug

     目录          0  2010-11-02 11:50  TabuAnt\TabuAnt\obj\Debug

     目录          0  2010-11-02 11:48  TabuAnt\TabuAnt\bin

     目录          0  2010-11-02 11:48  TabuAnt\TabuAnt\obj

     目录          0  2010-11-02 11:48  TabuAnt\TabuAnt\Properties

     目录          0  2010-11-02 11:49  TabuAnt\TabuAnt

     目录          0  2010-11-02 11:48  TabuAnt

----------- ---------  ---------- -----  ----

               164341                    27



............此处省略0个文件信息

评论

共有 条评论

相关资源