假设有一个网格,包含两个墙(被阻塞的单元)以及放置在网格上任何位置的食物。
现在,假设我们试图确定在这个网格上放置蚁群的最佳位置,这样蚂蚁必须以最小的距离(向任何方向到达/从蚁群的起点)获得最大的食物量。
到目前为止,我想出的最佳方法如下:
for each square on the grid
use a shortest path algorithm to find the distance to/from each food source from this square
sum these distances to find a number and put
我遇到了一个问题,我试图最小化一个具有连续参数的函数,该函数使用蚁群优化(蚁群优化,ACO)映射到连续域。
对于一个简化的例子,假设我试图最小化香蕉函数,它的最小值为(1,1):
%Function to optimize, should have minimum at (1,1)
function [res] = banana(x)
res = (1-x(1))^2+100*(x(2)-x(1)^2)^2;
end
如何通过ACO实现这一目标?
我必须编写这个程序,它有Ant类:
默认构造函数将实例变量queens初始化为一个名为“贝思”的皇后,将colonySize初始化为100,000。
定义的构造函数接受两个参数并初始化相应的实例变量。
方法显示,以以下格式显示有关蚂蚁的信息:
这个蚁群有以下的蚁后:女王1:贝丝,蚂蚁的颜色:黑色,大约蚁群的大小: 100000。
下面是我为此编写的类蚂蚁:
public class Ant {
private String[] queens= new String [1];
public String colour= "black";
private in
我正在尝试实现一种随机蚁群优化算法,但我在解决如何实现基于概率的移动选择时遇到了麻烦。
到目前为止,我已经实现的标准(贪婪)版本是,位于图G = (V,E)上顶点i的ant m将基于以下条件选择下一个顶点j,其中E是边的集合:
j = argmax(<fitness function for j>)
such that j is connected to i
我遇到的问题是试图实现一个随机版本,所以现在选择一个新顶点的标准是:j:
P(j) = <fitness function for j>/sum(<fitness function for J>)
w
我正在努力实施蚁群优化。试着参考本文:。由于我对这些问题没有任何答案,所以我在我的实施中被困在了一半。因此,我现在提出有关蚁群的具体问题:
到目前为止,我所做的是设置了一个2d数组映射,为地图周围的边界和障碍物设置了0值。
通过在该数组中的随机行、列插入0,在任意位置生成障碍物。
我已经把源头,所有蚂蚁开始的旅程,从左下角开始。我已经把目的地定位在右上角。
使用VB.Net中的Graphics函数编写了可视化绘制地图的代码,它工作得很好。信息素的颜色梯度显示在地图上(即。在地图上更多的信息素沉积的白色阴影,否则暗色)
我当前的实现伪代码如下所示:
for each an
现在,我正在创建具有bezier控制柄的多边形。它工作得很好,除了现在我总是这样做:
for(float i = 0; i < 1; i += 0.04)
{
interpolate A, a.handle to B.handle, B at time i
}
问题是,无论点A和B之间的距离有多短或多长,它总是会产生相同数量的点。我怎么做才能让它看起来总是很好,但只能插值到它必须的程度。例如:如果Distance(A,B)是40,那么它可能只细分15次,但如果Distance(A,B)是20,它可能只细分7次,等等。我如何才能将其作为质量ex的函数:
float GetThresh