Abaixo está o código completo (mas ineficiente :c).
Eu criei uma nova versão, não orientado a objetos desta vez (Amazeno
no array o string diretamente). E mesmo assim, ocorre esse "vinculo"
entre os campos do array com os mesmos valores. Estou achando que é
algo mais grave do que eu pensei. Compilei usando o Flex builder 2 e
3, mas o resultado é o mesmo
//Cromossomo.as
package
{
public class Cromossomo
{
private var tamCromossomo:uint = 1;
private var gene:Array = ["0"];
private var i:Number = 0;
public function Cromossomo(tam:uint):void{
tamCromossomo = tam;
for (i=0; i<tam; i++){
gene[i]= "0";
}
for (i=0; i<tam; i++){
_gene = _gene +
Math.round(Math.random()).toString();
}
//trace(gene);
}
public function getGene(inicio:uint,fim:uint):String{
var juncao:String = gene.join();
//Uso de expressões regulares para retirada da vírgula
var pattern:RegExp = /,/gi;
var resultado:String = juncao.replace(pattern, "");
return resultado.substring(inicio,fim);
return _gene;
}
public function setGene(novoString:String):void{
this._gene = novoString;
}
public function mutaGene(teste:String):void{
do{
var
posicao:uint=Math.round(Math.random()*tamCromossomo-1);
var mutado:String;
if (_gene.charAt(posicao) == "0"){
mutado = "1";
} else {
mutado = "0";
}
} while (posicao == 4294967295);
_gene = _gene.substring(0,posicao-1) + mutado +
_gene.substring(posicao+1,tamCromossomo-1);
}
}
}
//Populacao.as (O trecho inicial)
package
{
public class Populacao
{
import mx.controls.Alert;
import mx.core.Application;
private var individuos:Array;
private var censo:uint;
private var selecao:String;
private var taxaMutacao:Number;
private var tipoCross:String;
private var tamGene:uint;
private var valorSoma:Number;
private var valorMult:Number;
private var limiteSuperior1:uint = 0;
private var limiteSuperior2:uint = 1;
private var finalizado:Boolean = false;
private var Resultado:Array = new Array(); //+
(etapa,gene,avaliacao)
private var limite:uint;
private var tipoProblema:uint;
private var etapa:uint;
public function
Populacao(numero:uint,tam:uint,soma:Number,mult:Number,problema:uint):void{
censo = numero;
individuos = new Array(numero);
tamGene = tam;
valorSoma = soma;
valorMult = mult;
tipoProblema = problema;
Genesis(problema);
}
private function Genesis(problema:uint):void{
var i:int;
var avaliacao:Number;
for (i=0; i<censo; i++){
var crom:Cromossomo = new Cromossomo(tamGene);
trace("Gene nº "+i.toString());
switch (problema){
case 1 : avaliacao =
avalia1(crom.getGene(0,tamGene));
break;
case 2 : avaliacao =
avalia2(crom.getGene(0,tamGene));
break;
case 3 : avaliacao =
avalia3(crom.getGene(0,tamGene));
break;
}
individuos[i] = [crom,avaliacao];
if (avaliacao == Infinity){
etapa = 0;
Resultado[etapa] =
[etapa,crom.getGene(0,tamGene),avaliacao];
finalizado = true;
}
}
//MostrarPop(individuos);
}
.......
}
--~--~---------~--~----~------------~-------~--~----~
Você recebeu esta mensagem porque está inscrito na lista "flexdev"
Para enviar uma mensagem, envie um e-mail para [email protected]
Para sair da lista, envie um email em branco para [EMAIL PROTECTED]
Mais opções estão disponíveis em http://groups.google.com/group/flexdev
-~----------~----~----~----~------~----~------~--~---