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
-~----------~----~----~----~------~----~------~--~---

Responder a