A idéia de esperança é muito simplista.
No entanto, descobrir a sua dinâmica não é.
Há metas e ações e estados e todo tipo de outras coisas a serem levadas em consideração.
Depurar um sistema inteiro é muito desafiador, por isso é melhor começar no papel.
O sistema do Partido Republicano que estamos prestes a construir não é o ser todo e acabar com toda a forma de desenvolver tal sistema.
Mas apenas de uma maneira você pode usá-lo como quiser e modificá-lo de acordo com suas próprias necessidades.
Mas basicamente vai funcionar assim.
Temos um agente.
O agente tem uma série de objetivos.
Estes objetivos impulsionam sua seqüência de ações.
Algumas ações só são possíveis após outras ações terem sido concluídas.
Mas o meio ambiente ou o mundo do jogo e outros agentes também desempenham um papel.
Por exemplo, algumas ações podem não ser possíveis sem a ajuda de outro agente.
E outras ações podem não ser possíveis sem o uso de um recurso.
Ao usar sabão, você está realmente construindo uma simulação.
Portanto, você precisa pensar em como você quer que o jogo se apresente e como os personagens se moverão
pelo ambiente.
Neste caso, vamos criar uma simulação hospitalar muito simples.
Haverá dois tipos de agentes, pacientes e enfermeiras.
Vamos pensar em como queremos que os pacientes trabalhem.
Queremos que eles entrem no hospital, se registrem na recepção, vão para a sala de espera, sejam tratados quando uma enfermeira
e um cubículo estiverem disponíveis, e depois voltem para casa.
Cada uma dessas coisas envolve a mudança do personagem para outro local.
Elas serão nossas ações.
Em escopo.
Cada uma dessas ações existe como uma tarefa única e completa que é acompanhada pelo agente que simula
algum evento.
Se você elaborasse um plano para o agente realizar essas ações, o que
seria?
Tire um momento para considerar isso.
Como você foi?
Você provavelmente inventou algo semelhante a isto.
Ir ao hospital, registrar-se, esperar pela enfermeira, ser tratado e depois ir para casa.
Definitivamente um plano legítimo, mas o que vamos fazer em nossa aplicação é estruturá-lo um pouco mais assim
para que o paciente tenha três conjuntos de planos.
A razão pela qual estamos fazendo isto é porque na própria simulação, o agente tem outros recursos
e outros agentes com os quais vai contar para poder continuar através do jogo real.
Agora, se você só queria que seu agente entrasse no hospital, vá até o balcão de registro, vá e espere.
Vá para um cubículo e depois vá para casa sem nenhuma outra dinâmica.
Então você poderia ter apenas um único plano.
Uma vez que entramos na programação disto, você verá porque eu estruturei assim com
as três seções diferentes.
Mas por enquanto, confie em mim enquanto passamos por isso.
Agora, se você se lembra, o objetivo do grupo é que toda ação seja dissociada.
Não está ligado a nenhuma outra ação.
Por isso, quando queremos criar um plano para passar por ações de uma ponta a outra, estamos procurando
um objetivo particular que estamos tentando alcançar e depois trabalhando para trás a fim de combinar as ações
para chegarmos a um único plano.
O primeiro neste caso é o superior que você pode ver na tela, que é ir ao hospital, registrar-se e
esperar pela enfermeira.
Agora, isto envolverá o paciente ter um objetivo de esperar e trabalhar de volta a partir daí.
Pensamos então no que serão as condições prévias para esperar por uma enfermeira.
Bem, isso significa que temos que ter registrado.
Esta será então a condição prévia para esperar pela enfermeira.
Isso significa que a ação de registro precisa ter sido registrada como seu efeito e, em seguida, voltar de lá antes de podermos
nos registrar, nós realmente temos que estar no hospital.
Por isso, temos que nos certificar de que tenhamos vinculado ações suficientes que tenham pré-condições e efeitos correspondentes
para que acabemos com um plano quando o sistema estiver tentando encontrar um.
Quanto às outras ações neste caso, que estão formando um plano que tem apenas uma ação, elas devem
ter um efeito porque esse efeito é o objetivo final que seu agente terá em vista.
E, portanto, também temos que dar-lhes um efeito e, se você quiser que eles disparem, também uma condição prévia.
Nosso caráter de enfermeira será um pouco mais simplista e terá dois conjuntos de planos para escolher.
O primeiro será o tratamento de um paciente.
Portanto, seu objetivo final é tratar o paciente.
E isso vai exigir um plano de espera de um paciente, o que vai exigir que um paciente esteja esperando
em primeiro lugar, além de haver um cúbico gratuito disponível.
Isto se ligará então a nossa ida ao cubículo onde o tratamento está basicamente ocorrendo, o que satisfará
o paciente tratado.
Agora, para tornar a enfermeira apenas um pouco mais interessante em vez de ficar de pé quando não há
nada a fazer.
Haverá também um objetivo de descanso.
E essa meta será acionada quando a enfermeira se esgotar e, portanto, a enfermeira irá então para a sala
de descanso.
Antes de começarmos a codificação, vamos analisar como isso se encaixa conceitualmente.
Nós temos um agente e esse agente vive no ambiente do jogo.
Agora o ambiente do jogo teria um conjunto de estados mundiais, e isso seria coisas como quantos cubículos estão
disponíveis, quantos pacientes estão esperando, e lá coisas que o agente pode aproveitar quando está
tentando determinar se pode atingir um objetivo.
Portanto, em alguns casos, serão algumas das condições prévias para o objetivo.
Agora, o próprio agente também vai ter um conjunto de estados sobre si mesmo porque, por exemplo,
se ele está doente, essa crença ou esse estado pertence ao agente em si, não ao mundo real do jogo.
Por isso, neste caso, chamo-lhe crenças, mas é realmente como os estados do mundo local que pertencem
ao agente.
Agora o agente também vai ter um conjunto de objetivos e um conjunto de ações.
Agora, a fim de alinhar todas essas ações para que os objetivos possam ser alcançados, teremos um planejador, para que
cada agente tenha um planejador.
Isso significa que com as informações dos estados do mundo, as crenças ou o estado do agente.
O objetivo que precisa ser alcançado e todas as ações que estão disponíveis.
O planejador vai elaborar um plano, devolve-o ao agente e o agente o executará então.
Certo.
Portanto, este é o sistema de esperança que estamos prestes a desenvolver.
É assim que vai funcionar conceitualmente.
E uma vez que entramos no código, embora seja essencialmente bastante simples, ainda há um pouco
dele para escrever e montar.
Então, por que adiar por mais tempo?
No próximo vídeo, vamos voltar e realmente iniciar a codificação.