当前位置:首页 > LF算法整个算法来自一种利用信息熵的群体智能聚类算法提供的算法
LF算法:整个算法来自《一种利用信息熵的群体智能聚类算法》提供的算法 一、算法伪码: 1、初始化:
1.1每一个空间的点映射到二维窗格,每个空间的点分配唯一的二维窗格坐标。一个窗格只能有一个点。
1.2为每一只蚂蚁在二维窗格分配唯一的地址
(第一步需要注意的是:空间上点的位置和平面窗格上点的位置完全是两回事,空间上两个点的位置来计算两点之间的距离;而平面上点的位置,主要是用来确定半径为S的区域内的点,计算两个点的空间距离,进而计算群体相似度,最后通过群体相似度来计算拾起或者放下的概率)
2、迭代tmax次
3、所有的蚂蚁运动一次
4、产生一个0-1之间的随机数R
5、如果当前蚂蚁处于未负载状态,而且当前蚂蚁所在处的有点Oi 5.1、计算群体相似度f(Oi)和拾起概率Pp(Oi) 5.2、如果拾起概率Pp(Oi)》R
5.2.1、当前蚂蚁拾起点Oi(注意Oi在窗格中的位置是不断变动的) 5.3 5.2结束
6、如果条件5不成立,如果当前蚂蚁处于负载状态,持有点Oi,而且当前位置没有其他点 6.1计算群体相似度f(Oi)和放下概率Pd(Oi) 6.2如果放下概率Pd(Oi)》R
6.2.1放下节点Oi(注意点Oi在窗格中的位置是不断变动的) 6.3 6.2结束 7、5结束
8、当前蚂蚁移到邻近区域内的没有被其他蚂蚁占据的节点
9、所有的蚂蚁运动一次结束 10、迭代tmax次结束
二、算法数据结构
1、这个地方主要用到三个数据结构
? 蚂蚁矩阵Ant_Matrix:假设蚂蚁有k只,这个矩阵的大小是k*3维,k代表蚂蚁数,第1、
2列表示蚂蚁的当前位置,第3列表示蚂蚁携带的结点的下标
? 结点的空间矩阵Item_Space:假设每个结点有m个属性,而共有n个结点,这个矩阵的大
小是n*m
? 结点的窗格矩阵Item_Window:共有n个结点,这个矩阵的大小是n*2,这两列代表点在
窗格上的位置。
2、重要的公式: ? 群体相似度计算
? 放下或拾起概率
3、整个程序结构
? 求两点空间的距离函数(完成)
a) 输入参数:
? Oi点 ? Oj点
? 点的空间矩阵Item_Space b) 输出参数:
? 两点之间的距离
? 求Oi点在平面窗格内S*S区域内的邻接点的下标矩阵(完成)
a) 输入参数:
? Oi点
? S局部查找范围
? Item_Window(结点的窗格矩阵) ? Z平面窗格总区域 b) 输出参数
? 所有在S*S区域内的结点的下标
? 设计函数计算群体相似度计算(完成)
a) 输入参数:
? Oi点(需要计算的点)、 ? S(S*S区域内)、 ? Alpha、
? Item_Window(结点的窗格矩阵) b) 输出参数:
? Oi点的相似度
? 放下概率的计算(完成)
a) 输入参数:
? Oi点(需要计算的点)、 ? S(S*S区域内)、 ? Alpha、
? Item_Window(结点的窗格矩阵) ? K1 b) 输出参数
? 放下概率
? 拾起概率的计算(完成)
a) 输入参数:
? Oi点(需要计算的点)、 ? S(S*S区域内)、 ? Alpha、
? Item_Window(结点的窗格矩阵) ? K2 b) 输出参数
? 拾起概率
? 初始化函数(完成)
a) 输入参数
? 蚂蚁的数目ant_number ? 点的数目item_number
? 空间尺寸Z,空间大小Z*Z b) 输出参数
? 蚂蚁的平面窗格矩阵 ? 点的平面窗格矩阵
? 当前蚂蚁移到邻近区域内的没有被其他蚂蚁占据的节点
a) 输入参数
? 蚂蚁编号ant_no ? S局部查找范围
? ant_matrix(蚂蚁的窗格矩阵) ? Z平面窗格总区域 b) 输出参数
? 蚂蚁前往的结点坐标
? 判断蚂蚁所在处是否有点
a) 输入参数
? x蚂蚁横坐标 ? y蚂蚁纵坐标
? item_window所有点的坐标矩阵 b) 输出参数
? 蚂蚁所在处是否有点,有点1,无点0
共分享92篇相关文档