tutorial: sbgames 2009 criação de um jogo de quebra-cabeças usando algoritmo genético como motor...

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 Carla Rezende Barbosa Bonin Esteban Walter Gonzales Clua Gustavo Montes Novaes Mauro Lúcio Ruy de Almeida Filho

Upload: internet

Post on 17-Apr-2015

103 views

Category:

Documents


0 download

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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]