domingo, 12 de junho de 2011

exemplo de java

package catolica.ia;

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;

import catolica.ia.ser.Populacao;

public class Ag {

public static void main(String[] args) {

File arquivo = new File("resultado.txt");
FileWriter fr = null;

try {
fr = new FileWriter(arquivo);

System.out.println("Inicio do experimento! (processando...) ");
Populacao p = new Populacao(100);
for (int i = 0; i < 25; i++) {               fr.write("geracao: " + i + "\n");               p.novaGeracao(0.10, 0.01);               fr.write(p.toString());            }            System.out.println("fim do experimento!");            fr.close();         } catch (IOException e) {            // TODO Auto-generated catch block            e.printStackTrace();         }               }   }     Populacao.java package catolica.ia.ser;      import java.util.ArrayList;   import java.util.Collection;   import java.util.Iterator;      /**   * Esta classe tem o objetivo de prover a abstração necessaria para o   * funcionamento de uma populacao de individuos.   *   * @author Daniel Gatis Carrazzoni   *    */   public class Populacao {         private Collection individuos;  

private int tamanho;

/**
* construtor.
*
* @param tamanho
*            tamanho da populacao.
*/
public Populacao(int tamanho) {
this.tamanho = tamanho;

individuos = new ArrayList(tamanho);  
initPopulacao(tamanho);
}

/**
* inicializa populacao.
*
* @param tamanho
*            tamanho da populacao.
*/
private void initPopulacao(int tamanho) {
for (int i = 0; i < tamanho; i++) {            individuos.add(new Individuo());         }      }         /**      * cria uma nova geração da população.      *       * @param taxaDeCruzamento      *            taxa de cruzamento.      * @param taxaDeMutacao      *            taxa de mutacao.      */      public void novaGeracao(double taxaDeCruzamento, double taxaDeMutacao) {         int iteracoes = (int)(taxaDeCruzamento * tamanho);                  for (int i = 0; i < iteracoes; i++) {            addIndividuo(getCasal().cruzar(taxaDeMutacao));         }      }         /**      * adiciona um individuo na população. caso o individuo a ser adicionado      * seja um mutante ele é colocado no lugar do individuo de menor fitness da      * populacao. caso a individuo não seja mutante só adiciona se o fitness do      * individuo seja maior que o menor fitness da populacao.      *       * @param individuo novo individuo.      */      private void addIndividuo(Individuo individuo) {         double menorFit = Integer.MAX_VALUE;         int indiceASubstituir = 0;            Individuo[] temp = new Individuo[tamanho];         individuos.toArray(temp);            for (int i = 0; i < temp.length; i++) {            if (temp[i].getFitness() <= menorFit) {               indiceASubstituir = i;               menorFit = temp[i].getFitness();            }         }            if (individuo.isMutante()) {            individuos.remove(temp[indiceASubstituir]);            individuos.add(individuo);         } else {            if (temp[indiceASubstituir].getFitness() < individuo.getFitness()) {               individuos.remove(temp[indiceASubstituir]);               individuos.add(individuo);            }         }      }            /**      * seleciona um casal apto ao cruzamento.      * @return casal.      */      private Casal getCasal() {            Individuo pai = selecionar();            Individuo mae;         do {            mae = selecionar();         } while (pai.equals(mae));            return new Casal(pai, mae);      }         /**      * selecao baseada no metodo da roleta.      * @return o individuo selecionado.      */      private Individuo selecionar() {         double somatorioDosFitness = 0;         double fitnessAcumulado = 0;         Individuo retorno = null;            Collection roleta = new ArrayList();            Iterator it = individuos.iterator();            while (it.hasNext()) {            somatorioDosFitness += it.next().getFitness();         }            Iterator it2 = individuos.iterator();         while (it2.hasNext()) {            Individuo individuo = it2.next();               roleta.add(new Object[] {                  new Double(fitnessAcumulado),                  new Double(fitnessAcumulado + individuo.getFitness()                        / somatorioDosFitness), individuo });               fitnessAcumulado += individuo.getFitness() / somatorioDosFitness;         }            double sorteio = Math.random();            Iterator it3 = roleta.iterator();         while (it3.hasNext()) {               Object[] atual = it3.next();                        double limiteInferior = ((Double) atual[0]).doubleValue();            double limiteSuperior = ((Double) atual[1]).doubleValue();            Individuo individuo = (Individuo) atual[2];               if (sorteio >= limiteInferior && sorteio < limiteSuperior) {               retorno = individuo;               break;            }         }            return retorno;      }         /**      * @see #toString()      */      public String toString() {         StringBuffer saida = new StringBuffer("Populacao: \n");            Iterator it = individuos.iterator();            while (it.hasNext()) {            saida.append("\n");            saida.append(it.next().toString());         }         return saida.toString();      }   }     Casal.java package catolica.ia.ser;      /**   * Esta classe tem o objetivo de prover a abstração necessaria para o funcionamento   * de um casal de individuos.   *   * @author Daniel Gatis Carrazzoni   *     */   public class Casal {            private Individuo pai;      private Individuo mae;            /**      *  construtor.      * @param pai individuo 1.      * @param mae individuo 2.      */      public Casal(Individuo pai, Individuo mae) {         this.pai = pai;         this.mae = mae;      }            /**      *  realiza o cruzamento entre o casal.      * @param taxaDeMutacao taxa de mutacao.      * @return filho gerado do cruzamento.      */      public Individuo cruzar(double taxaDeMutacao) {         return pai.cruzar(mae, taxaDeMutacao);      }   }     Individuo.java package catolica.ia.ser;      import java.util.ArrayList;   import java.util.Collection;      import catolica.ia.gen.Cromossomo;      /**   * Esta classe tem o objetivo de prover a abstração necessaria para o funcionamento   * de um individuo.   *   * @author Daniel Gatis Carrazzoni   */   public class Individuo implements Comparable {         private static final int TAMANHO_DO_DNA = 1;               private Cromossomo[] dna;         private boolean mutante;            /**      * construtor.      * @param dna array de cromossomos.      */      public Individuo(Cromossomo[] dna) {         this.dna = dna;      }            /**      * construtor simples.      *      */      public Individuo() {         this.dna = new Cromossomo[TAMANHO_DO_DNA];            for (int i = 0; i < dna.length; i++) {            this.dna[i] = new Cromossomo();         }      }            /**      * faz o cruzamento entre individuos e depois faz a mutacao no filho.      * @param individuo individuo para cruzar.      * @param taxaDeMutacao taxa de mutacao.      * @return filho gerado do cruzamento.      */      public Individuo cruzar(Individuo individuo, double taxaDeMutacao) {            boolean mutante = false;            Collection novoDna = new ArrayList();            for (int i = 0; i < dna.length; i++) {            Cromossomo novoCromossomo = getDna()[i].crossover(individuo                  .getDna()[i]);            if (novoCromossomo.mutation(taxaDeMutacao)) {               mutante = true;            }            novoDna.add(novoCromossomo);         }            Cromossomo[] temp = new Cromossomo[TAMANHO_DO_DNA];            Individuo filho = new Individuo(novoDna.toArray(temp));         filho.setMutante(mutante);            return filho;      }            /**      *  retorna o fenotipo custo do individuo.      * @return custo.      */      public double getCusto() {         int limiteSuperior = 20;         int limiteInferior = 1;                  return limiteInferior + ((limiteSuperior-limiteInferior)/255.0) *dna[0].getFenotipo(0, 8);      }         /**      *  retorna o fenotipo beneficio do individuo.      * @return beneficio.      */      public double getBeneficio() {         int limiteSuperior = 100;         int limiteInferior = 1;                           return limiteInferior + ((limiteSuperior-limiteInferior)/255.0) *dna[0].getFenotipo(8, 16);      }         /**      *  retorna o dna do indivduo.      * @return array de cromossomos.      */      public Cromossomo[] getDna() {         return dna;      }         /**      *  @see #toString()      */      public String toString() {         StringBuffer saida = new StringBuffer("Individuo: \n");            for (int i = 0; i < dna.length; i++)            saida.append(dna[i].toString() + "\n");            saida.append("mutante: " + isMutante() + "\n");         saida.append("custo: " + getCusto() + "\n");         saida.append("beneficio: " + getBeneficio() + "\n");         saida.append("fitness: " + getFitness() + "\n");            return saida.toString();      }            /**      *  retorna o fitness do individuo.      *  maximiza o beneficio e reduz o custo.      * @return fitness      */      public double getFitness() {         return 1.00 / ((getCusto() / getBeneficio()) + getCusto());      }         /**      *  compara dois individuos      * @param inidviduo      * @return 0 se for igual, 1 se for maior, -1 se for menor      */      public int compareTo(Object inidviduo) {         Individuo that = (Individuo) inidviduo;            double esse = this.getFitness();         double aquele = that.getFitness();            return new Double(esse).compareTo(new Double(aquele));      }         /**      * retorna se o individuo sofreu mutacao.      * @return true caso tenha sofrido mutacao.      */      public boolean isMutante() {         return mutante;      }         /**      *  seta o individuo mutante.      * @param mutante true ou false.      */      public void setMutante(boolean mutante) {         this.mutante = mutante;      }         /**      *  @see #equals(Object)      */      public boolean equals(Object individuo) {         if (individuo == this) {            return true;         }         if (!(individuo instanceof Individuo)) {            return false;         }         Individuo that = (Individuo) individuo;            return this.getDna().equals(that.getDna());      }   }     Cromossomo.java package catolica.ia.gen;      /**   * Esta classe tem o objetivo de prover a abstração necessaria para o funcionamento   * de um cromosso.   *   * @author Daniel Gatis Carrazzoni   */   public class Cromossomo {      private static final int TAMANHO_DO_CROMOSSOMO = 16;         private Gene[] genes;                   /**       *  construtor simples.       *       */      public Cromossomo() {         genes = new Gene[TAMANHO_DO_CROMOSSOMO];         initCromossomo();      }         /**      *  inicializa o cromossomo de uma forma aleatoria.      *      */      private void initCromossomo() {         for (int i = 0; i < genes.length; i++) {            genes[i] = new Gene();         }      }         /**      *  faz o cruzamento entre cromossomos.      *  seguindo a regra:      *  posicao par : gene do pai      *  posicao impar: gene da mae      *        *  exemplo      *        *   pai : 01011100      *   mae : 11100010      *        * filho : 01001000      *       *       *        * @param cromossomo cromossomo para cruzar.      * @return cromossomo filho.      */      public Cromossomo crossover(Cromossomo cromossomo) {         Cromossomo novoCromossomo = new Cromossomo();            for (int i = 0; i < genes.length; i++) {            Gene novoGene;            if (i % 2 == 0) {               novoGene = new Gene(this.getGenes()[i]                     .getValor());            } else {               novoGene = new Gene(cromossomo.getGenes()[i]                     .getValor());            }            novoCromossomo.getGenes()[i] = novoGene;         }         return novoCromossomo;      }         /**      * causa a mutacao para cada gene cromossomo.      *       * @param porcentagem taxa de mutacao.      * @return caso o cromossomo tenha sofrido mutacao retorna true.      */      public boolean mutation(double porcentagem) {         boolean retorno = false;                  for (int i = 0; i < genes.length; i++) {            if (genes[i].mutation(porcentagem)) {               retorno = true;            }         }         return retorno;      }            /**      *  retorna uma caracteristica baseado no cromossomo.      *        * @param geneInicial gene inicial.      * @param geneFinal gene final.      * @return valor da caracteristica.      */      public int getFenotipo(int geneInicial, int geneFinal) {         int valor = 0;            int delta = geneFinal - geneInicial;            for (int i = 0; i < delta; i++)            valor += genes[i + geneInicial].getValor()                  * Math.pow(2, delta - i);            return valor / 2;      }         /**      *  pega o array de genes do cromossomo.      * @return um array de genes.      */      public Gene[] getGenes() {         return genes;      }         /**      *  seta um array de genes do cromossomo.      * @param genes array de genes.      */      public void setGenes(Gene[] genes) {         this.genes = genes;      }         /**      *  @see #toString()      */      public String toString() {         StringBuffer saida = new StringBuffer("Cromossomo: [ ");            for (int i = 0; i < genes.length; i++) {            if (i == TAMANHO_DO_CROMOSSOMO / 2) {               saida.append("| ");            }            saida.append(genes[i].toString());            saida.append(" ");         }         saida.append("]");         return saida.toString();      }         /**      *  @see #equals(Object)      */      public boolean equals(Object cromossomo) {         if (cromossomo == this) {            return true;         }         if (!(cromossomo instanceof Cromossomo)) {            return false;         }         Cromossomo that = (Cromossomo) cromossomo;            for (int i = 0; i < genes.length; i++) {            if (!this.getGenes()[i].equals(that.getGenes()[i])){               return false;            }         }         return true;      }      }     Gene.java package catolica.ia.gen;      import java.util.Random;      /**   * Esta classe tem o objetivo de prover a abstração necessaria para o funcionamento   * de um gene.   *   * @author Daniel Gatis Carrazzoni   */   public class Gene implements Comparable {         private byte valor;               /**      * construtor simples.      */      public Gene() {         Random r = new Random();         this.valor = (byte) r.nextInt(2);      }            /**      *  seta um valor para o gene 0 ou 1      * @param valor valor.      */      public Gene(byte valor) {         setValor(valor);      }            /**      *  retorna o valor do gene.      * @return valor.      */      public byte getValor() {         return valor;      }            /**      *  causa a mutacao no gene dependendo da porcentagem.      *       * @param porcentagem      * @return caso tenha ocorrido a mutacao no gene retorna true.      */      public boolean mutation(double porcentagem) {         boolean retorno = false;         if (Math.random() < porcentagem) {            if (valor == 1)               valor = 0;            else               valor = 1;            retorno = true;         }         return retorno;      }            /**      *  seta um valor no gene.      *        * @param valor valor.      */      public void setValor(byte valor) {         if (valor > 1) {   this.valor = 1;   } else {   if (valor < 0) {   this.valor = 0;   }   }   this.valor = valor;   }    /**  *  @see #toString()  */   public String toString() {   return String.valueOf(valor);   }    /**  *  @see #equals(Object)  */   public boolean equals(Object cromossomo) {   if (cromossomo == this) {   return true;   }   if (!(cromossomo instanceof Gene)) {   return false;   }   Gene that = (Gene) cromossomo;    return this.getValor() == that.getValor();   }    public int compareTo(Object cromossomo) {   return new Byte(valor).compareTo((Byte)cromossomo);   }   }  

quarta-feira, 20 de outubro de 2010

23r23rgf






数码宝贝大师DIGIMONMASTERS官方网站合作专区,DIGIMONMASTERS,数码宝贝大师下载,数码宝贝大师客户端,数码宝贝大师职业资料,任务经验,综合功略-131游戏之家数码宝贝大师DIGIMONMASTERS专区















数码宝贝大师
  • 游戏名称:数码宝贝大师
  • 游戏类型:娱乐休闲
  • 游戏引擎:3D
  • 收费模式:未知
  • 英文名称:Digimon Masters
  • 官网地址:猛击此处
  • 游戏状态:开发
  • 开发商:Digitalic(韩国)
  • 运营商:

焦点新闻

    游戏介绍

    数码宝贝大师

      《数码宝贝大师》继2003年Digitalic开发的首款数码宝贝题材网络游戏《数码宝贝Online》,是以动画《数码宝贝》为题材的第二款网络游戏。游戏以《数码宝贝5-数码兽拯救者》为中心,包含动画《数码宝贝》的全部故事,动画中的背景及角色将全部在《数码宝贝大师》里出...[详细内容]






    顶一下0人推荐过此游戏

    推荐星级:




    游戏大类





    游戏产地









    游戏画面






    terça-feira, 13 de abril de 2010

    al-kwiwii

    historia da equação do 2ºgrau
    A resolução de problemas com equações do segundo grau aparece tanto nos babilônicos, como nos egípcios, como nos gregos. No entanto, um nome ficou eternamente ligado à resolução de equações do segundo grau - Muhammad Ibn Musa Al-Khwarizmi. Matemático que viveu no século IX, a sua importância é impressionante. Tendo trabalhado na biblioteca de Bagdad, denominada de Casa da Ciência ou Casa da Sabedoria, traduziu para o árabe obras matemáticas provenientes, sobretudo, da Grécia e da Índia. Um dos mais importantes, se não o mais, feitos de Al-Khwarizmi, foi a criação de uma obra sobre o sistema numérico hindu, conhecido atualmente por sistema de numeração decimal indo-arábico, obra essa imprescindível para a divulgação e adopção do nosso sistema numérico atual. Por outro lado, o seu nome é, provavelmente, a raiz da palavra logaritmo, algoritmo e algarismo. Também algumas das expressões por si utilizadas derivaram em palavras como álgebra, ou na utilização corrente da letra x para representar a incógnita de uma equação. Mas, esquecendo a enorme quantidade de facto s pelos quais devemos estar agradecidos a este personagem histórico, vamos-nos concentrar, única e exclusivamente, no seu papel na história da resolução de equações do 2º grau.
    Relativamente às equações do 2º grau, devemos saber que, até Al-Khwarizmi, a resolução de equações do 2º grau era, quase exclusivamente, geométrica. Este matemático, desenvolveu formas algébricas de procura de soluções de equações, sendo estes procedimentos algébricos articulados com representações geométricas que justificavam raciocínios. O que nos proponho realizar, é compreender e utilizar os procedimentos de Al-Khwarizmi na resolução de equações do segundo grau, para os diferentes tipos destas. Quando referimos diferentes tipos de equação do 2º grau, não estamos a utilizar a tipologia atual. Vamos agora estudar cada tipo de equação do 2º grau estudada por Al-Khwarizmi e os seus procedimentos. Para o fazer torna-se, no entanto, necessário conhecer três termos inventados e utilizados por Al-Khwarizmi:

    bhaskara


    A equação a ser resolvida possui o seguinte formato genérico:
    Página 3

    A conhecida fórmula de Bhaskara é:

    Página 3

    O caminho para se sair de (I) e se chegar a (II) é:

    Página 3

    1. Multiplica-se ambos os membros por 4a:

    Página 3

    2. Passar 4ac para o segundo membro:

    Página 3

    3. Somar b2 em ambos os membros:

    Página 3

    Note que o primeiro membro se tornou um trinômio quadrado perfeito que pode ser fatorado:

    Página 3

    4. Efetuando-se a raiz quadrada em ambos os termos:

    Página 3

    5. Passando-se o "b" para o segundo membro:

    Página 3

    6. Dividindo-se ambos os membros por 2a:

    Página 3

    7. Simplificando:

    Página 3

    C.Q.D. - Como se queria demonstrar (em latim, Q.E.D. Quod erat demonstrandum).

    bhaskara

    Bhaskara Akaria (em canarês: ಭಾಸ್ಕರಾಚಾರ್ಯ; 1114-1185, Vijayapura, Índia) foi um matemático, professor, astrólogo e astrônomo indiano, o mais importante matemático do século XII e último matemático medieval importante da Índia.
    Filho de um astrólogo famoso chamado Mahesvara, tornou-se conhecido pela complementação da obra do conterrâneo Brahmagupta, por exemplo dando pioneiramente a solução geral da conhecida equação de Pell e a solução de um problema da divisão por zero, ao afirmar também pioneiramente, em sua publicação Vija-Ganita ou Bijaganita, um trabalho em 12 capítulos, que tal quociente seria infinito.
    Tornou-se chefe do observatório astronômico a Ujjain, cidade onde ficou até morrer e o principal centro matemático da Índia na sua época, fama desenvolvida por excelentes matemáticos como Varahamihira e Brahmagupta, que ali tinham trabalhado e construído uma forte escola de astronomia matemática.
    Sua obra representou a culminação de contribuições hindus anteriores. Seis trabalhos seus são conhecidos e um sétimo trabalho, reivindicado para ele, é considerado por muitos historiadores como uma não falsificação posterior.
    A fórmula de Bhaskara, utilizada para determinar as raízes de uma equação quadrática é:

    Onde
    , .
    Livros
    O livro mais famoso de Bhaskara Akaria é o Lilavati, obra elementar dedicada a problemas simples de aritmética, geometria plana (medidas e trigonometria elementar ) e combinatória.
    A palavra Lilavati é um nome próprio de mulher (a tradução é "Graciosa"), e a razão de ter dado esse título a seu livro é porque, provavelmente, teria desejado fazer um trocadilho comparando a elegância de uma mulher da nobreza, com a elegância dos métodos da aritmética.[carece de fontes]
    Numa tradução turca desse livro, feita 400 anos mais tarde, teria sido inventada a história de que o livro seria uma homenagem à filha que não pode se casar.[carece de fontes] Bhaskara escreveu também um livro chamado Vijaganita, que mostra como resolver equações. Foi o primeiro livro a reconhecer que um número positivo ter duas raízes, uma positiva e outra negativa.

    sábado, 27 de fevereiro de 2010

    Neovisão

    sábado, 6 de fevereiro de 2010

    Jogo Diesel and Death
    Disponibilizado por: Jogos Online ClickGrátis - Na categoria: Jogos de Corrida.