map.cpp

来自「双蚁群算法实现机器人路径规划」· C++ 代码 · 共 79 行

CPP
79
字号
// MAP.cpp: implementation of the MAP class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"

#include "MAP.h"

#include "operation.h"

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

MAP::MAP()
{
	int i,j;
	rho=0.7;// XXX
	for(j=0;j<mapH;j++)
		for(i=0;i<mapV;i++)
		{
			point[i][j].PointType=0;
			point[i][j].tau=20;
		}

}

MAP::~MAP()
{

}

void MAP::addobstacle(unsigned int point)
{

}

unsigned int MAP::PointState(unsigned int p)
{
	unsigned int i,j,state;
	i=p%mapH;
	j=p/mapH;
	state=point[j][i].PointType;
	return state;
}

void MAP::UpdateMap() //挥发信息素
{
	unsigned int i,j;
	for(i=0;i<mapV;i++)
		for(j=0;j<mapH;j++)
		{
			point[i][j].tau = point[i][j].tau * rho;
			if(point[i][j].tau<20)
				point[i][j].tau=20;
		}
}

void MAP::UpdateInfo(double info,unsigned int *path)//写入新代信息素
{
	unsigned int i,x,y;
	//限制只写入可行解的信息素到地图中
	for(i=0;i<StepLimit;i++)
	{
		x=*path%mapH;
		y=*path/mapH;  //得到坐标点的位置

		point[y][x].tau+=info;
		if(point[y][x].tau>=200)
			point[y][x].tau=200;

		path++;

		if(*(path-1)==Target)//目标点 
		break;

	}
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?