Answers.Body: <p>This evening I got inspired by this paper: <a href="http://www.dphrygian.com/bin/David-Pittman-GOAP-Masters-Thesis.doc" rel="nofollow noreferrer">http://www.dphrygian.com/bin/David-Pittman-GOAP-Masters-Thesis.doc</a> </p>
  
  <p>(GOAP paired with the Command and Control Pattern)</p>
  
  <p><em>What do you think about this solution?</em></p>
  
  <p>Each goal has a relevance (that depends on the agent needs) </p>
  
  <p>When agent1 working on the "AskAgent2ToTalk" Action, it only sends a goal recommendation to agent2. Explicit means this: The agent only sends a list of modifiers for each goal relevance (in this case it could be a bonus for the "SocialInteraction" Goal. The value depends on the relationship between the agents) and the recommend goal.</p>
  
  <p>if agent2's desired goal is the recommend goal, the agent replans.</p>
  
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2017-08-20T22:59:50.403Z
Answers.LastActivityDate: 2017-08-21T04:47:46.743Z
Answers.LastEditDate: 2017-08-21T04:47:46.743Z
Answers.UserDisplayName: james
Body: <p>I'm a little bit stuck:</p>
  
  <p>I implemented an AI with GOAP (Goal oriented Action Planning, <a href="http://alumni.media.mit.edu/~jorkin/gdc2006_orkin_jeff_fear.pdf" rel="nofollow noreferrer">http://alumni.media.mit.edu/~jorkin/gdc2006_orkin_jeff_fear.pdf</a>) for a simulation game. That works fine.</p>
  
  <p>Now I want that the agents can cooperate (e.g. doing actions together). <em>What is in this case the best AI-Design that the GoapActions keep loose couplet?</em></p>
  
  <p>Should they plan together? (what is in this case the "worldstate"?)Or Should they share their plans? </p>
  
  <p><strong>Example</strong><br>
  Agent1:
  Worldstate Agent 1: isLonely= true<br>
  Goal Agent1: isLonely = false</p>
  
  <p>Plan Agent1: AskAgent2ToTalk -> TalkToAgent2</p>
  
  <p>Agent2
  Worldstate Agent 2: hasWood = false<br>
  Goal hasWood = true</p>
  
  <p>Plan Agent2: GetAxe -> ChopWood -> BringWoodToSupply</p>
  
  <p><em>How I get this constellation?</em></p>
  
  <p>Agent1 Plan: TalkToAgent2<br>
  Agent2 Plan: TalkToAgent1 -> GetAxe -> ChopWood -> BringWoodToSupply</p>
  
  <p>Or if they are talking and one of the agents is interrupted (e.g. by an attacking enemy) the other agent must know that his TalktoAgent2 Action has ended.</p>
  
Comments.ContentLicense: CC BY-SA 3.0
Comments.CreationDate: 2017-08-19T12:11:01.727Z
Comments.Text: what do you mean "How I get this constellation?" have you set up the environment and the actions?
Comments.UserDisplayName: k.c. sayz 'k.c sayz'
Comments.ContentLicense: CC BY-SA 3.0
Comments.CreationDate: 2017-08-19T12:57:32.233Z
Comments.Text: yes, the environment and the actions are set up. (the simulation works with multiple agents but they are not cooperate at the moment) 
  The question is how should agent1 alter agent2's plan, that agent2 has TalkToAgent2 as current Action (if and only if Agent2 like to talk). and after that how agent1 knows that agen2 want to talk with agent1 (has TalkToAgen1 as current Action). I hope my explanation is clear now.
Comments.UserDisplayName: james
Comments.ContentLicense: CC BY-SA 3.0
Comments.CreationDate: 2017-08-20T21:07:18.437Z
Comments.Text: You shouldn't expect to be able to program explicit some sequences of actions to achieve some goal state. The point of this method of AI programming is such that it "discovers" its own actions based on how the agent is embedded in the environment. If you really want to design a specific sequence of actions, you should fine-tune the environment around it to conduce such behavior. 
  
  Recall from the paper that cooperative action (flanking) is emergent behavior, not explicitly programmed into the game.
  
  tl;dr i think the method of implementation needs to change, but not sure in what way
Comments.UserDisplayName: k.c. sayz 'k.c sayz'
Comments.ContentLicense: CC BY-SA 3.0
Comments.CreationDate: 2017-08-20T22:42:52.487Z
Comments.Text: i agree with you.(see detailed answer)
Comments.UserDisplayName: james
Tags: <ai-design><intelligence-testing><game-ai><multi-agent-systems>
Title: Goal oriented Action Planning with multiple Agents
UserDisplayName: james
ThreadText: # Goal oriented Action Planning with multiple Agents
  
  (Asked by: username_0 on 2017-08-18)
  
  I'm a little bit stuck:
  
  I implemented an AI with GOAP (Goal oriented Action Planning, <http://alumni.media.mit.edu/~jorkin/gdc2006_orkin_jeff_fear.pdf>) for a simulation game. That works fine.
  
  Now I want that the agents can cooperate (e.g. doing actions together). *What is in this case the best AI-Design that the GoapActions keep loose couplet?*
  
  Should they plan together? (what is in this case the "worldstate"?)Or Should they share their plans?
  
  **Example**  
  Agent1:
  Worldstate Agent 1: isLonely= true  
  Goal Agent1: isLonely = false
  
  Plan Agent1: AskAgent2ToTalk -> TalkToAgent2
  
  Agent2
  Worldstate Agent 2: hasWood = false  
  Goal hasWood = true
  
  Plan Agent2: GetAxe -> ChopWood -> BringWoodToSupply
  
  *How I get this constellation?*
  
  Agent1 Plan: TalkToAgent2  
  Agent2 Plan: TalkToAgent1 -> GetAxe -> ChopWood -> BringWoodToSupply
  
  Or if they are talking and one of the agents is interrupted (e.g. by an attacking enemy) the other agent must know that his TalktoAgent2 Action has ended.
  
  **Tags:** ai-design, intelligence-testing, game-ai, multi-agent-systems
  > **Comments:**
  > **username_1**: what do you mean "How I get this constellation?" have you set up the environment and the actions?  
  > **username_0**: yes, the environment and the actions are set up. (the simulation works with multiple agents but they are not cooperate at the moment)  The question is how should agent1 alter agent2's plan, that agent2 has TalkToAgent2 as current Action (if and only if Agent2 like to talk). and after that how agent1 knows that agen2 want to talk with agent1 (has TalkToAgen1 as current Action). I hope my explanation is clear now.  
  > **username_1**: You shouldn't expect to be able to program explicit some sequences of actions to achieve some goal state. The point of this method of AI programming is such that it "discovers" its own actions based on how the agent is embedded in the environment. If you really want to design a specific sequence of actions, you should fine-tune the environment around it to conduce such behavior.   Recall from the paper that cooperative action (flanking) is emergent behavior, not explicitly programmed into the game.  tl;dr i think the method of implementation needs to change, but not sure in what way  
  > **username_0**: i agree with you.(see detailed answer)  
  
  ---
  
  ## 1 answers
  
  ### Answer by username_0 on 2017-08-20. Score: 1
  
  This evening I got inspired by this paper: <http://www.dphrygian.com/bin/David-Pittman-GOAP-Masters-Thesis.doc>
  
  (GOAP paired with the Command and Control Pattern)
  
  *What do you think about this solution?*
  
  Each goal has a relevance (that depends on the agent needs)
  
  When agent1 working on the "AskAgent2ToTalk" Action, it only sends a goal recommendation to agent2. Explicit means this: The agent only sends a list of modifiers for each goal relevance (in this case it could be a bonus for the "SocialInteraction" Goal. The value depends on the relationship between the agents) and the recommend goal.
  
  if agent2's desired goal is the recommend goal, the agent replans.
  
  
  ---
  
  