void ant::move()
{
srand(time(NULL));
QList<double *> decision_table;
double sum = 0;
for(int i = 0; i < current_city->connections.size(); i++)
{
double *z = new double;
*z = pow((current_city->connections[i]->pheromon), alpha)*1000;
double u = pow((1.0/current_city->connections[i]->length), beta)*1000;
*z *= u;
if(visited_cities.indexOf(current_city->connections[i]->connects_to->city_number) >= 0) *z =0;
if(current_city->connections[i]->length == -1) *z = 0;
decision_table << z;
sum += *z;
}
if (sum == 0) return;
for(int i = 0; i < decision_table.size(); i++)
*(decision_table[i]) /= sum;
int zzz = rand() % 100;
double prob = zzz/100.0;
int i = 0;
double a = 0.00001;
for (i = 0; i < decision_table.size(); i++)
{
a += *(decision_table[i]);
if (a > prob) break;
}
travelled += current_city->connections[i]->length;
current_city = current_city->connections[i]->connects_to;
visited_cities << current_city->city_number;
decision_table.clear();
}
大哥你好热心呀,我也不想搞这种东西呀,自己没学过计算机,可是老师说必须做,所以没有办法呀。谢谢你!
全部程序挺多的,不知道能不能发给您,帮我看看?
追答可以,发到邮箱就行249467834@qq.com
本回答被提问者采纳