Answers.Body: <p>What you have could be well described as a <a href="https://en.wikipedia.org/wiki/Automated_planning_and_scheduling" rel="nofollow noreferrer">Task Allocation problem</a>, which is studied as part of the <em>planning</em> subfield of AI. Chapters 10 &amp; 11 of <a href="http://aima.cs.berkeley.edu/" rel="nofollow noreferrer">Russell &amp; Norvig</a> provide a good overview of this area, although I think they don't talk too much about Task Allocation in particular.</p>
  <p>There are two basic approaches to this problem: <em>centralized</em> approaches, and <em>decentralized</em> approaches.</p>
  <p>In centralized approaches, the properties of each task (or sub-task) and the skills of each processing entity are recorded in a central database. The task is phrased as an optimization problem. For example, given the skills of the processors and the tasks' types, find the schedule that minimizes average processing time (or cost, or usage of rare-resource types, or whatever you're interested in). Common approaches include phrasing the optimization task as a <a href="https://en.wikipedia.org/wiki/Linear_programming" rel="nofollow noreferrer">linear-programming problem</a>; phrasing the problem as a graph and using something like the <a href="https://en.wikipedia.org/wiki/Graphplan" rel="nofollow noreferrer"><em>graphplan</em></a> algorithm; or phrasing the problem as a <a href="https://en.wikipedia.org/wiki/Constraint_satisfaction_problem" rel="nofollow noreferrer">constraint satisfaction problem</a> and using some kind of heuristic-guided local search.</p>
  <p>There are all kinds of other more modern techniques too. I'm not aware of a survey paper for translation tasks in particular, but there are <a href="https://link.springer.com/chapter/10.1007/978-3-319-18299-5_2" rel="nofollow noreferrer">lots</a> of examples in <a href="http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.86.6412&amp;rep=rep1&amp;type=pdf" rel="nofollow noreferrer">robotics</a> and <a href="https://ieeexplore.ieee.org/abstract/document/7051215/" rel="nofollow noreferrer">distributed computing</a>.</p>
  <p>Although good AI techniques exist for scheduling the task, they are predicated on being able to quantify the tasks' properties and the abilities of the agents, and on the translators accepting the decisions of the system. If you want an interactive system, you may need to look at techniques from Natural Language Processing. The work on <a href="http://www.aaai.org/ocs/index.php/SSS/SSS11/paper/download/2375/2893" rel="nofollow noreferrer">Mixed Initiative Scheduling Systems</a> might also be relevant if you have to go that route.</p>
  
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2023-04-24T17:30:35.780Z
Answers.Text: Last link is dead.
Answers.UserDisplayName: Rexcirus
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2018-09-10T14:47:53.330Z
Answers.LastActivityDate: 2021-01-23T03:13:29.017Z
Answers.LastEditDate: 2021-01-23T03:13:29.017Z
Answers.UserDisplayName: John Doucette
Body: <p>I'm trying to learn AI and thinking to apply it to our system. We have an application for the translation industry. What we are doing now is the coordinator <span class="math-container">$C$</span> assigns a file to a translator <span class="math-container">$T$</span>. The coordinator usually considers these criteria (but not limited to):</p>
  <ul>
  <li>the deadline of the file and availability of a translator</li>
  <li>the language pair that the translator can translate</li>
  <li>is the translator already reached his target? (maybe we can give the file to other translators to reach their target)</li>
  <li>the difficulty level of the file for the translator (basic translation, medical field, IT field)</li>
  <li>accuracy of translator</li>
  <li>speed of translator</li>
  </ul>
  <p>Given the following, is it possible to make a recommendation to the coordinator, to whom she can assign a particular file?</p>
  <p>What are the methods/topics that I need to research?</p>
  <p>(I'm considering javascript as the primary tool, and maybe python if javascript will be more of a hindrance in implementation.)</p>
  <p>In addition to suggesting a translator, we are also looking into suggesting the &quot;deadline of the translator&quot;. Basically, we have &quot;deadline of the customer&quot; and &quot;deadline of the translator&quot;</p>
  <p>The reason for this is that, if the translators are occupied throughout the day, it makes sense to suggest it to a busy translator but allow him to finish it until next day.</p>
  
Tags: <optimization><constraint-satisfaction-problems><planning><linear-programming>
Title: What AI technique should I use to assign a person to a task?
UserDisplayName: Jaime Sangcap
ThreadText: # What AI technique should I use to assign a person to a task?
  
  (Asked by: username_0 on 2018-09-10)
  
  I'm trying to learn AI and thinking to apply it to our system. We have an application for the translation industry. What we are doing now is the coordinator $C$ assigns a file to a translator $T$. The coordinator usually considers these criteria (but not limited to):
  
  * the deadline of the file and availability of a translator
  * the language pair that the translator can translate
  * is the translator already reached his target? (maybe we can give the file to other translators to reach their target)
  * the difficulty level of the file for the translator (basic translation, medical field, IT field)
  * accuracy of translator
  * speed of translator
  
  Given the following, is it possible to make a recommendation to the coordinator, to whom she can assign a particular file?
  
  What are the methods/topics that I need to research?
  
  (I'm considering javascript as the primary tool, and maybe python if javascript will be more of a hindrance in implementation.)
  
  In addition to suggesting a translator, we are also looking into suggesting the "deadline of the translator". Basically, we have "deadline of the customer" and "deadline of the translator"
  
  The reason for this is that, if the translators are occupied throughout the day, it makes sense to suggest it to a busy translator but allow him to finish it until next day.
  
  **Tags:** optimization, constraint-satisfaction-problems, planning, linear-programming
  
  
  ---
  
  ## 1 answers
  
  ### Answer by username_1 on 2018-09-10. Score: 5 | Accepted answer
  
  What you have could be well described as a [Task Allocation problem](https://en.wikipedia.org/wiki/Automated_planning_and_scheduling), which is studied as part of the *planning* subfield of AI. Chapters 10 & 11 of [Russell & Norvig](http://aima.cs.berkeley.edu/) provide a good overview of this area, although I think they don't talk too much about Task Allocation in particular.
  
  There are two basic approaches to this problem: *centralized* approaches, and *decentralized* approaches.
  
  In centralized approaches, the properties of each task (or sub-task) and the skills of each processing entity are recorded in a central database. The task is phrased as an optimization problem. For example, given the skills of the processors and the tasks' types, find the schedule that minimizes average processing time (or cost, or usage of rare-resource types, or whatever you're interested in). Common approaches include phrasing the optimization task as a [linear-programming problem](https://en.wikipedia.org/wiki/Linear_programming); phrasing the problem as a graph and using something like the [*graphplan*](https://en.wikipedia.org/wiki/Graphplan) algorithm; or phrasing the problem as a [constraint satisfaction problem](https://en.wikipedia.org/wiki/Constraint_satisfaction_problem) and using some kind of heuristic-guided local search.
  
  There are all kinds of other more modern techniques too. I'm not aware of a survey paper for translation tasks in particular, but there are [lots](https://link.springer.com/chapter/10.1007/978-3-319-18299-5_2) of examples in [robotics](http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.86.6412&rep=rep1&type=pdf) and [distributed computing](https://ieeexplore.ieee.org/abstract/document/7051215/).
  
  Although good AI techniques exist for scheduling the task, they are predicated on being able to quantify the tasks' properties and the abilities of the agents, and on the translators accepting the decisions of the system. If you want an interactive system, you may need to look at techniques from Natural Language Processing. The work on [Mixed Initiative Scheduling Systems](http://www.aaai.org/ocs/index.php/SSS/SSS11/paper/download/2375/2893) might also be relevant if you have to go that route.
  
  > **Comments:**
  > **username_2**: Last link is dead.  
  
  ---
  
  