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类介绍
随机推荐
- Oracle to_char 转换数值
SQL> Select CONCAT(TO_CHAR('0.001'*100,'990.99'),'%') FROM DUAL; CONCAT(TO_CHAR(' --------------- ...
- DOS基础命令
对服务(service)的操作 命令 功能 Net start 查看Windows开启的服务 Net stop [service name] 停止服务 net start [service name] ...
- [总结] JDBC数据库操作
1.加载驱动--告诉驱动管理将使用哪一个数据库的驱动包. class.forName("com.mysql.jdbc.Driver"); 2.操作JDBC ADI完成数据库动作 D ...
- web前端基础知识jQuery-补
一.JS正则 1.定义正则表达式 JavaScript种正则表达式有两种定义方式,定义一个匹配类似 <%XXX%> 的字符串: 1)构造函数 var reg=new RegExp('< ...
- 判断访问的是移动端还是PC端,如果是移动端跳转页面
<script type="text/javascript"> var mobileAgent = new Array("iphone", &quo ...
- 使用AutoIT对增加和删除文件属性的实现
编写历程: 前段日子,晚上下班回家,一个舍友问我可不可以将一个目录下的隐藏文件全部显示出来(变成非隐藏文件),我说可以. 之后就开始大刀阔斧的寻找方法来做这件事,上网找,说需要一个Windows下的小 ...
- DEV全选多选小技巧
var v1 = bindingSourceBase.DataSource as DataTable; foreach (DataRowView v in v1.DefaultView) { v[&q ...
- LINQ使用细节之.AsEnumerable()和.ToList()的区别
先看看下面的代码,用了 .AsEnumerable(): 1 var query = (from a in db.Table2 where a = SomeCondition3 select a.So ...
- 家教O2O维护“老师”的逼格,算不尊重市场吗
既然做O2O,本身就是把这当服务业的.出钱的人才是老大.老师受到尊重是因为你传授的东西他人认可,而不该是因为“老师”两个字.另外,成年人会去请家教的,往往是自己有一些长处的.你只是一方面的老师,人家可 ...
- 一个python的计算熵(entropy)的函数
计算熵的函数: # -*- coding: utf-8 -*- import math #the function to calculate entropy, you should use the p ...