E ae pessoal….Nao sei se alguem ja fez essa funcaozinha…mas eu fiz aqui e vo faze um tutorialzinho ai pra quem tiver afim de usar.
A funcao foi feita com os meu conhecimentos em Java..se alguem tiver mais conhecimento e tiver afim de alterar fique a vonts.
Recomendacoes: Nao tentde entender os codigos das classes Read e Cidades pois estao um pouco complexas.
Classes existentes: Main chama MC…para exemplificar o uso das funcoes e as respectivas classes de leitura do arquivo e a classe cidades.
Funcionamento das funcoes usadas no Main:
- Read C = new Read(“burma14.tsp”);
cria um objeto C para criar as cidades a partir do arquivo.
o nome burma14.tsp é o nome do arquivo com as cidades
- Cidade[] Cidades;
cria um vetor de Cidades que sera preenchido pela funcao CriarCidades da classe Read
- Cidades = C.CriarCidades();
retorna todas as cidades para o vetor Cidades
cada objeto Cidades[i] é uma cidade existente e possui seus respectivos atributos
- Usado para mostrar as cidades criadas.
for(int i = 0; i
Cidades_sequencial[i].MostrarCidade_Float();
Metodos da classe Read:
- Metodo Construtor: obtem o nome do arquivo a ser aberto. necessida na criacao do objeto que o nome do arquivo seja enviado.
- CriarCidades(): usado para ler do arquivo todas as cidades e retornar um vetor do tipo Cidade.
- NumeroCidades(): retorna o numero de cidades lidas do arquivo, recomenda-se usar depois da funcao CriarCidades() para ter o valor exato de cidades
Funcoes da classe Cidade:
Na tentativa de possibilitar a abertura de um padrao de arquivo foi necessario criar duas funcoes pois dependendo do tipo do arquivo possui valores altos referentes as cordenadas. Para que possa ser mostrada os valores da respectiva cidade foi criada as seguintes funcoes
- MostrarCidade(): usado para mostrar cidade com as variaveis double
- MostrarCidade_Float(): usado para mostrar cidade com as variaveis float
- getId(): retorna um int com o Id da cidade
- getX(): retorna um double com a cordenada X da cidade.
- getY(): retorna um double com a cordenada Y da cidade.
Obs: alguns padroes de arquivos, como o que sera usado no trabalho, usa-se float e nao double. Para solucionar basta fazer um cast para a variavel que recebera as cordenadas. Ex: System.out.print(” ” + (float)Cidades[i].getX()); imprimira o valor em float
Para que a funcao possa ler o arquivo ele tem que estar nesse padrao: Obs: ja foi testado em varios arquivos com esse pradao e funcionou.
- Usado para fazer o trabalho:
NAME: burma14
TYPE: TSP
COMMENT: 14-Staedte in Burma (Zaw Win)
DIMENSION: 14
EDGE_WEIGHT_TYPE: GEO
EDGE_WEIGHT_FORMAT: FUNCTION
DISPLAY_DATA_TYPE: COORD_DISPLAY
NODE_COORD_SECTION
1 16.47 96.10
2 16.47 94.44
3 20.09 92.54
4 22.39 93.37
5 25.23 97.24
6 22.00 96.05
7 20.47 97.02
8 17.20 96.29
9 16.30 97.38
10 14.05 98.12
11 16.53 97.38
12 21.52 95.59
13 19.41 97.13
14 20.09 94.55
EOF
- Outro arquivo testado para exemplificar a opcao de double\
NAME: ch130
TYPE: TSP
COMMENT: 130 city problem (Churritz)
DIMENSION: 130
EDGE_WEIGHT_TYPE: EUC_2D
NODE_COORD_SECTION
1 334.5909245845 161.7809319139
2 397.6446634067 262.8165330708
3 503.8741827107 172.8741151168
4 444.0479403502 384.6491809647
5 311.6137146746 2.0091699828
6 662.8551011379 549.2301263653
7 40.0979030612 187.2375430791
8 526.8941409181 215.7079092185
9 209.1887938487 691.0262291948
.
.
.
129 178.1107815614 104.6905805938
130 403.2874386776 205.8971749407
EOF
Basicamente é isso. Se tiverem duvida so me enviar um e-mail que resopnderei o mais rapido possivel e se necessitarem de mais alguma informacao na cidades e nao conseguirem alterar so me comunicar que altero.
Precisando do codigo so me pedir. MSN: gabriel_massote@hotmail.com
Espero ter ajudado e um abraco a todos.
Créditos: Gabriel Massote (Autor Original)