资源简介
禁忌搜索算法+蚁群算法,两种算法的融合解决矩形排样
代码片段和文件信息
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个文件信息
评论
共有 条评论