JavaACOFramework的各个类介绍(part1 : Ant类)
public abstract class Ant extends Observable implements Runnable {
public static int ANT_ID = 1; // ANT_ID是蚂蚁的身份标识起始位,设置为1
/** Importance of trail */
public static final int ALPHA = Settings.ALPHA;// ALPHA是计算转移概率p时设的参数之一(见蚁群算法简介)
/** Importance of heuristic evaluate */
public static final int BETA = Settings.BETA;//BETA是计算转移概率p时用户设定的参数之一
/** Identifier */
public int id = ANT_ID++; //id是每个蚂蚁的身份标识,不能重复
public ACO aco; // ACO是蚁群算法类,代表蚂蚁采用什么样的策略来搜索,具体将在ACO类里详细介绍
public List<Integer> tour; // tour是个整型数组,它存放着蚂蚁走过的每个节点编号
/** The Current Node */
public int currentNode; // currentNode是蚂蚁当前所在的节点编号
public int[][] path;//path是个整型标志位矩阵,用来记录两个节点间的边是否被蚂蚁访问过
public List<Integer> nodesToVisit;//一个整型列表,记录蚂蚁从当前节点出发可通过一步到达的节点编号
public double tourLength;//蚂蚁创建路径的总长度
/*构造方法 */
public Ant(ACO aco) {
this.aco = aco;
reset();
}
/*将蚂蚁的所有属性恢复出厂设置*/
public void reset(){
this.currentNode = -1;
this.tourLength = 0;
this.nodesToVisit = new ArrayList<Integer>();
this.tour = new ArrayList<Integer>();
this.path = new int[aco.p.getNodes()][aco.p.getNodes()];
}
/*重写了父类的run方法,父类主要用来实现多线程编程*/
@Override
public void run() {
init(); //初始化
explore();//构造路径
setChanged();
notifyObservers(this);//通知监听器线程结束
}
/*初始化:在问题包含的节点中随机选取一个作为蚂蚁搜索的起点,把改点加到路径中,根据问题的不同设定邻域的范围 */
public void init(){
reset();
this.currentNode = PseudoRandom.randInt(0, aco.p.getNodes() - 1);
this.tour.add(new Integer(currentNode));
this.aco.p.initializeTheMandatoryNeighborhood(this);
}
/*输出蚂蚁的编号和路径的总长度*/
@Override
public String toString() {
return "Ant " + id + " " + tour+" "+tourLength;
}
/**
* 构造路径,只提供接口,具体由继承Ant类的子类实现
*/
public abstract void explore();
/**
* 复制蚂蚁,等待继承Ant类的子类实现
*/
public abstract Ant clone();
}
JavaACOFramework的各个类介绍(part1 : Ant类)的更多相关文章
- istringstream、ostringstream、stringstream 类介绍 和 stringstream类 clear函数的真正用途
istringstream.ostringstream.stringstream 类介绍 和 stringstream类 clear函数的真正用途 来源: http://blog.csdn.net/T ...
- JavaACOFramework的各个类介绍(part2 : Ant4AS类)
package aco.ant; import java.util.ArrayList; import util.RouletteWheel;//引入轮盘类 import aco.ACO;//引入蚁群 ...
- JavaACOFramework的各个类介绍(part3 : Ant4ACS类)
package aco.ant; import java.util.ArrayList; import sys.Settings; import util.PseudoRandom; import a ...
- SimpleDateFormat类介绍和 DateFormat类的format方法和parse方法
使用 SimpleDateFormat格式化日期 SimpleDateFormat 是一个以语言环境敏感的方式来格式化和分析日期的类.SimpleDateFormat 允许你选择任何用户自定义日期时间 ...
- CYQ.Data.Orm.DBFast 新增类介绍(含类的源码及新版本配置工具源码)
前言: 以下功能在国庆期就完成并提前发布了,但到今天才有时间写文介绍,主要是国庆后还是选择就职了,悲催的是上班的地方全公司都能上网,唯独开发部竟不让上网,是个局域网. 也不是全不能上,房间里有三台能上 ...
- Bullet核心类介绍(Bullet 2.82 HelloWorld程序及其详解,附程序代码)
实验平台:win7,VS2010 先上结果截图: 文章最后附有生成该图的程序. 1. 刚体模拟原理 Bullet作为一个物理引擎,其任务就是刚体模拟(还有可变形体模拟).刚体模拟,就是要计算预测物体的 ...
- spring中常用工具类介绍
http://www.cnblogs.com/langtianya/p/3875103.html 文件资源操作 Spring 定义了一个 org.springframework.core.io ...
- MediaRecorder类介绍
audiocallbackvideojavadescriptorencoding 目录(?)[+] 找到个MediaRecorder类介绍和大家分享一下. Mediarecorder类在官网的介绍和在 ...
- Object类介绍
一.Object类介绍
随机推荐
- JavaScript增强AJAX基础
<title>js类型</title> <meta http-equiv="content-type" content="text/html ...
- ios开发证书
文章写得很透彻 https://segmentfault.com/a/1190000004144556?f=tt&hmsr=toutiao.io
- dmidecode常用参数
dmidecode常用参数详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. dmidecode这个命令真是神器啊,他能快速的获取服务器的硬件信息,而且这个命令有很多的花式玩法,今 ...
- kali driftnet
语法 : driftnet [options] [filter code] 主要参数: -b 捕获到新的图片时发出嘟嘟声 -i interface 选择监 ...
- c 头文件<ctype.h>(二)
测试<ctype.h>函数 #include <stdio.h> #include <ctype.h> int main(){ ; ; i < ; ++i){ ...
- category用法
1.今天在复习之前的category的时候,遇到一个这样子的问题.查来一下,原来苹果的官方文档中有说明,苹果时不提倡我们在类别中重写原文件的内容,如果要重写,就继承他,然后重写,但是在项目中,有很多前 ...
- nodejs require//////////z
背景 这篇文基本都是反对的,反对的很有道理,不是说我这篇文章的内容错误,因为这篇文章是我在健身房学习node的时候写的,这些知识都很粗糙,后来发现官方的稳定更详细:地址:http://nodejs.o ...
- gulp外挂 uglify 的使用
1.js文件压缩 第一步:安装外挂 : 第二步:gulpfile.js 配置 : (首先看你的package.json 中有没有添加依赖,如果有 这一句,代表添加成功啦.) 输入以下代码 : var ...
- Windows Phone 二、WP控件
- jQuery插件的开发之$.extend(),与$.fn.extend()
jQuery插件的开发包括两种: 一种是类级别的插件开发,即给jQuery添加新的全局函数,相当于给jQuery类本身添加方法.jQuery的全局函数就是属于jQuery命名空间的函数,另一种 ...