Oi pessoal.
No meu projeto de pesquisa foi implementado um sistema genético-fuzzy para definir um confinamento de um câncer. Na verdade, foram implementados 2 AGs: um normal e outro híbrido (na verdade, é um outro AG para decidir as melhores regras).
Ok, eu sei que AG é velho para a atualidade e tal, mas é utilizado no meio acadêmico.
Meus companheiros de pesquisa não sabem que eu estou postando isso. Na verdade, é mais para fins curiosos e otimização.
Para testar, foi feita uma automação, ou seja, são variados os parâmetros (dentro de 5 fors) e são feitas 10 execuções do AG. Quando eu chamo o método executarTestes() já começam as execuções com os parâmetros variando e tal. Até aí tudo bem.
Porém, o pessoal que está testando o outro AG (aquele sem hibridização), tem testado na mão (eles chamam o método para cada parâmetro do AG) e eles terminaram em uma quantidade menor de tempo. Nosso AG demorou 9 dias diretos, dia a noite, para realizar os testes e mesmo assim não terminou. Tem execuções que demoram 30 horas! Foi notado, além disso, que os AGs que são executados “na mão” demora menos. Nossa suposição para tal coisa é o Garbage Collector.
Minha pergunta é: tem como otimizar isso? Já ouvi gente falando que usar
System.gc();
é gambi e que não sei o que, mas teria como fazer de outra maneira? Uma alternativa que vamos utilizar é criar um .bat, executando java ClasseTeste.java. Não vi outra saída para isso.
Será que tem como otimizar o tempo de testes sem utilizar o .bat?