TrabalhosGratuitos.com - Trabalhos, Monografias, Artigos, Exames, Resumos de livros, Dissertações
Pesquisar

Programa C++ Problema do Formigueiro

Por:   •  11/4/2021  •  Trabalho acadêmico  •  1.035 Palavras (5 Páginas)  •  142 Visualizações

Página 1 de 5

#include <iostream>

#include <ctime>

#include <cstdlib>

using namespace std;

int formiga(int caminho[10][10], float feromonio[10][10], int comeco, int final, int marcado[10]){

float fer[10][10];//=feromonio;

for(int aux=0;aux<=9;aux++){

for(int aux2=0;aux2<=9;aux2++){

fer[aux][aux2]=feromonio[aux][aux2];

}

}

float cont;

if(comeco==final){ //checando se condicao de termino foi encontrada

for(int aux=0;aux<=9;aux++){ //passando o coeficiente de evaporacao para todos os caminhos

for(int aux2=0;aux2<=9;aux2++){

feromonio[aux][aux2]=feromonio[aux][aux2]*0.9; //evaporacao de 10%

}

}

for(int aux=0;aux<=9;aux++){ //contando os lugares percorridos

if(marcado[aux]>0){

cont++;

}

}

cont--;

cont=5/cont; //definindo o feromonio a ser depositado nos lugares

for(int aux=0;aux<=9;aux++){

for(int aux2=0;aux2<=9;aux++){

feromonio[aux2][aux]=feromonio[aux2][aux]+fer[aux2][aux];

}

}

for(int aux=0;aux<=9;aux++){

for(int aux2=0;aux2<=9;aux2++){

feromonio[aux][aux2]=fer[aux][aux2];

}

}

return 1;

}

int perc[10]; //vetor mostrando o caminho percorrido

for(int aux=0;aux<=9;aux++){ //pegando o caminho percorrido ate agora

perc[aux]=marcado[aux];

}

int dif; //contador de caminhos possiveis

int som=0; //somatoria numerica de todo o feromonio dos caminhos possiveis

int perco[10]; //indicativo dos caminhos que podem ser percorridos

for(int aux=0;aux<=9;aux++){

if(caminho[comeco][aux]==1){

perco[aux]=1;

som=som+feromonio[comeco][aux]*100; //somando o feromonio

dif++; //contando a quantidade de caminhos diferentes

}

}

int VET[som];

int atual=0;

int marc=0;

int somatoria=0;

for(int aux=1;aux<dif;aux++){

while(perco[marc]<=0){

marc++;

}

for(int aux2=atual;aux2<=atual+perc[marc];aux2++){

VET[aux2]=aux;

}

atual=atual+perco[marc];

}

int com=rand()%(som);

formiga(caminho,fer,com,final,perc); //recursividade para seguir pro proximo local

}

int main(){

string algo;

int marcado[10]={1,0,0,0,0,0,0,0,0,0}; //vetor com o ponto de partida marcado

int caminho[10][10]; //matriz com todos os caminhos possiveis

float feromonio[10][10]= {0, 1, 1, 0, 0,

...

Baixar como (para membros premium)  txt (4.5 Kb)   pdf (35.6 Kb)   docx (9.8 Kb)  
Continuar por mais 4 páginas »
Disponível apenas no TrabalhosGratuitos.com