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类)的更多相关文章

  1. istringstream、ostringstream、stringstream 类介绍 和 stringstream类 clear函数的真正用途

    istringstream.ostringstream.stringstream 类介绍 和 stringstream类 clear函数的真正用途 来源: http://blog.csdn.net/T ...

  2. JavaACOFramework的各个类介绍(part2 : Ant4AS类)

    package aco.ant; import java.util.ArrayList; import util.RouletteWheel;//引入轮盘类 import aco.ACO;//引入蚁群 ...

  3. JavaACOFramework的各个类介绍(part3 : Ant4ACS类)

    package aco.ant; import java.util.ArrayList; import sys.Settings; import util.PseudoRandom; import a ...

  4. SimpleDateFormat类介绍和 DateFormat类的format方法和parse方法

    使用 SimpleDateFormat格式化日期 SimpleDateFormat 是一个以语言环境敏感的方式来格式化和分析日期的类.SimpleDateFormat 允许你选择任何用户自定义日期时间 ...

  5. CYQ.Data.Orm.DBFast 新增类介绍(含类的源码及新版本配置工具源码)

    前言: 以下功能在国庆期就完成并提前发布了,但到今天才有时间写文介绍,主要是国庆后还是选择就职了,悲催的是上班的地方全公司都能上网,唯独开发部竟不让上网,是个局域网. 也不是全不能上,房间里有三台能上 ...

  6. Bullet核心类介绍(Bullet 2.82 HelloWorld程序及其详解,附程序代码)

    实验平台:win7,VS2010 先上结果截图: 文章最后附有生成该图的程序. 1. 刚体模拟原理 Bullet作为一个物理引擎,其任务就是刚体模拟(还有可变形体模拟).刚体模拟,就是要计算预测物体的 ...

  7. spring中常用工具类介绍

    http://www.cnblogs.com/langtianya/p/3875103.html 文件资源操作     Spring 定义了一个 org.springframework.core.io ...

  8. MediaRecorder类介绍

    audiocallbackvideojavadescriptorencoding 目录(?)[+] 找到个MediaRecorder类介绍和大家分享一下. Mediarecorder类在官网的介绍和在 ...

  9. Object类介绍

    一.Object类介绍

随机推荐

  1. [转]ORACLE函数大全

    SQL中的单记录函数 1.ASCII返回与指定的字符对应的十进制数;SQL> select ascii('A') A,ascii('a') a,ascii('0') zero,ascii(' ' ...

  2. node的错误处理

    当node程序出现错误的时候,首先是要捕捉到错误,然后处理错误,不能让进程挂掉,最后是将错误写进日志. 1.在app.js最开始写,用process对象,监听uncaughtException事件pr ...

  3. hadoop实战 -- 网站日志KPI指标分析

    本项目分析apache服务器产生的日志,分析pv.独立ip数和跳出率等指标.其实这些指标在第三方系统中都可以检测到,在生产环境中通常用来分析用户交易等核心数据,此处只是用于演示说明日志数据的分析流程. ...

  4. MWeb for iOS 测试版介绍

    目前已开始第二次测试:MWeb for iOS 版本发布说明,更新至第二次测试版本  上图为 MWeb for iOS 的图标,再次感谢 @Producter http://weibo.com/u/ ...

  5. Oracle常用操作——创建表空间、临时表空间、创建表分区、创建索引、锁表处理

    摘要:Oracle数据库的库表常用操作:创建与添加表空间.临时表空间.创建表分区.创建索引.锁表处理 1.表空间 ■  详细查看表空间使用状况,包括总大小,使用空间,使用率,剩余空间 --详细查看表空 ...

  6. 不同数据库中同一张表的SQL循环修改语句

    select sample_value,Sample_GUID,row_number() over(order by sample_value )as rownumber into  #AATemp  ...

  7. NLog输出目标及类型

    targets:输出目标节点 target:配置一个输出目标 Type输出类型: Console        输出到控制台 Debugger     输出到VS输出窗口 File        输出 ...

  8. ios开发错误之: Undefined symbols for architecture x86_64

    错误如下: Undefined symbols for architecture x86_64: "_OBJC_CLASS_$_RoutingHTTPServer", refere ...

  9. Android爬坑之路

    做了那么久前端,现在终于可以回到我的老本行, 今天我用了一天的时间配置里Android开发环境,mac和windows双平台,eclipse和IDEA双平台,别问为什么,我就喜欢,中间大坑不断,再加上 ...

  10. Material Design Lite,简洁惊艳的前端工具箱。

    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,博客地址为http://www.cnblogs.com/jasonnode/ .网站上有对应每一 ...