domingo, janeiro 25, 2009

A célula - Bruce Alberts


A célula - Bruce Alberts
Este exelente livro esta colocado nos seletos da cabeçeira dos grandes apreciadores de biologia molecular (:

Alguns livros de farmacologia que eu estou achando na net vou colocar aqui no blog.espero que seja de grande avalia para todos ao envez de pagar caro em livros baixe de graça,imprima isso é compartilhar!
espero que gostem quer downloaD?
clique aqui!
[']s

livros de Medicina


DENTRO DA PASTA Estao os Consensos, Diretrizes e Manuais Sao arquivos em PDF.
Legenda: A primeira palavra do arquivo é a especialidade Em seguida, Uma sigla:
Dir - Diretrizes

Cons - Consenso

Manu - Manual Ebook - Livro completo
MS - Acervo do Ministerio da Saude

PA - Pneumo Atual
MA - Medicina Atual
Prot - Protocolo
Vac - Vacinas


Existem ainda as pastas
:
A Pasta Isilo, dentro de Med. (arquivos para palm, mas que podem ser vistos no PC, basta instalar o programa Isilo para windows. A Instalacao esta dentro da pasta)
A pasta Books, dentro de Med. estão livros, a maioria em Ingles e para Isilo, ultimas ediçoes, COMPLETOS. Dentro de Books, ainda, varios CURRENTS, os mais atuais e muitos outros arquivos em PDF e CHM.
A Pasta RGO, sao arquivos para palm também, que também podem ser vistos no PC, basta instalar o programa RepliGo. A instalação esta dentro da pasta.
- nesta pasta estão os arquivos extraidos no Ministerio da Saude e também todos os PDF (da pasta ConsDirManu) convertidos em RepliGo (Diretrizes, Consensos e Manuais), para palm.

O MedCurso esta dentro de Med/Books
O Cecil está dentro de Med e a divisao esta por capitulos. O cecil em portugues 21ed. esta no formato MDI, para visualizar é necessário o Officce 2003 ou superior ou Um programa que visualize esse tipo de arquivo. Ex. MDI Viewer.

Em PPT, estão aulas da PUCPR em Power Point.

+ de 700 livros completos, na integra, dentro de IsiloBook

+ de 500 Consensos Diretrizes e Manuais, na pasta DirConsManu

+ de 900 Arquivos diversos, muitos deles, da editora do ministerio da saude, na pasta RGO

+ de 238 Arquivos com varios Manuais, ministerio, febrasgo, anvisa, entre outros em Isilo


Entre AQUI
para acessar é preciso de usuário e senha usuario: guest senha: guest
Ñ copie e cole digite.[]'s

quarta-feira, janeiro 21, 2009

,

Discodermolídeo: uma nova arma no combate ao câncer



Discodermolídeo: uma nova arma no combate ao câncer

Câncer é a definição genérica para um grupo de mais de 100 doenças que têm em comum um crescimento inesperado e nocivo de um grupo de células. A célula cancerígena se forma partir de uma mutação genética de uma célula normal. As células doentes (geneticamente alteradas) adquirem características peculiares que as tornam deletérias ao organismo. Tais características são: auto-suficiência em sinais de crescimento; insensibilidade a sinais fisiológicos anti-proliferativos; escape à apoptose; potencial de replicação ilimitado; angiogênese favorecida; invasão de tecido adjacente e metástase.1

Do total de 58 milhões de mortes por diversas causas no mundo em 2005, o câncer foi responsável por 7,6 milhões (13%). Pulmão, estômago, fígado, cólon (maior porção do intestino grosso) e mama são os órgãos mais acometidos por essa enfermidade.2 Dados da Organização Mundial de Saúde mostraram que o câncer, em 2002, já era a segunda maior causa de morte por doenças em países desenvolvidos (Figura 1).3 Vale ressaltar que na subdivisão do gráfico que inclui outras causas estão incluídas AIDS, tuberculose, diabetes, doenças do sistema respiratório, além de causas como acidentes rodoviários e violência.














Produtos naturais têm se mostrado eficientes quimioterápicos contra o câncer desde a década de 60, quando foi aprovado o uso da vimblastina (Vincapan® da Rhône- Poulenc) e da vincristina (Oncovin® ou Velban® da Eli Lilly, Vincristina® da Asofarma). Ambos compostos são alcalóides extraídos de vinca – Catharanthus roseus (Figura 2).4,5 No Brasil esta planta ornamental é muito comum sendo conhecida, entre outros nomes populares, como beijo.

continue lendo este maravilhoso artigo do Renato Saldanha Bastos,pela referencia nos meus estudos !
see ya!

sábado, janeiro 17, 2009

Caminhando pela bioquimica



Título: Caminhando pela Bioquímica
Autor: Raquel da Silveira Nogueira Lima
Idioma: Português
Formato: PDF
Número de Páginas: 180
Tamanho do arquivo: 600 KB
Descrição: Não chega bem a ser um livro, contudo, dá uma boa introdução à Bioquímica. Possui bastantes conceitos de fácil entendimento. Eu recomendo para quem quer adquirir algumas informações acerca do tema sem querer se aprofundar tanto nele.
DownloaD

sexta-feira, janeiro 16, 2009

,

Algoritimos Genéticos [AG] VI


Amigos estamos de volta (: para fazer a continuação de algoritimos genéticos V .

Cruzamento e Mutação

Cruzamento e Mutação são os dois operadores básicos de AG. O desempenho do AG depende muito deles. O tipo e a implementação desses operadores dependem da codificação e também do problema Há diversas maneiras de como fazer o cruzamento e a mutação. Neste capítulo descreveremos brevemente alguns exemplos e sugestões de como fazê-los para diversos tipos de codificação.

Codificação Binária
Cruzamento
Ponto de Cruzamento Único - um ponto de cruzamento é escolhido, a série binária desde o começo do cromossoma até o ponto de cruzamento é copiada do primeiro pais e o resto copiado do outro pai.





11001011+11011111 = 11001111

Dois pontos de cruzamento - são definidos dois pontos de cruzamento, a série binária desde o início do cromossoma até o primeiro ponto de cruzamento é copiada do primeiro pai, a parte do primeiro ponto de cruzamento até o segundo ponto é copiada do outro pai e o resto do cromossoma é copiado do primeiro pai novamente






11001011 + 11011111 = 11011111


Cruzamento Uniforme - os bits são copiados aleatóriamento do primeiro ou segundo pai





11001011 + 11011101 = 11011111

Cruzamento Aritmético - é realizada uma operação aritmética para obter a nova geração





11001011 + 11011111 = 11001001 (AND)

Mutação

Inversão de Bit - determinados bits são invertidos





11001001 => 10001001
Codificação por Permutação

Cruzamento

Ponto de Cruzamento Único - um ponto de cruzamento é selecionado e a permutação é copiada atéone crossover point is selected, the permutation is copied do primeiro pai até o ponto de cruzamento, daí o outro pai é rastreado e se o número ainda não estiver na descendência, é adicionado
Nota: há outras maneiras de obter o resto após o ponto de cruzamento

(1 2 3 4 5 6 7 8 9) + (4 5 3 6 8 9 7 2 1) = (1 2 3 4 5 6 8 9 7)

Mutação

Mudança de Ordem - dois números são escolhidos e trocados entre si

(1 2 3 4 5 6 8 9 7) => (1 8 3 4 5 6 2 9 7)

Codificação de Valores

Cruzamento

Todos os cruzamentos de codificação binária podem ser usados

Mutação

Adicionando um número pequeno (para codificação de valores reais) - um número pequeno é adicionado a (ou subtraído de) valores selecionados

(1.29 5.68 2.86 4.11 5.55) => (1.29 5.68 2.73 4.22 5.55)
Codificação em Árvore

Cruzamento

Cruzamento de Árvores - um ponto de cruzamento é escolhido em ambos os pais, os pais são divididos nesse ponto e as partes abaixos do ponto de cruzamento são trocadas para produzir a descendência








Mutação

Mudando o operador - os nós escolhidos são mudados

Problema do Caixeiro Viajante
O problema do caixeiro viajante já foi mencionado em capítulos anteriores. Relembrando, são dadas cidades e as distâncias entre elas. O caixeiro viajante tem que visitar todas elas, mas não quer viajar demais. A tarefa consiste em encontrar a seqüência de cidades que faz com que a distância percorrida seja a menor possível. Em outras palavras, o problema é achar a rota mínima Hamiltoniana num gráfico de N nós.

Implementação

Foi usada uma população de 16 cromossomas. Para codificá-los foi utilizada Codificação por Permutação - você pode encontrar no capítulo sobre codificação, como codificar a permutação das cidades para o Problema do Caixeiro Viajante. O problema é selecionado completando o gráfico (isto é, cada nó é conectado ao outro) com distâncias euclidianas. Note que depois de adicionar ou excluir uma cidade é necessário criar novos cromossomas e reiniciar completamente o algoritmo.

Você pode escolher o tipo de cruzamento e de mutação. Veja a seguir uma descrição dos seus significados:

Cruzamento

* Ponto único - parte do primeiro pai (isto é, parte da seqüencia das cidades) é copiada e o resto das cidades é copiada na mesma seqüência do segundo pai
* Dois pontos - duas partes do primeiro pai são copiadas e o restante (que está entre essas duas partes) é colocada na mesma ordem que estão no segundo pai
* Nenhum - sem cruzamento, a descendência é uma cópia exata dos pais

Mutação

* Aleatória Normal (Normal Random Mutation) - umas poucas cidades são escolhida e trocadas
* Aleatória se Melhora (Random, only improving) - umas poucas cidades são escolhidas aleatóriamente somente se elas melhoram a solução (isto é, aumentam a adequação)
* Sistemática se Melhora (Systematic, only improving) - cidades são escolhidas sistematicamente e trocadas somente se melhoram a solução (aumentam a adequação)
* Aleatória Melhorada (Random improving) - o mesmo que "Aleatória se Melhora", porém antes que a mutação aleatória normal seja executada
* Sistemática Melhorada (Systematic improving) - o mesmo que "Sistemática se Melhora", porém antes que amutação aleatória normal seja executada
* Nenhuma (None) - sem mutação


Exemplo

O applet seguinte mostra o AG otimizado para o problema do caixeiro viajante. O botão "Change View" muda a vista de toda a população para a melhor solução e vice versa. Você pode adicionar e retirar cidades clicando no gráfico. Depois de adicionar ou excluir uma cidade, uma rota aparecerá entre elas, assim como uma nova população de cromossomas aleatórios também é criada. Repare também que estamos resolvendo o problema em um gráfico completo.
Experimente executar o AG com diferentes tipos de cruzamento e mutação e repare como o desempenho (e a velocidade - adicione mais cidades para perceber) do AG muda. Veja o exemplo aqui!
Recommendações

Parâmetros dos AG
Neste capítulo são dadas recomendações básicas caso você tenha decidido implementar algoritmos genéticos. Essas recomendações são genéricas. Você provavelmente precisará experimentar com seu próprio AG para um problema específico, porque não existe uma teoria geral que possa ser aplicada no auxílio da sintonia dos parâmetros dos AG para qualquer problema.

As recomendações são frequentemente resultado de estudos empíricos dos AG, que em geral, são realizados somente em codificação binária.

* Taxa de Cruzamento
A taxa de cruzamento deve em geral ser alta, cerca de 80%-95%. Entretanto, alguns resultados mostram que para alguns tipos de problemas, uma taxa de cruzamento de cerca de 60% é o melhor.
* Taxa de Mutação
Por outro lado, a taxa de mutação deve ser muito baixa. As melhores taxas parecem estar na faixa de 0.5%-1%.
* Tamanho da População
Pode ser um pouco surpreendente que populações de tamanho muito grande, normalmente não aumentam o desempenho do AG (no sentido de aumentar a velocidade com que são encontradas as soluções). Um bom tamanho para a população é cerca de 20-30, entretanto às vezes tamanhos de 50-100 são relatados como os melhores. Alguns autores também mostram que o melhor tamanho da população depende do tamanho da série codificada (cromossomas). Isto significa que se você tem cromossomas com 32 bits, a população deve ser maior do que se você tivesse cromossomos com 16 bits.
* Seleção
A Seleção através da Roleta pode ser usada, mas mas às vezes a Seleção por Classificação pode ser melhor. Verifique o capítulo sobre seleção para saber as vantagens e desvantagens. Existem também alguns métodos mais sofisticados que mudam os parâmetros de seleção durante a execução do AG. Basicamente, eles tem comportamento similar a tempero falsificado. Elitismo Deve ser usado se você não tem outro método para preservar a melhor solução. Você também pode experimentar a Seleção do Estado Estacionário.
* Codificação
A codificação depende do problema e também do tamanho das instâncias do problema. Veja o capítulo sobre codificação para algumas sugestões ou veja outros recursos.
* Tipos de Cruzamento e Mutação
Os operadores dependem da codificação e do problema. Verifique o capítulo sobre operadores para algumas sugestões. Você pode também verificar outros sites.


Aplicações dos AG

Algoritmos genéticos têm sido utilizados para resolver problemas complexos (tais como os problemas NP-difíceis), para aprendizado de máquinas e também para o desenvolvimento de programas simples. Eles têm sido também usados em algumas aplicações artísticas como pintura e música.

Uma vantagem dos AG é o seu paralelismo. AG percorre o espaço das soluções usando mais indivíduos (e com genótipos em vez de fenótipos) de forma que eles são menos susceptíveis de "enroscar" em um extremo local do que os outros métodos.

Eles também são muito simples de implementar. Uma vez que você implantou a parte básica do AG, você simplesmente precisa escrever um novo cromossoma (apenas um objeto) para resolver outro problema. Com uma codificação, você simplesmente muda a função de adequação e está tudo pronto! Entretanto, para alguns problemas, a escolha e implementação da função de adequação pode ser difícil.

A desvantagem dos AG é o tempo de processamento. Os AG podem ser mais lentos do que os outros métodos. Porém, desde que possamos terminar o cálculo sem restrições severas de tempo, o tempo mais longo é aceitável (principalmente com os computadores cada vez mais rápidos).

Para ter uma idéia sobre os tipos de problemas resolvidos com AG, é apresentada a seguir uma lista de algumas aplicações:

* Sistemas Dinâmicos não Lineares - predição, análise de dados
* Projeto de Redes Neurais, ambos: determinação da arquitetura e dos pesos
* Trajetória de Robôs
* Desenvolvimento de programas em LISP (programação genética)
* Planejamento Estratégico
* Determinação da Forma de Moléculas de Proteinas
* Determinação de Rotas e Sequenciamento de Tarefas
* Determinação de Funções para criação de imagens

Mais informação pode ser encontrada nos links :
Veja a seguir alguns links selecionados para Web Sites ou servidores de arquivos (ftp). Você pode utilizá-los para encontrar mais informações e materiais sobre Algoritmos Genéticos.

ENCORE, the EvolutioNary COmputation REpository network
Rede Repositório de Computação Evolucionária
ftp://alife.santafe.edu/pub/USER-AREA/EC/ (tem também alguns outros nós)

FAQ - The Hitch-Hiker's Guide to Evolutionary Computation
O guia Hitch-Hiker sobre Computação Evolucionária
ftp://alife.santafe.edu/pub/USER-AREA/EC/FAQ/www/index.html

FAQ - Genetic programming
Perguntas mais freqüentes sobre Programação Genética
http://www-dept.cs.ucl.ac.uk/research/genprog/gp2faq/gp2faq.html

The Genetic Algorithms Archive - many links, information about mailing list, some fun stuff
Arquivo de Algoritmos Genéticos - vários links, informações sobre listas, e algum material divertido
http://www.aic.nrl.navy.mil:80/galist/

Artificial Life Online - Vida Artificial Online - links.
Se você está procurando por material introdutório, veja aqui
http://alife.santafe.edu/

Yahoo! Science:Computer Science:Algorithms:Genetic Algorithms - diretório de outros links
http://www.yahoo.com/Science/Computer_Science/Algorithms/Genetic_Algorithms/

Grupos Usenet comp.ai.genetic e comp.ai.alife

e o principal deixa aqui claro que todo este exelente conteudo e seus autores com algumas adaptações minhas!
Estas páginas foram desenvolvidas durante os meses de Agosto e Setembro de 1998 na Universidade de Ciências Aplicadas de Dresden por Marek Obitko, aluno da Universidade Tcheca Técnica em Praga.

A primeira versão dos applets foi escrita durante o semestre do verão de 1998 na Universidade Tcheca Técnica, sob a supervisão do Professor Associado Pavel Slavík. Durante a estadia em Dresden o projeto foi supervisionando pelo Professor Walter Pätzold da Universidade de Ciências Aplicadas de Dresden.

Todas as Páginas e os Applets Java foram criados por Marek Obitko, Copyright © 1998. Se você tiver qualquer comentário, pergunta ou sugestão, envie para o autor.

A versão destas páginas para o Português do Brasil foi feita por Hermelindo Pinheiro Manoel em Setembro/2004 e sua publicação foi autorizada pelo autor (Marek Obitko).

enfim é isso bons estudos
[]'s
,

Algoritimos Genéticos [AG] V


lol de volta estaremos aqui continuando o artigo sobre algoritimos geneticos Iv.

Seleção

IntroduçãO

Como você já sabe de AG esboço, os cromossomas são selecionados de uma população para serem pais de um cruzamento. O problema é como selecionar esses cromossomas. De acordo com a teoria da evolução de Darwin, o melhor sobrevive para criar a descendência. Há muitos métodos para selecionar o melhor cromossoma. Exemplos são: seleção por roleta, seleção Boltzman, seleção por campeonato, seleção por classificação, seleção por estado estacionário, e outras.Algumas delas serão descritas a seguir.

Seleção por Roleta

Os pais são selecionados de acordo com sua adequação. Quanto melhores são os cromossomos, mais chances de serem selecionados. Imagine uma roleta onde são colocados todos os cromossomas da população. O lado de cada secção da roleta é proporcional ao valor da adequação de cada cromossoma: quanto maior for esse valor, mais larga a secção. Veja a imagem a seguir para um exemplo.











Uma bolinha é lançada na roleta e o cromossomo onde ela para é selecionado. Evidentemente os cromossomas com maiores valores de adequação serão selecionados mais vezes.

Este processo pode ser descrito pelo seguinte algoritmo:


  1. [Soma] Calcule a soma dos valores de adequação de todos os cromossomas da população - soma S.
  2. [Seleção] Gere um número aleatório no intervalo (0,S) - r.
  3. [Repetição] Percorra toda a população e some a adequação de 0 - soma s. Quando a soma s for maior que r, pare e retorne o cromossoma atual.

É claro, o passo 1 somente é realizado uma vez para cada população.

Seleção por Classificação

O método anterior de seleção tem problemas quando há grandes diferenças entre os valores de adequação. Por exemplo, se a melhor adequação dos cromossomas é 90% da soma de todas as adequações, então haverá cromossomas com chances muito baixas de serem selecionados.

A Seleção por Classificação primeiro classifica a população e então atribui a cada cromossoma um valor de adequação determinado pela sua classificação. O pior terá adequação igual a 1, o segundo pior 2 etc. de forma que o melhor terá adequação igual a N (número de cromossomas na população).

Você pode ver na figura seguinte como a situação muda depois de mudar a adequação pelos números determinados pela adequação.










Situação antes da Classificação (gráfico da adequação)












Situação depois da Classificação (gráfico dos números de ordem)

Agora todos os cromossomas tem uma chance de serem selecionados. Entretanto, este método pode resultar em menor convergência, porque os melhores cromossomas não se distinguem muito dos outros.

Seleção por Estado Estacionário

Este não é um método particular de seleção de pais. A idéia principal deste tipo de seleção é que a nova população deve ter uma grande parte de cromossomas que sobreviverão para a próxima geração.

A seleção tipo Estado Estacionário dos AG funciona do seguinte modo: Em cada nova geração uns poucos bons cromossomas (com alta adequação) são selecionados para a criação da descendência. A seguir alguns maus cromossomas (com baixa adequação) são removidos e novos descendentes são colocados em seus lugares. Todo o resto da população sobrevive para as próximas gerações.

Elitismo

A idéia básica do elitismo já foi introduzida. Quando criamos uma nova população por cruzamento e mutação, nós temos uma grande chance de perder os melhores cromossomas.

Elitismo é o nome do método que primeiro copia os melhores cromossomas (or os poucos melhores cromossomas) para a nova população. O resto da população é construída das formas descritas acima. Elitismo pode aumentar rapidamente o desempenho do AG, porque previne a perda da melhor solução já encontrada.


Codificação


A codificação dos cromossomas é a primeira questão a ser feita quando começamos a resolver um problema utilizando AG. A codidicação depende muito do problema. Neste capítulo, algumas codificações que já foram utilizadas com sucesso serão apresentadas.

Codificação Binária

Codificação Binária é a mais comum principalmente porque foi a que os primeiros pesquisadores de AG usaram e devido à sua relativa simplicidade.

Na Codificação Binária, cada cromossoma é uma série de bits - 0 or 1.

Cromossoma A 101100101100101011100101
Cromossoma B 111111100000110000011111

Exemplo de cromossomas com codificação binária

Codificação Binária permite muitos possíveis cromossomas, mesmo com pequenos número de alelos. Por outro lado, esta codificação não é natural para muitos problemas e algumas vezes é necessário fazer correções antes dos cruzamentos e/ou mutações.


Exemplo de Problema: Problema da Mochila
O problema: É dada uma lista de coisas com preços e tamanhos. É fornecido o valor da capacidade da mochila. Escolha as coisas de forma a maximizar o valor das coisas que cabem dentro da mochila, sem ultrapassar sua capacidade.
Codificação: Cada bit é usado para dizer se a coisa correspondente está ou não na mochila.

Codificação por Permutação

A Codificação por Permutação pode ser usada em problemas que envolvem ordenação como o "Problema do Caixeiro-Viajante" ou problemas de ordenação de tarefas.

Na Codificação por Permutação, cada cromossoma é uma série de números que representa uma posição em uma seqüência>.

Cromossoma A 1 5 3 2 6 4 7 9 8
Cromossoma B 8 5 6 7 2 3 1 4 9

Exemplo de cromossoma com codificação por permutação

A Codificação por Permutação é útil para solução de problemas de ordenação. Para alguns tipos de cruzamentos e mutações, são necessárias correções para que os cromossomas fiquem consistentes (isto é contenham seqüências reais) para alguns problemas.


Exemplo de Problema: Problema do Caixeiro Viajante (Travelling Salesman Problem - TSP)
O problema: São dadas cidades e as distâncias entre elas. O caixeiro viajante tem que visitar todas elas, sem viajar mais do que o necessário. A solução do problema consiste em encontrar a seqüência de cidades em que as viagens devem ser feitas de forma que a distância percorrida seja a mínima possível.
Codificação: Os cromossomas descrevem a ordem em que o caixeiro visitará as cidades.

Codificação de Valores

A codificação direta dos valores pode ser usada em problemas em que são usados valores mais complicados tais como números reais. Usar codificação binária para esse tipo de problema seria muito difícil.

Na Codificação de Valores, cada cromossoma é uma seqüência de alguns valores. Esses valores podem ser qualquer coisa relacionada com o problema, tais como: números reais, caracteres ou qualquer outro objeto.

Cromossoma A 1.2324 5.3243 0.4556 2.3293 2.4545
Cromossoma B ABDJEIFJDHDIERJFDLDFLFEGT
Cromossoma C (atrás), (atrás), (direita), (frente), (esquerda)

Exemplo de cromossoma com codificação de valores

Codificação de Valores é uma boa escolha para alguns problemas especiais. Entretanto, para essa codificação, é frequentemente necessário desenvolver um método de cruzamento e mutação específico para o problema.


Exemplo de Problema: Cálculo de Pesos para uma Rede Neural
O problema: É dada uma rede neural com arquitetura definida. Encontre os pesos entre os neurônios da rede de forma a obter a resposta desejada da rede.
Codificação: Valores reais dos cromossomas representam os pesos da rede neural.

Codificação em Árvore

Codificação em Árvore é usada principalmente para desenvolver programas ou expressões, isto é, para programação genética. Na Codificação em Árvore cada cromossoma é uma árvore de alguns objetos, tais como funções ou comandos de uma linguagem de programação.

Cromossoma A

Cromossoma B

( + x ( / 5 y ) )

( do_until step wall )

Exemplo de cromossoma com codificação em árvore

A Codificação em Árvore é útil para desenvolver programas ou qualquer outra estrutura que pode ser codificada em árvores. A programação na linguagem LISP é frequentemente utilizada para este propósito uma vez que os programas em LISP são diretamente representados na forma de árvores e podem ser facilmente processados como uma árvore, de forma que o cruzamento e a mutação podem ser realizados com relativa facilidade.


Exemplo de Problema: Encontrar uma função que aproxime um dado par de valores
O problema: São dados os valores de entrada e de saída. A tarefa é encontrar uma função que forneça a melhor saída (isto é, a que dê o resultado mais próximo do desejado) para todas as entradas.
Codificação: Cromossomas são funções representadas em uma árvore.


bom vou fica por aqui (: no proximo artigo vamos continuar com cruzamento e mutação dos genes (:
bons estudos e ate a proxima!
[]'s




,

Algoritimos Genéticos [AG] IV


bom continuando o artigo sobre algoritimo genético III, motrando um pocuo mais sobre parâmentros e exemplo de algumas funções,Exemplo de AG (Algoritmo Genético) Mínimo de uma Função.

sobre o problema
Como você já sabe do capítulo sobre espaço de soluções, a solução de um problema pode freqüentemente ser expressa como a procura pelo extremo de uma função definida em um espaço de soluções. Iremos resolver exatamente esse problema aqui.

Dada uma função, o AG tentará encontrar o mínimo dessa função. Para outros problemas, nós apenas temos que definir o espaço de soluções e a função de adequação (para a qual nós teremos que achar um extremo).

Exemplo

Tente executar o algoritmo genético do applet seguinte apertando o botão "Start". O gráfico representa o espaço de soluções e as linhas verticais representam as soluções (pontos do espaço de soluções). A linha vermelha é a melhor solução, as linhas verdes são as outras. A antiga e a nova população são mostradas na parte superior do applet. Cada população consiste de cromossomas binários - ponts vermelhos e azuis significam zeros e uns. Você pode ver o processo de formação de novas populações passo a passo com o applet.

O botão "Start" inicia o algoritmo, o botão "Step" executa um passo (ito é, forma uma nova geração), o botão "Stop" para o algoritmo e o botão "Reset" reinicia a população.
O melhor é começar executando o applet passo a passo (botão "Step") para ver em detalhe como funciona o AG. O esboço básico do AG foi introduzido num dos capítulos anteriores. Você pode ver o elitismo para os primeiros cromossomas e então formar as novas descendências através de cruzamentos e mutações até que uma nova população seja completada. assim como segue o exemplo no site do Dr marek que tenho sempre como referencia nos meus estudos! (:

Parâmetros dos AG

Há dois parâmetros básicos dos AG - Probabilidade de Cruzamento e de Mutação.

Probabilidade de Cruzamento: com qual freqüência o cruzamento é realizado. Se não não houver cruzamento, a descendência é uma cópia exata dos pais. Se ocorre o cruzamento a descendência é constituída de partes dos cromossomas de ambos os pais. Se a probabilidade de cruzamento é 100%, então toda a descendência é produzida por cruzamento. Se a probabilidade é 0%, toda a nova geração é formada por cópia exata dos cromossomas da população antiga (mas isso não significa que a nova geração é a mesma!).
Os cruzamentos são realizados na esperança de que os novos cromossomas contenham partes boas dos cromossomas antigos e que portanto os novos cromossomas serão melhores. Entretanto, é bom deixar uma parte da antiga população sobreviver para a próxima geração.

Probabilidade de Mutação: com qual freqüência as partes dos cromossomas sofrerão mutação. Se não houver mutação, a descendência é gerada imediatamente após o cruzamento (ou copiada diretamente) sem nenhuma alteração. Se ocorreu a mutação, uma ou mais partes do cromossoma é alterada. Se a probabilidade de mutação é 100%, todos os cromossomas são alterados, se é 0%, nenhum é alterado.
A mutação em geral evita que o AG caia num extremo (mínimo ou máximo) local. A mutação não deve ocorrer com muita freqüência porque senão o AG tornar-se-á de fato uma busca aleatória.

Outros Parâmetros

Temos também alguns outros parâmetros nos AG. Um particularmente importante é o tamanho da população.

Tamanho da População: quantos cromossomas existem na população (em uma geração). Se houver poucos cromossomas, o AG terá poucas possibilidade de realizar cruzamentos e somente uma parte pequena do espaço de soluções será explorada. Por outro lado, se houver muitos cromossomas, os AG tornar-se-ão lentos. Pesquisas mostram que após determinado limite (que depende principalmente da codificação e do problema), não é conveniente aumentar a população porque isso não resolve o problema mais rapidamente do que com tamanhos moderados de população.

Algumas recomendações para os parâmetros podem ser encontradas nos capítulos seguintes.

Exemplo
Aqui você pode ver um exemplo similar ao anterior. Porém aqui você pode mudar a probabilidade de cruzamento e de mutação. É possível também controlar o elitismo.
No gráfico abaixo você pode ver o desempenho do AG. A vermelha é a melhor solução, a azul é o valor médio (adequação) de toda a população.
Mude os parâmetros e veja como o AG se comporta.
Questão: Se você aumenta a probabilidade da mutação até 100%, o AG começará a se comportar de maneira muito estranha, de uma forma parecida como se a probabilidade de mutação fosse 0%. Você sabe por que? Você pode ver uma dica e se mesmo assim você não conseguir descobrir, veja a resposta em: solução!
segue o exemplo aqui!

Extremo de uma Função

Novamente o problema é encontrar o extremo (mínimo ou máximo) de uma função. Porém neste caso, mais uma dimensão foi adicionada.

Exemplo

O gráfico representa o espaço de soluções e as linhas representam as soluções (pontos no espaço de soluções). A linha vermelha é a melhor solução, e as linhas azuis são as outras.
Você pode entrar com sua própria função no campo de texto abaixo do gráfico (após introduzir a nova função pressione "enter" no teclado ou o botão "Change"). Abaixo você pode definir os limites da função. A função pode conter x, y, pi, e, (, ), /, *, +, -, !, ^ e as funções abs, acos, acosh, asin, asinh, atan, atanh, cos, cosh, ln, log, sin, sinh, sqr, sqrt, tan and tanh.
O gráfico pode ser girado clicando-se com o botão esquerdo do mouse sobre ele e arrastando.
É possivel mudar a probabilidade de cruzamento e de mutação. Através de botões de "ticar" é possivel selecionar quando se quer usar elitismo e se quer procurar mínimo ou máximo.
Experimente mudar a função e veja como o AG se comporta. Se você encontrar alguma função interessante, onde o AG se comporta muito bem, ou muito estranho, você pode enviá-la pra mim.Segue o exemplo aqui!

bom termino por aqui para que vocês possa ler e metitar sobre o assunto , nada mais que treino e mais treinos,bons estudos e ate a proxima!:D

[]'s











,

Algoritimos Genéticos [AG] III


bom continuando o artigo sobre algoritimo genético II, vamos entrar mais afundo nessa maravilha que é a genética humana? :D continuando... então vamos fazer uma descrição basica sobre o mesmo.
Algoritmos Genéticos são inspirados na teoria da evolução de Darwin. Solução de um problema através de algoritmos genéticos utiliza um processo evolucionário (a solução é desenvolvida).

O algoritmo começa um um conjunto de soluções (representadas por cromossomas) chamados população. Soluções de uma população são utilizadas para formar uma nova população. Isto é motivado pela esperança que a nova população será melhor do que a primeira. Soluções que são selecionadas para formar novas gerações de soluções são selecionadas de acordo com sua adequação - quanto melhores, mais chances de reprodução terão.

Esse processo é repetido até que alguma condição é satisfeita (por exemplo o número de populações ou o aperfeiçoamento da melhor solução).
Exemplo
Como você já sabe se viu o capítulo sobre espaço de soluções, a solução de problemas pode freqüentemente ser expressa como a procura pelo extremo de uma função. Nós resolveremos aqui exatamente esse problema - dada uma função o algoritmo genético tenta achar o mínimo dessa função.
Experimente rodar o algoritmo genético no applet a seguir apertando o botão "Start". O gráfico representa o espaço de soluções e as linhas verticais representam soluções (pontos no espaço de soluções). A linha vermelha é a melhor solução e as verdes são as outras.
O botão "Start" inicia o algoritmo, o botão "Step" executa um passo (isto é, produz uma nova geração), o botão "Stop" pára o algoritmo e o botão "Reset" reinicia a população.

"Segue aqui exemplo do site do Dr marek"


Esboço Básico do Algoritmo Genético

  1. [Início] Gere uma população aleatória de n cromossomas (soluções adequadas para o problema)
  2. [Adequação] Avalie a adequação f(x) de cada cromossoma x da população
  3. [Nova população] Crie uma nova população repetindo os passos seguintes até que a nova população esteja completa
    1. [Seleção] Selecione de acordo com sua adequação (melhor adequação, mais chances de ser selecionado) dois cromossomas para serem os pais
    2. [Cruzamento] Com a probabilidade de cruzamento cruze os pais para formar a nova geração. Se não realizar cruzamento, a nova geração será uma cópia exata dos pais.
    3. [Mutação] Com a probabilidade de mutação, altere os cromossomas da nova geração nos locus (posição nos cromossomas).
    4. [Aceitação] Coloque a nova descendência na nova população
  4. [Substitua] Utilize a nova população gerada para a próxima rodada do algoritmo
  5. [Teste] Se a condição final foi atingida, pare, e retorne a melhor solução da população atual
  6. [Repita] Vá para o passo 2

Alguns comentários

Como você viu, a estrutura deste Algoritmo Genético Básico é bastante geral. Há muitos parâmetros e ajustes que podem ser implementados de forma diferente em variados problemas.

A primeira questão a ocorrer é como criar cromossomas e que tipo de codificação escolher. Nós veremos então Cruzamento e Mutação, os dois operadores básicos dos Algoritmos Genéticos. A codificação do cruzamento e da mutação serão introduzidos no próximo capítulo.

A próxima questão é: como selecionar os pais para o cruzamento? Isso pode ser feito de muitas formas, mas a idéia principal é selecionar os melhores pais (os melhores sobreviventes), na suposição que os melhores pais produzirão as melhores descendências.

Você pode achar que gerando as populações apenas de dois pais, pode fazer com que se perca os melhores cromossomas da última população. Isto é verdade, e portanto, o elitismo é usado com freqüência. Isto significa que pelo menos uma cópia sem alterações da melhor solução da geração é passada para a nova população, de forma que a melhor solução possa sobreviver às sucessivas gerações.

Você deve estar querendo saber por que os Algoritmos Genéticos funcionam. Isso pode ser explicado parcialmente pelo Teorema do Esquema de Holland, entretanto, esse Teorema tem sido criticado ultimamente. Se você deseja saber mais, veja outras fontes.


V. Operadores dos Algoritmos Genéticos

Visão Geral

Ocruzamento e a mutação são as partes mais importantes do algoritmo genético. O desempenho é influenciado principalmente por esses dois operadores. Antes de detalharmos mais cruzamento e mutação, vejamos mais alguma informação sobre cromossomas.

A Codificação de um Cromossoma

Um cromossoma deve de alguma maneira conter a informação da solução que ele representa. A forma mais comum de codificar é uma série (string) binária. Um cromossoma pode então se parecer como isto:

Cromossoma 1 1101100100110110
Cromossoma 2 1101111000011110

Cada cromossoma é representado por uma série binária. Cada bit da série representa alguma característica da solução. Outra possibilidade é que a série toda possa representar um número - isso foi feito basicamente no applet AG. É claro, há muitas outras formas de codificar. A codificação dependerá principalmente do problema a ser solucionado. Por exemplo, um pode codificar diretamente números inteiros ou reais, algumas vezes é útil codificar algumas permutações, e assim por diante.

Cruzamento

Depois de decidirmos que codificação usaremos, podemos proceder a operação de cruzamento. O cruzamento opera em determinados genes dos cromossomas dos pais e cria novas descendências. A maneira mais simples de fazer isso é escolher aleatóriamente alguns pontos de cruzamento e copiar tudo o que vem antes desse ponto de um dos pais e então copiar tudo o que vem depois desse ponto do outro pai.

O Cruzamento pode ser ilustrado da seguinte maneira: ( | é o ponto de cruzamento):

Cromossoma 1 11011 | 00100110110
Cromossoma 2 11011 | 11000011110
Descendência 1 11011 | 11000011110
Descendência 2 11011 | 00100110110

Há outras maneiras de fazer cruzamento. Por exemplo, nós podemos escolher mais pontos de cruzamento. O cruzamento pode ser um pouco complicado e depender principalmente da codificação dos cromossomas. Cruzamentos especificos feitos para problemas específicos podem melhorar o desempenho dos algoritmos genéticos.


Mutação

Depois que um cruzamento é realizado, acontece a mutação. A mutação tem a intenção de prevenir que todas as soluções do problema dessa população caiam em um ponto ótimo local. A operação de mutação muda aleatóriamente a descendência criada pelo cruzamento. No caso de uma codificação binária, podemos mudar aleatóriamente alguns bits escolhidos de 1 para 0, ou de 0 para 1. A mutação pode então ser ilustrada como a seguir:

Descendência Original 1 1101111000011110
Descendência Original 2 1101100100110110
Descendência Mutada 1 1100111000011110
Descendência Mutada 2 1101101100110110

A técnica da mutação (da mesma forma que a do cruzamento) depende muito da codificação dos cromossomas. Por exemplo, quando codificamos permutações, mutações podem ser realizadas como uma troca de dois genes. (:

bom terminamos por aqui espero que tenham gostado que como estamos abordando o assunto por aqui!bons estudos ate a proxima []'s










,

Algoritimos Genéticos [AG] II


Bom continuando o artigo sobre Algoritimos Genéticos ,agora que você sabe o que significa,suas classes, e devido uso,vamos abordar aqui um pouco sobre Cromossomos,Espaço de soluções,reprodução,Problemas NP Difíceis.para se fazer programação genética é importante tbem ter um amplo conhecimento na area de saude, principalmente em reprodução,e uma pitad de uma " boa matematica" (-; enfim .... podemos dizer que Todos os organismos vivos são constituídos de células. Em cada célula há um mesmo conjunto de cromossomas. Cromossomas são cadeias de DNA e servem como modelo para todo o organismo.

O cromossoma é constituído de genes, que são blocos de DNA. Cada gene codifica uma determinada proteína. Basicamente, podemos dizer que cada gene codifica uma determinada feição, por examplo cor dos olhos. Conjunto de genes relacionados com determinada feição (por exemplo, olhos azuis, castanhos) são chamados alelos. Cada gene tem sua posição própria dentro do cromossoma. Essa posição é chamada local.

Um conjunto completo de material genético (todos os cromossomas) é chamado genoma. Um conjunto particular de genes de um genoma é chamado genótipo. O genótipo mais o desenvolvimento que ocorre após o nascimento é a base para o fenótipo do organismo, que são suas características físicas e mentais, tais como: cor dos olhos, inteligência, etc.

Reprodução

Durante a reprodução, ocorre inicialmente recombinação (ou cruzamento). Os genes dos pais são combinados para formar um novo cromossoma. Essa descendência recém criada pode sofrer uma mutação. Mutação significa que os elementos do DNA são ligeiramente modificados. Essas mudanças são causadas principalmente por erros na cópia dos genes dos pais.

A adaptação de um organismo é medida pelo sucesso do organismo na vida (sobrevivência).

Se estamos resolvendo um problema, geralmente procuramos por alguma solução que seja melhor que outras. O espaço de todas as soluções possíveis (que é um conjunto entre as quais a solução procurada está) é chamado Espaço das Soluções (ou Espaço de Estados). Cada ponto desse estado representa uma solução possível. Cada uma das possíveis soluções pode ser "marcada" pelo seu valor (ou adequação) para o problema. Com os Algoritmos Genéticos nós procuramos pela melhor solução dentre um número de possíveis soluções - representadas por pontos no Espaço de Soluções.Procurar por uma solução se resume então em procurar por algum valor extremo (um mínimo ou máximo) no espaço de soluções. Às vezes o espaço de soluções pode estar bem definido, mas usualmente nós sabemos apenas poucos pontos do espaço de soluções. No uso dos algoritmos genéticos o processo de encontrar soluções gera outros pontos (possíveis soluções) à medida que a evolução acontece.

O problema é que cada pesquisa pode ser muito complicada. Por exemplo, pode não saber por onde procurar uma solução ou por onde começar. Há muitos métodos que podem ser usados para encontrar uma solução adequada, mas esses métodos não fornecerão nedessariamente a melhor solução. Alguns desses métodos ão: subindo a montanha, pesquisa de tabelas, enrijecimento simulado e os algoritmos geneticos. As soluções encontradas por esses métodos são freqüentemente consideradas boas soluções porque nem sempre é possível provar qual é a ótima.

Problemas NP Difíceis

Um exemplo de classe de problemas que não podem ser resolvidos de modo tradicional são os problemas NP (não polinomiais).

Existem muitas tarefas para as quais podemos usar algoritmos rápidos (polinomiais), entretanto há também problemas que não podem ser resolvidos algoritmicamente.

Existem muitos problemas importantes em que é muito difícil encontrar uma solução, mas que uma vez encontrada, é fácil de ser verificada. Este fato nos leva aos chamados problemas NP-completos. O NP vem de "não polinomial determinístico" e significa que é possível "advinhar" a solução (por algum algoritmo não determinístico) e depois verificá-la.

Se tivermos uma máquina de advinhação, seremos capazes de achar uma solução num tempo razoável.

O estudo de problemas NP-completos é, por simplicidade, restrito aos problemas onde a resposta pode ser sim ou não. Em razão de que existem tarefas com saídas complicadas, uma classe de problemas chamados problemas NP-difíceis começaram a ser estudados. Essa classe de problemas não se limita aos problemas NP-completos.

Uma característica dos problemas NP é que um algoritmo simples, às vezes óbvio à primeira vista, pode ser usado para encontrar soluções úteis. Mas esta abordagem normalmente produz muitas soluções possíveis - testar todas as soluções possíveis é um processo muito lento. Para uma instância ligeiramente maior desse tipo de problema, essa abordagem é inútil.

Atualmente ninguém sabe se existe algum algoritmo rápido para encontrar solução exata para os problemas NP. A descoberta desses algoritmos permanece um desafio em aberto para pesquisadores em geral (talvez você! :-)). Atualmente muitas pessoas acham que tais algoritmos não existem e portanto procuram um método alternativo. Um exemplo de método alternativo são os algoritmos geneticos.

Exemplos de problemas NP são: problema da satisfatoriabilidade, o problema do caixeiro viajante, e o problema da mochila. Uma coleção de problemas NP está disponível aqui.

bom termino por aqui deixando como referencia o exelente trabalho do senhor (c) Marek Obitko, 1998 grande conheçedor em programação genética!

bons estudos ate a proxima (:

,

Algoritimos Genéticos [AG] I


Vamos abordar então neste artigo um pouco sobre Programação Genética pra ser mais especifico falar um pouco sobre o algotimo genético e mostrar a vocês passo a passo de como se fazer tal programação,para isso é utilizado algoritimos genéticos,que são estruturas de possibilidades e resoluções que o programdor vai desenvolver!mas você me pergunta: "Dr que finalidade vou ter isso na area de saude?" é simples a programação genética ela é uma técnica automática de programação que propicia a evolução de programas de computadores que resolvem (ou aproximadamente resolvem) problemas. Ela manipula soluções corretas e incorretas, encoraja inconsistências e abordagens contraditórias, não apresenta uma variabilidade dinâmica lógica, é predominantemente probabilística, produz soluções não-parcimoniosas e não apresenta um critério de terminação claramente definido.Como qualquer outro sistema computacional inspirado na natureza, a programação genética tem dois propósitos básicos:
  1. Servir de ferramenta para a solução de problemas de engenharia;
  2. Servir de modelo científico simplificado para processos naturais.

Na prática, qualquer implementação de programação genética vai envolver, ao menos parcialmente, ambos os propósitos básicos mencionados acima.

Na programação genética, os indivíduos da população não são seqüências de bits, mas sim programas de computador armazenados na forma de árvores sintáticas. Tais programas é que são os candidatos à solução do problema proposto. A programação genética não usa o operador mutação e a recombinação se dá pela troca de subárvores entre dois indivíduos candidatos à solução.

Algoritmos genéticos são parte da computação evolucionária, que é uma área em crescimento da inteligência artificial. Como você pode advinhar, algoritmos genéticos são inspirados na teoria da evolução de Darwin. Falando simplesmente, os problemas são resolvidos através de um processo evolutivo que resulta na melhor (mais adequada) solução (a sobrevivente) - ou em outras palavras, a solução é desenvolvida.

Os Algoritmos genéticos são em geral algoritmos simples e fáceis de serem implementados. Segue abaixo um trecho de pseudo-código descrevendo um algoritmo genético:

função AlgoritmoGenético(população, função-objetivo) saídas: indivíduo
entradas: população -> uma lista de indivíduos
função-objetivo -> uma função que recebe um indivíduo e retorna um número real.
repetir
lista de pais := seleção(população, função-objetivo)
população := reprodução(lista de pais)
enquanto nenhuma condiçao de parada for atingida

retorna o melhor indivíduo da população de acordo com a função-objetivo

A função objetivo é o objeto de nossa otimização. Pode ser um problema de otimização, um conjunto de teste para identificar os indivíduos mais aptos, ou mesmo uma "caixa preta" onde sabemos apenas o formato das entradas e nos retorna um valor que queremos otimizar. A grande vantagem dos algoritmos genéticos esta no fato de não precisarmos saber como funciona esta função objetivo, apenas tê-la disponível para ser aplicada aos indivíduos e comparar os resultados.

O indivíduo é meramente um portador do seu código genético. O código genético é uma representação do espaço de busca do problema a ser resolvido, em geral na forma de seqüências de bits. Por exemplo, para otimizações em problemas cujos valores de entrada são inteiros positivos de valor menor que 255 podemos usar 8 bits, com a representação binária normal, ou ainda uma forma de código gray. Problemas com múltiplas entradas podem combinar as entradas em uma única seqüência de bits, ou trabalhar com mais de um "cromossomo", cada um representando uma das entradas. O código genético deve ser uma representação capaz de representar todo o conjunto dos valores no espaço de busca, e precisa ter tamanho finito.

A seleção também é outra parte chave do algoritmo. Em geral, usa-se o algoritmo de seleção por "roleta", onde os indivíduos são ordenados de acordo com a função-objetivo e lhes são atribuídas probabilidades decrescentes de serem escolhidos. A escolha é feita então aleatoriamente de acordo com essas probabilidades. Dessa forma conseguimos escolher como pais os mais bem adaptados, sem deixar de lado a diversidade dos menos adaptados. Outras formas de seleção podem ser aplicadas dependendo do problema a ser tratado

A reprodução, tradicionalmente, é divididas em três etapas: acasalamento, recombinação e mutação. O acasalamento é a escolha de dois indivíduos para se reproduzirem (geralmente gerando dois descendentes para manter o tamanho populacional). A recombinação, ou crossing-over é um processo que imita o processo biológico homônimo na reprodução sexuada: os descendentes recebem em seu código genético parte do código genético do pai e parte do código da mãe. Esta recombinação garante que os melhores indivíduos sejam capazes de trocar entre si as informações que os levam a ser mais aptos a sobreviver, e assim gerar descendentes ainda mais aptos. Por último vem as mutações, que são feitas com probabilidade a mais baixa possível, e tem como objetivo permitir maior variabilidade genética na população, impedindo que a busca fique estagnada em um mínimo local

Programação Genética

Por ser um algoritmo extremamente simples e eficiente, existem diversas variações em cima do algorítmo genético básico para se obter resultados melhores ou mesmo tratar novas classes de problemas. Uma dessas variações é a Programação genética. Na Programação genética os indivíduos representam pequenos programas de computador que serão avaliados de acordo com o resultado de sua execução. Estes programas podem ser expressões simples, como fórmulas aritméticas ou programas complexos, com operações de laço e condicionais, típicas de uma linguagem de programação comum.

bom termino por aqui a introdução sobre algoritimos geneticos bem ate a proxima!(:
Bons estudos!