tutorial: sbgames 2009 criação de um jogo de quebra-cabeças usando algoritmo genético como motor...
TRANSCRIPT
![Page 1: TUTORIAL: SBGAMES 2009 Criação de um Jogo de Quebra-Cabeças Usando Algoritmo Genético como Motor de Resolução Autores: Alex Fernandes da Veiga Machado](https://reader035.vdocuments.pub/reader035/viewer/2022081602/552fc103497959413d8bf1cc/html5/thumbnails/1.jpg)
TUTORIAL: SBGAMES 2009Criação de um Jogo de
Quebra-Cabeças Usando Algoritmo Genético como
Motor de ResoluçãoAutores:
Alex Fernandes da Veiga MachadoCarla Rezende Barbosa BoninEsteban Walter Gonzales CluaGustavo Montes NovaesMauro Lúcio Ruy de Almeida Filho
![Page 2: TUTORIAL: SBGAMES 2009 Criação de um Jogo de Quebra-Cabeças Usando Algoritmo Genético como Motor de Resolução Autores: Alex Fernandes da Veiga Machado](https://reader035.vdocuments.pub/reader035/viewer/2022081602/552fc103497959413d8bf1cc/html5/thumbnails/2.jpg)
Algumas Apresentações (2007) SEMINF (Semana de Informática do CEFET-MG - Campus
Leopoldina)
X META Leopoldina ( X Mostra Específica de Trabalhos e Aplicações do Campus Leopoldina)
Semana de Informática das Faculdades Doctum – Cataguases
Semana de Informática da FAGOC – Ubá
SBGames 2007(VI Simpósio Brasileiro de Jogos para Computador e Entretenimento Digital) – São Leopoldo/RS
XII Semana de Informática da Universidade Federal de Viçosa (UFV)
![Page 3: TUTORIAL: SBGAMES 2009 Criação de um Jogo de Quebra-Cabeças Usando Algoritmo Genético como Motor de Resolução Autores: Alex Fernandes da Veiga Machado](https://reader035.vdocuments.pub/reader035/viewer/2022081602/552fc103497959413d8bf1cc/html5/thumbnails/3.jpg)
6ª Feira Brasileira de Ciências e Engenharia (FEBRACE), na Universidade de São Paulo (USP), São Paulo
59th INTEL International Science and Engineering Fair (INTEL ISEF), Atlanta, Estados Unidos
1ª GameSul Mato Grosso, Rondonópolis, Mato Grosso
2ª Feira de Ciências e Tecnologia do Sul do Maranhão (FECITEC-MA) 2008, Imperatriz, Maranhão
Semana de Informática das Faculdades Doctum – Cataguases
SBGames 2008(VII Simpósio Brasileiro de Jogos para Computador e Entretenimento Digital) – Belo Horizonte, Minas Gerais
Algumas Apresentações (2008)
![Page 4: TUTORIAL: SBGAMES 2009 Criação de um Jogo de Quebra-Cabeças Usando Algoritmo Genético como Motor de Resolução Autores: Alex Fernandes da Veiga Machado](https://reader035.vdocuments.pub/reader035/viewer/2022081602/552fc103497959413d8bf1cc/html5/thumbnails/4.jpg)
4
Índice Heurísticas e Aplicações Problema!!! Algoritmo Genético com Árvore de Buscas
![Page 5: TUTORIAL: SBGAMES 2009 Criação de um Jogo de Quebra-Cabeças Usando Algoritmo Genético como Motor de Resolução Autores: Alex Fernandes da Veiga Machado](https://reader035.vdocuments.pub/reader035/viewer/2022081602/552fc103497959413d8bf1cc/html5/thumbnails/5.jpg)
5
Heurísticas e Aplicações Define soluções para um problema através da
otimização dos resultados gerados
Tem como objetivo medir ganhos de eficácia e de precisão para definir os melhores resultados.
São utilizadas em problemas que possuem uma complexidade elevada em função do grande número de soluções possíveis
Denomina-se 'heurística' a capacidade de um sistema fazer inovações e desenvolver técnicas de forma imediata e positiva para um determinado fim.
![Page 6: TUTORIAL: SBGAMES 2009 Criação de um Jogo de Quebra-Cabeças Usando Algoritmo Genético como Motor de Resolução Autores: Alex Fernandes da Veiga Machado](https://reader035.vdocuments.pub/reader035/viewer/2022081602/552fc103497959413d8bf1cc/html5/thumbnails/6.jpg)
6
Tipos Utilizados• Algoritmo Genético
• GRASP
• AG-GRASP
Áreas de Atuação
Implementação das Heurísticas
Heurísticas e Aplicações
![Page 7: TUTORIAL: SBGAMES 2009 Criação de um Jogo de Quebra-Cabeças Usando Algoritmo Genético como Motor de Resolução Autores: Alex Fernandes da Veiga Machado](https://reader035.vdocuments.pub/reader035/viewer/2022081602/552fc103497959413d8bf1cc/html5/thumbnails/7.jpg)
Jogo Modelo para Tutorial
![Page 8: TUTORIAL: SBGAMES 2009 Criação de um Jogo de Quebra-Cabeças Usando Algoritmo Genético como Motor de Resolução Autores: Alex Fernandes da Veiga Machado](https://reader035.vdocuments.pub/reader035/viewer/2022081602/552fc103497959413d8bf1cc/html5/thumbnails/8.jpg)
![Page 9: TUTORIAL: SBGAMES 2009 Criação de um Jogo de Quebra-Cabeças Usando Algoritmo Genético como Motor de Resolução Autores: Alex Fernandes da Veiga Machado](https://reader035.vdocuments.pub/reader035/viewer/2022081602/552fc103497959413d8bf1cc/html5/thumbnails/9.jpg)
Software e Linguagem
A Linguagem utilizada foi a FreePascal O Software escolhido foi o Lazarus
(Ferramenta RAD) Característica de CrossCompiling Facilidade de Desenvolvimento Boa Velocidade de Resolução Gratuidade e Disponibilidade de Licença
![Page 10: TUTORIAL: SBGAMES 2009 Criação de um Jogo de Quebra-Cabeças Usando Algoritmo Genético como Motor de Resolução Autores: Alex Fernandes da Veiga Machado](https://reader035.vdocuments.pub/reader035/viewer/2022081602/552fc103497959413d8bf1cc/html5/thumbnails/10.jpg)
10
Problema!!!
![Page 11: TUTORIAL: SBGAMES 2009 Criação de um Jogo de Quebra-Cabeças Usando Algoritmo Genético como Motor de Resolução Autores: Alex Fernandes da Veiga Machado](https://reader035.vdocuments.pub/reader035/viewer/2022081602/552fc103497959413d8bf1cc/html5/thumbnails/11.jpg)
11
Problema!!!
![Page 12: TUTORIAL: SBGAMES 2009 Criação de um Jogo de Quebra-Cabeças Usando Algoritmo Genético como Motor de Resolução Autores: Alex Fernandes da Veiga Machado](https://reader035.vdocuments.pub/reader035/viewer/2022081602/552fc103497959413d8bf1cc/html5/thumbnails/12.jpg)
12
Tabela de Movimentos
![Page 13: TUTORIAL: SBGAMES 2009 Criação de um Jogo de Quebra-Cabeças Usando Algoritmo Genético como Motor de Resolução Autores: Alex Fernandes da Veiga Machado](https://reader035.vdocuments.pub/reader035/viewer/2022081602/552fc103497959413d8bf1cc/html5/thumbnails/13.jpg)
13
Árvore de Buscas (Exemplificação)Estrutura Game Search Tree (Árvore de Buscas)
Na teoria combinatória dos jogos, representa um Grafo Direcionado cujos nodos são as posições de um jogo e os
vértices são os movimentos possíveis.
![Page 14: TUTORIAL: SBGAMES 2009 Criação de um Jogo de Quebra-Cabeças Usando Algoritmo Genético como Motor de Resolução Autores: Alex Fernandes da Veiga Machado](https://reader035.vdocuments.pub/reader035/viewer/2022081602/552fc103497959413d8bf1cc/html5/thumbnails/14.jpg)
Procedimentos de Interação Usuário/Jogo
Embaralhar o Quebra-Cabeças
Iniciar a contagem do tempo
Realizar a troca de peças
Solicitar Dicas (Hints)
![Page 15: TUTORIAL: SBGAMES 2009 Criação de um Jogo de Quebra-Cabeças Usando Algoritmo Genético como Motor de Resolução Autores: Alex Fernandes da Veiga Machado](https://reader035.vdocuments.pub/reader035/viewer/2022081602/552fc103497959413d8bf1cc/html5/thumbnails/15.jpg)
Solucionar todo o jogo
Receber informação da solução completa do jogo
Paralisar o tempo
Sair do jogo
Procedimentos de Interação Usuário/Jogo
![Page 16: TUTORIAL: SBGAMES 2009 Criação de um Jogo de Quebra-Cabeças Usando Algoritmo Genético como Motor de Resolução Autores: Alex Fernandes da Veiga Machado](https://reader035.vdocuments.pub/reader035/viewer/2022081602/552fc103497959413d8bf1cc/html5/thumbnails/16.jpg)
16
Conceitos gerais
Gene Cromossomo Geração Inicial Mutação Crossover Fitness
![Page 17: TUTORIAL: SBGAMES 2009 Criação de um Jogo de Quebra-Cabeças Usando Algoritmo Genético como Motor de Resolução Autores: Alex Fernandes da Veiga Machado](https://reader035.vdocuments.pub/reader035/viewer/2022081602/552fc103497959413d8bf1cc/html5/thumbnails/17.jpg)
17
Exemplo do Projeto
![Page 18: TUTORIAL: SBGAMES 2009 Criação de um Jogo de Quebra-Cabeças Usando Algoritmo Genético como Motor de Resolução Autores: Alex Fernandes da Veiga Machado](https://reader035.vdocuments.pub/reader035/viewer/2022081602/552fc103497959413d8bf1cc/html5/thumbnails/18.jpg)
18
Algoritmo Genético
Conceito
Características
Vantagens
![Page 19: TUTORIAL: SBGAMES 2009 Criação de um Jogo de Quebra-Cabeças Usando Algoritmo Genético como Motor de Resolução Autores: Alex Fernandes da Veiga Machado](https://reader035.vdocuments.pub/reader035/viewer/2022081602/552fc103497959413d8bf1cc/html5/thumbnails/19.jpg)
19
Algoritmo Genético aplicado - Fluxograma
![Page 20: TUTORIAL: SBGAMES 2009 Criação de um Jogo de Quebra-Cabeças Usando Algoritmo Genético como Motor de Resolução Autores: Alex Fernandes da Veiga Machado](https://reader035.vdocuments.pub/reader035/viewer/2022081602/552fc103497959413d8bf1cc/html5/thumbnails/20.jpg)
20
Exemplo: Magic SquareEtapa 1
Representação de todas as situações
![Page 21: TUTORIAL: SBGAMES 2009 Criação de um Jogo de Quebra-Cabeças Usando Algoritmo Genético como Motor de Resolução Autores: Alex Fernandes da Veiga Machado](https://reader035.vdocuments.pub/reader035/viewer/2022081602/552fc103497959413d8bf1cc/html5/thumbnails/21.jpg)
21
Exemplo: Magic Square
Etapa 2Definição do tempo limite e do nº de gerações
Tempo Limite (segs.) = 10
N de Gerações = 10
![Page 22: TUTORIAL: SBGAMES 2009 Criação de um Jogo de Quebra-Cabeças Usando Algoritmo Genético como Motor de Resolução Autores: Alex Fernandes da Veiga Machado](https://reader035.vdocuments.pub/reader035/viewer/2022081602/552fc103497959413d8bf1cc/html5/thumbnails/22.jpg)
22
Exemplo: Magic SquareEtapa 3
Definição da profundidade (game tree) e da função de fitness
Profundidade = 15
![Page 23: TUTORIAL: SBGAMES 2009 Criação de um Jogo de Quebra-Cabeças Usando Algoritmo Genético como Motor de Resolução Autores: Alex Fernandes da Veiga Machado](https://reader035.vdocuments.pub/reader035/viewer/2022081602/552fc103497959413d8bf1cc/html5/thumbnails/23.jpg)
23
Exemplo: Magic Square
Etapa 4Definição da taxa de crossover e mutação
Crossover= 50%
Mutacao= 10%
![Page 24: TUTORIAL: SBGAMES 2009 Criação de um Jogo de Quebra-Cabeças Usando Algoritmo Genético como Motor de Resolução Autores: Alex Fernandes da Veiga Machado](https://reader035.vdocuments.pub/reader035/viewer/2022081602/552fc103497959413d8bf1cc/html5/thumbnails/24.jpg)
24
Exemplo: Magic Square
Etapa 5Geração da população inicial de cromossomos
![Page 25: TUTORIAL: SBGAMES 2009 Criação de um Jogo de Quebra-Cabeças Usando Algoritmo Genético como Motor de Resolução Autores: Alex Fernandes da Veiga Machado](https://reader035.vdocuments.pub/reader035/viewer/2022081602/552fc103497959413d8bf1cc/html5/thumbnails/25.jpg)
25
Exemplo: Magic SquareEtapa 6
Execução do crossover
C1= {14, 4, 8, 0, 18, 17, 10, 12, 4, 6, 17, 17, 17, 14, 16}
C2= {10, 0, 1, 6, 3, 2, 2, 0, 5, 0, 8, 15, 12, 2, 2}
OS1= {14, 4, 8, 0, 18, 17, 10, 12, 4, 6, 17, 15, 12, 2, 2}
OS2= {10, 0, 1, 6, 3, 2, 2, 0, 5, 0, 8, 17, 17, 14, 16}
![Page 26: TUTORIAL: SBGAMES 2009 Criação de um Jogo de Quebra-Cabeças Usando Algoritmo Genético como Motor de Resolução Autores: Alex Fernandes da Veiga Machado](https://reader035.vdocuments.pub/reader035/viewer/2022081602/552fc103497959413d8bf1cc/html5/thumbnails/26.jpg)
26
Exemplo: Magic Square
Etapa 7Execução da mutação
C1= {7, 11, 8, 12, 8, 0, 3, 9, 1, 2, 11, 13, 9, 3, 2}
OS1= {7, 11, 8, 12, 8, 0, 3, 9, 8, 2, 11, 13, 9, 3, 2}
![Page 27: TUTORIAL: SBGAMES 2009 Criação de um Jogo de Quebra-Cabeças Usando Algoritmo Genético como Motor de Resolução Autores: Alex Fernandes da Veiga Machado](https://reader035.vdocuments.pub/reader035/viewer/2022081602/552fc103497959413d8bf1cc/html5/thumbnails/27.jpg)
27
Exemplo: Magic Square
Etapa 8Cálculo do valor de fitness de cada offspring
![Page 28: TUTORIAL: SBGAMES 2009 Criação de um Jogo de Quebra-Cabeças Usando Algoritmo Genético como Motor de Resolução Autores: Alex Fernandes da Veiga Machado](https://reader035.vdocuments.pub/reader035/viewer/2022081602/552fc103497959413d8bf1cc/html5/thumbnails/28.jpg)
28
Exemplo: Magic Square
Etapa 9Seleção dos melhores candidatos (critério elitista)
![Page 29: TUTORIAL: SBGAMES 2009 Criação de um Jogo de Quebra-Cabeças Usando Algoritmo Genético como Motor de Resolução Autores: Alex Fernandes da Veiga Machado](https://reader035.vdocuments.pub/reader035/viewer/2022081602/552fc103497959413d8bf1cc/html5/thumbnails/29.jpg)
29
Exemplo: Magic Square
Etapa 10Finalização ou repetição da Etapa 6
Solucao= {16, 9, 2 1, 4, 8, 7, 10, 16, 4, 12, 13, 7, 11, 4}
![Page 30: TUTORIAL: SBGAMES 2009 Criação de um Jogo de Quebra-Cabeças Usando Algoritmo Genético como Motor de Resolução Autores: Alex Fernandes da Veiga Machado](https://reader035.vdocuments.pub/reader035/viewer/2022081602/552fc103497959413d8bf1cc/html5/thumbnails/30.jpg)
Códigos e Procedures
Procedimentos que devem ser criados para viabilizar a
implementação dos conceitos do Algoritmo Genético
![Page 31: TUTORIAL: SBGAMES 2009 Criação de um Jogo de Quebra-Cabeças Usando Algoritmo Genético como Motor de Resolução Autores: Alex Fernandes da Veiga Machado](https://reader035.vdocuments.pub/reader035/viewer/2022081602/552fc103497959413d8bf1cc/html5/thumbnails/31.jpg)
Troca de Botões // Botão 1
if(q1=1)then
begin if(q2=2) then begin cap:=Form1.BitBtn2.caption; Form1.BitBtn2.caption := Form1.BitBtn1.caption; Form1.BitBtn1.caption := cap; Form1.BitBtn10.Glyph:=Form1.BitBtn2.Glyph; Form1.BitBtn2.Glyph:=Form1.BitBtn1.Glyph; Form1.BitBtn1.Glyph:=Form1.BitBtn10.Glyph; end;
![Page 32: TUTORIAL: SBGAMES 2009 Criação de um Jogo de Quebra-Cabeças Usando Algoritmo Genético como Motor de Resolução Autores: Alex Fernandes da Veiga Machado](https://reader035.vdocuments.pub/reader035/viewer/2022081602/552fc103497959413d8bf1cc/html5/thumbnails/32.jpg)
if(q2=6) then begin cap:=Form1.BitBtn6.caption; Form1.BitBtn6.caption := Form1.BitBtn1.caption; Form1.BitBtn1.caption := cap; Form1.BitBtn10.Glyph:=Form1.BitBtn6.Glyph; Form1.BitBtn6.Glyph:=Form1.BitBtn1.Glyph; Form1.BitBtn1.Glyph:=Form1.BitBtn10.Glyph; end;
Troca de Botões
![Page 33: TUTORIAL: SBGAMES 2009 Criação de um Jogo de Quebra-Cabeças Usando Algoritmo Genético como Motor de Resolução Autores: Alex Fernandes da Veiga Machado](https://reader035.vdocuments.pub/reader035/viewer/2022081602/552fc103497959413d8bf1cc/html5/thumbnails/33.jpg)
if(q2=3) then begin cap:=Form1.BitBtn5.caption; Form1.BitBtn5.caption := Form1.BitBtn1.caption; Form1.BitBtn1.caption := cap; Form1.BitBtn10.Glyph:=Form1.BitBtn5.Glyph; Form1.BitBtn5.Glyph:=Form1.BitBtn1.Glyph; Form1.BitBtn1.Glyph:=Form1.BitBtn10.Glyph; end;
Troca de Botões
![Page 34: TUTORIAL: SBGAMES 2009 Criação de um Jogo de Quebra-Cabeças Usando Algoritmo Genético como Motor de Resolução Autores: Alex Fernandes da Veiga Machado](https://reader035.vdocuments.pub/reader035/viewer/2022081602/552fc103497959413d8bf1cc/html5/thumbnails/34.jpg)
if(q2=21) then begin cap:=Form1.BitBtn52.caption; Form1.BitBtn52.caption := Form1.BitBtn1.caption; Form1.BitBtn1.caption := cap; Form1.BitBtn10.Glyph:=Form1.BitBtn52.Glyph; Form1.BitBtn52.Glyph:=Form1.BitBtn1.Glyph; Form1.BitBtn1.Glyph:=Form1.BitBtn10.Glyph; end; end;
Troca de Botões
![Page 35: TUTORIAL: SBGAMES 2009 Criação de um Jogo de Quebra-Cabeças Usando Algoritmo Genético como Motor de Resolução Autores: Alex Fernandes da Veiga Machado](https://reader035.vdocuments.pub/reader035/viewer/2022081602/552fc103497959413d8bf1cc/html5/thumbnails/35.jpg)
Embaralhar Imagem procedure aleatorio(max: integer); var numero: array[1..2000] of integer; resposta: string; k,n,i, ale: integer; begin
for i:=1 to max do numero[i]:=i; for i:=1 to max do begin ale:=random(max+1-i)+1; escolhido[i]:=numero[ale]; n:=0; for k:=1 to max+1-i do
![Page 36: TUTORIAL: SBGAMES 2009 Criação de um Jogo de Quebra-Cabeças Usando Algoritmo Genético como Motor de Resolução Autores: Alex Fernandes da Veiga Machado](https://reader035.vdocuments.pub/reader035/viewer/2022081602/552fc103497959413d8bf1cc/html5/thumbnails/36.jpg)
Embaralhar Imagem begin if(k<>ale) then begin n:=n+1; numero[n]:=numero[k]; end; end; end;
for i:=1 to max do resposta:=resposta+inttostr(escolhido[i])+' - '; //Form1.Edit1.Text:=resposta; end;
![Page 37: TUTORIAL: SBGAMES 2009 Criação de um Jogo de Quebra-Cabeças Usando Algoritmo Genético como Motor de Resolução Autores: Alex Fernandes da Veiga Machado](https://reader035.vdocuments.pub/reader035/viewer/2022081602/552fc103497959413d8bf1cc/html5/thumbnails/37.jpg)
Definição dos Possíveis Movimentos if(cromo=1)then
begin prime:=Form1.BitBtn2.caption; Form1.BitBtn2.caption := Form1.BitBtn1.caption; Form1.BitBtn1.caption := prime;
Form1.BitBtn10.Glyph:=Form1.BitBtn2.Glyph; Form1.BitBtn2.Glyph:=Form1.BitBtn1.Glyph; Form1.BitBtn1.Glyph:=Form1.BitBtn10.Glyph; end;
![Page 38: TUTORIAL: SBGAMES 2009 Criação de um Jogo de Quebra-Cabeças Usando Algoritmo Genético como Motor de Resolução Autores: Alex Fernandes da Veiga Machado](https://reader035.vdocuments.pub/reader035/viewer/2022081602/552fc103497959413d8bf1cc/html5/thumbnails/38.jpg)
if(cromo=2)then
begin prime:=Form1.BitBtn1.caption; Form1.BitBtn1.caption := Form1.BitBtn5.caption; Form1.BitBtn5.caption := prime;
Form1.BitBtn10.Glyph:=Form1.BitBtn1.Glyph; Form1.BitBtn1.Glyph:=Form1.BitBtn5.Glyph; Form1.BitBtn5.Glyph:=Form1.BitBtn10.Glyph; end;
Definição dos Possíveis Movimentos
![Page 39: TUTORIAL: SBGAMES 2009 Criação de um Jogo de Quebra-Cabeças Usando Algoritmo Genético como Motor de Resolução Autores: Alex Fernandes da Veiga Machado](https://reader035.vdocuments.pub/reader035/viewer/2022081602/552fc103497959413d8bf1cc/html5/thumbnails/39.jpg)
Geração da População Inicial // gerar o primeiro grupo de cromossomos aleatorios
procedure primeiro(); begin //criar os cromossomor da população inicial for contador:=1 to 10 do begin for contador1:=1 to nmovimentos do begin num2:=random(51); cromossomo[contador][contador1]:=num2; end; end;
![Page 40: TUTORIAL: SBGAMES 2009 Criação de um Jogo de Quebra-Cabeças Usando Algoritmo Genético como Motor de Resolução Autores: Alex Fernandes da Veiga Machado](https://reader035.vdocuments.pub/reader035/viewer/2022081602/552fc103497959413d8bf1cc/html5/thumbnails/40.jpg)
Realização do Crossover procedure crossover(); begin v1:=''; //taxa:=round(taxacross/100*nmovimentos); taxa:=35; t:=1; while (t<=10) do begin z:=t+1; for u:=1 to taxa+1 do cromossomo[t+10][u]:=cromossomo[t][u]; for u:=taxa+1 to nmovimentos do cromossomo[t+10][u]:=cromossomo[z][u]; t:=t+1; for u:=taxa to nmovimentos do cromossomo[t+10][u]:=cromossomo[t-1][u]; for u:=1 to taxa do cromossomo[t+10][u]:=cromossomo[z][u]; t:=t+1; end;
![Page 41: TUTORIAL: SBGAMES 2009 Criação de um Jogo de Quebra-Cabeças Usando Algoritmo Genético como Motor de Resolução Autores: Alex Fernandes da Veiga Machado](https://reader035.vdocuments.pub/reader035/viewer/2022081602/552fc103497959413d8bf1cc/html5/thumbnails/41.jpg)
Realização da Mutação procedure mutacao(); begin //taxa1:=round(taxamut/100*nmovimentos); taxa1:=3; //pega a população inicial para a mutação for contador3:=1 to 10 do begin for contador12:=1 to nmovimentos do begin ssomo[contador3][contador12]:=cromossomo[contador3][contador12]; end; end; //mutação for contador13:=1 to 10 do begin
![Page 42: TUTORIAL: SBGAMES 2009 Criação de um Jogo de Quebra-Cabeças Usando Algoritmo Genético como Motor de Resolução Autores: Alex Fernandes da Veiga Machado](https://reader035.vdocuments.pub/reader035/viewer/2022081602/552fc103497959413d8bf1cc/html5/thumbnails/42.jpg)
Realização da Mutação for qnt:=1 to taxa1 do begin gene:=1+random(nmovimentos); muta:=random(51); ssomo[contador13][gene]:=muta; end; end; //guarda o resultado da mutação for contador3:=1 to 10 do begin for contador4:=1 to nmovimentos do begin cromossomo[contador3+20][contador4]:=ssomo[contador3][contador4]; end; end;
![Page 43: TUTORIAL: SBGAMES 2009 Criação de um Jogo de Quebra-Cabeças Usando Algoritmo Genético como Motor de Resolução Autores: Alex Fernandes da Veiga Machado](https://reader035.vdocuments.pub/reader035/viewer/2022081602/552fc103497959413d8bf1cc/html5/thumbnails/43.jpg)
Cálculo do Fitness procedure fitness(); begin //Button 1 if (cromof[1]=1)then um :=0; if (cromof[1]=2)then um :=1; if (cromof[1]=3)then um :=2; if (cromof[1]=4)then um :=2; if (cromof[1]=5)then um :=1; if (cromof[1]=6)then um :=1; if (cromof[1]=7)then um :=2; if (cromof[1]=8)then um :=3; if (cromof[1]=9)then um :=3; if (cromof[1]=10)then um :=2; if (cromof[1]=11)then um :=2; if (cromof[1]=12)then um :=3;
![Page 44: TUTORIAL: SBGAMES 2009 Criação de um Jogo de Quebra-Cabeças Usando Algoritmo Genético como Motor de Resolução Autores: Alex Fernandes da Veiga Machado](https://reader035.vdocuments.pub/reader035/viewer/2022081602/552fc103497959413d8bf1cc/html5/thumbnails/44.jpg)
Cálculo do Fitness if (cromof[1]=13)then um :=4; if (cromof[1]=14)then um :=4; if (cromof[1]=15)then um :=3; if (cromof[1]=16)then um :=2; if (cromof[1]=17)then um :=3; if (cromof[1]=18)then um :=4; if (cromof[1]=19)then um :=4; if (cromof[1]=20)then um :=3; if (cromof[1]=21)then um :=1; if (cromof[1]=22)then um :=2; if (cromof[1]=23)then um :=3; if (cromof[1]=24)then um :=3; if (cromof[1]=25)then um :=2; //total de fitness total:=100-(um+dois+tres+...+vintetres+vintequatro+vintecinco);
![Page 45: TUTORIAL: SBGAMES 2009 Criação de um Jogo de Quebra-Cabeças Usando Algoritmo Genético como Motor de Resolução Autores: Alex Fernandes da Veiga Machado](https://reader035.vdocuments.pub/reader035/viewer/2022081602/552fc103497959413d8bf1cc/html5/thumbnails/45.jpg)
Troca Interna com Entrada de Genesprocedure trocab(t1:integer); begin if(t1=1)then begin seg:=cromof[2]; cromof[2] := cromof[1]; cromof[1] := seg; end;
if(t1=2)then begin seg:=cromof[5]; cromof[5] := cromof[1]; cromof[1] := seg; end;
![Page 46: TUTORIAL: SBGAMES 2009 Criação de um Jogo de Quebra-Cabeças Usando Algoritmo Genético como Motor de Resolução Autores: Alex Fernandes da Veiga Machado](https://reader035.vdocuments.pub/reader035/viewer/2022081602/552fc103497959413d8bf1cc/html5/thumbnails/46.jpg)
Alinha os Cromossomos (melhores fitness) procedure setimo(); begin dan:=1; nad:=1; maior:=100;
while(maior>=0) do begin for most1:=1 to 30 do begin if(fitcromossomo[most1]=maior) then begin for contador7:=1 to nmovimentos do maiorcromo[dan]
[contador7]:=cromossomo[most1][contador7]; maiorfit[nad]:=maior;
![Page 47: TUTORIAL: SBGAMES 2009 Criação de um Jogo de Quebra-Cabeças Usando Algoritmo Genético como Motor de Resolução Autores: Alex Fernandes da Veiga Machado](https://reader035.vdocuments.pub/reader035/viewer/2022081602/552fc103497959413d8bf1cc/html5/thumbnails/47.jpg)
dan:=dan+1; nad:=nad+1; end; end; maior:=maior-1; end;
//Apenas mostra os cromossomos alinhados pf:=''; for most:=1 to 30 do begin pf:=inttostr(maiorfit[most]); Form1.Memo7.Lines.Add(pf); end; end;
Alinha os Cromossomos (melhores fitness)
![Page 48: TUTORIAL: SBGAMES 2009 Criação de um Jogo de Quebra-Cabeças Usando Algoritmo Genético como Motor de Resolução Autores: Alex Fernandes da Veiga Machado](https://reader035.vdocuments.pub/reader035/viewer/2022081602/552fc103497959413d8bf1cc/html5/thumbnails/48.jpg)
Seleciona Melhores Cromossomos procedure oitavo(); begin Form1.memo1.lines.Clear; Form1.memo2.lines.Clear; Form1.memo7.lines.Clear; for contador10:=1 to 10 do begin for contador11:=1 to nmovimentos do begin cromossomo[contador10]
[contador11]:=maiorcromo[contador10][contador11]; v4:=v4+' '+ inttostr(cromossomo[contador10][contador11]); end;
![Page 49: TUTORIAL: SBGAMES 2009 Criação de um Jogo de Quebra-Cabeças Usando Algoritmo Genético como Motor de Resolução Autores: Alex Fernandes da Veiga Machado](https://reader035.vdocuments.pub/reader035/viewer/2022081602/552fc103497959413d8bf1cc/html5/thumbnails/49.jpg)
fitcromossomo[contador10]:=maiorfit[contador10]; Form1.memo1.lines.add(v4);
Form1.memo2.lines.add(inttostr(fitcromossomo[contador10]));
form1.Memo7.Lines.Add(inttostr(maiorfit[contador10])); v4:=''; end; end;
Seleciona Melhores Cromossomos
![Page 50: TUTORIAL: SBGAMES 2009 Criação de um Jogo de Quebra-Cabeças Usando Algoritmo Genético como Motor de Resolução Autores: Alex Fernandes da Veiga Machado](https://reader035.vdocuments.pub/reader035/viewer/2022081602/552fc103497959413d8bf1cc/html5/thumbnails/50.jpg)
Resolver o Problema procedure botaoag(); var dia, mes, ano, horas, minutos1, segundos1, milisegundos1, minutos2, segundos2,
milisegundos2: Word; begin // uses DateUtils DecodeDateTime(Now, ano, mes, dia, horas, minutos1, segundos1, milisegundos1); solu:=0; for constante:=1 to maxite do begin if (exibir)then begin Form1.memo1.clear; Form1.memo2.clear; Form1.memo3.clear; Form1.memo4.clear; Form1.memo5.clear; Form1.memo6.clear; end;
![Page 51: TUTORIAL: SBGAMES 2009 Criação de um Jogo de Quebra-Cabeças Usando Algoritmo Genético como Motor de Resolução Autores: Alex Fernandes da Veiga Machado](https://reader035.vdocuments.pub/reader035/viewer/2022081602/552fc103497959413d8bf1cc/html5/thumbnails/51.jpg)
if (solu<>1)then begin primeiro(); //gerar população inicial segundo(); //calcula o fitness da população inicial solu:=1; end; terceiro(); //faz o crossover quarto(); //calcula o fitness do crossover quinto(); //faz a mutação sexto(); //calcula o fitness da mutação setimo(); //alinha em ordem decrescente de fitness oitavo(); //pega os dez melhores
Resolver o Problema
![Page 52: TUTORIAL: SBGAMES 2009 Criação de um Jogo de Quebra-Cabeças Usando Algoritmo Genético como Motor de Resolução Autores: Alex Fernandes da Veiga Machado](https://reader035.vdocuments.pub/reader035/viewer/2022081602/552fc103497959413d8bf1cc/html5/thumbnails/52.jpg)
Resolver o Problema if (maiorfit[1]=100) then
begin form1.edit10.text:='Sim'; form1.Button16.Enabled:=true; form1.edit9.text:=inttostr(maiorfit[1]); end else begin form1.edit10.text:='Não'; form1.edit9.text:=inttostr(maiorfit[1]); end;
![Page 53: TUTORIAL: SBGAMES 2009 Criação de um Jogo de Quebra-Cabeças Usando Algoritmo Genético como Motor de Resolução Autores: Alex Fernandes da Veiga Machado](https://reader035.vdocuments.pub/reader035/viewer/2022081602/552fc103497959413d8bf1cc/html5/thumbnails/53.jpg)
Resolver o Problema Application.ProcessMessages; form1.edit1.text:=''; for contador15 :=1 to nmovimentos do begin cromoescolhido[contador15]:=maiorcromo[1][contador15]; s2[contador15]:=cromoescolhido[contador15]; form1.edit1.text:=form1.edit1.Text+ ' '+
inttostr(cromoescolhido[contador15]); end;
if (maiorfit[1]=100)then break; end;
![Page 54: TUTORIAL: SBGAMES 2009 Criação de um Jogo de Quebra-Cabeças Usando Algoritmo Genético como Motor de Resolução Autores: Alex Fernandes da Veiga Machado](https://reader035.vdocuments.pub/reader035/viewer/2022081602/552fc103497959413d8bf1cc/html5/thumbnails/54.jpg)
Resolver o Problema form1.edit3.Text:=inttostr(constante);
DecodeDateTime(Now, ano, mes, dia, horas, minutos2, segundos2, milisegundos2);
form1.Edit7.Text:=inttostr(60000*(minutos2-minutos1)+1000*(segundos2-segundos1)+milisegundos2-milisegundos1);
end;
procedure TForm1.Button11Click(Sender: TObject); begin botaoag(); end;
![Page 55: TUTORIAL: SBGAMES 2009 Criação de um Jogo de Quebra-Cabeças Usando Algoritmo Genético como Motor de Resolução Autores: Alex Fernandes da Veiga Machado](https://reader035.vdocuments.pub/reader035/viewer/2022081602/552fc103497959413d8bf1cc/html5/thumbnails/55.jpg)
Demais Áreas de Aplicação de AG
Jogos de Raciocínio como: Sudoku, Jogos de Tabuleiro
Softwares aplicados à Economia
![Page 56: TUTORIAL: SBGAMES 2009 Criação de um Jogo de Quebra-Cabeças Usando Algoritmo Genético como Motor de Resolução Autores: Alex Fernandes da Veiga Machado](https://reader035.vdocuments.pub/reader035/viewer/2022081602/552fc103497959413d8bf1cc/html5/thumbnails/56.jpg)
56
Referências Bibliográficas [1] Hong, P. T. et al. Applying Genetic Algorithms to Game Search Trees.
Soft Computing, 2001.
[2] Sugisaka, Masanori et al. Genetic algorithms (GAs) to evolve multiple-agent cooperative systems. Artif Life Robotics, 1999.
[3] Lacerda, E. G. M.; Carvalho, A. C. P. L. F. Introdução aos algoritmos genéticos. In: Galvão, C.O., Valença, M.J.S. (orgs.) Sistemas inteligentes: aplicações a recursos hídricos e ciências ambientais. Porto Alegre: Ed. Universidade/UFRGS : Associação Brasileira de Recursos Hídricos.
[4] Thomas H. Cormen; Charles E. Leiserson; Ronald L. Rivest, 2001. Introduction to Algorithms, Second Edition. MIT Press and McGraw-Hill,. ISBN 0-262-03293-7.
![Page 57: TUTORIAL: SBGAMES 2009 Criação de um Jogo de Quebra-Cabeças Usando Algoritmo Genético como Motor de Resolução Autores: Alex Fernandes da Veiga Machado](https://reader035.vdocuments.pub/reader035/viewer/2022081602/552fc103497959413d8bf1cc/html5/thumbnails/57.jpg)
57
Agradecimentos
Aos nosso orientadores Alex Fernandes da Veiga Machado e Esteban Clua
Ao CEFET-MG - Campus Leopoldina Aos nossos familiares e a todos aqueles
que ajudaram direta ou indiretamente. À atenção de todos aqui presentes.
![Page 58: TUTORIAL: SBGAMES 2009 Criação de um Jogo de Quebra-Cabeças Usando Algoritmo Genético como Motor de Resolução Autores: Alex Fernandes da Veiga Machado](https://reader035.vdocuments.pub/reader035/viewer/2022081602/552fc103497959413d8bf1cc/html5/thumbnails/58.jpg)
58
E-mails para contato
Alex Fernandes da Veiga Machado• [email protected]
Carla Rezende Barbosa Bonin• [email protected]
Esteban Walter Gonzales Clua• [email protected]
Gustavo Montes Novaes• [email protected]
Mauro Lúcio Ruy de Almeida Filho• [email protected]