【发布时间】:2010-11-05 03:51:52
【问题描述】:
所以我正在实现一个启发式算法,我遇到了这个函数。
我有一个 1 到 n 的数组(C 上的 0 到 n-1,w/e)。我想选择一些我将复制到另一个数组的元素。给定一个参数 y,(0
根据作者的说法,“l”是一个随机数:0
所以我编写了函数的第一部分,因为 y
这是 C 测试代码。 “x”是“l”参数。
//hate how code tag works, it's not even working now
int n = 100;
float y = 0.2;
float n_copy;
for(int i = 0 ; i < 20 ; i++)
{
float x = (float) (rand()/(float)RAND_MAX); // 0 <= x <= 1
x = x * n; // 0 <= x <= n
float p1 = (1 - y) / (n*y);
float p2 = (1 - ( x / n ));
float exp = (1 - (2*y)) / y;
p2 = pow(p2, exp);
n_copy = p1 * p2;
printf("%.5f\n", n_copy);
}
以下是一些结果(截断 5 位小数):
0.03354
0.00484
0.00003
0.00029
0.00020
0.00028
0.00263
0.01619
0.00032
0.00000
0.03598
0.03975
0.00704
0.00176
0.00001
0.01333
0.03396
0.02795
0.00005
0.00860
文章是:
http://www.scribd.com/doc/3097936/cAS-The-Cunning-Ant-System
第 6 和 7 页。
或在谷歌上搜索“cAS:狡猾的蚂蚁系统”。
那么我做错了什么?我不相信作者是错的,因为有超过 5 篇论文描述了相同的功能。
我所有的互联网给任何帮助我的人。这对我的工作很重要。
谢谢:)
【问题讨论】:
-
不要使用代码标签。 SO 很奇怪,它使用 4 个空格来表示代码。只需复制代码,然后将其全部选中,然后按1010按钮使其成为代码。
-
那是因为问答框使用 Markdown:daringfireball.net/projects/markdown/syntax
标签: c++ probability heuristics montecarlo ant-colony