<p>While the entire problem seems under-defined, I believe it's fairly clear that you're dealing with a Multi-Objective Optimization problem, with scheduling simply being the backdrop for this problem.  Most new effort in this field seems to be concentrated on Evolution Algorithms as solutions to these problems.</p>

<p>I personally do quite a bit of work with Particle Swarms in this area mostly because they provide very simple method of visualization in a complicated space.  Other algorithms would include Non-dominated Sorting Genetic Algorithm-II (NSGA-II), or Multiple-objective Bayesian Optimization Algorithm (mBOA).</p>

<p>I would agree with Tsuyoshi in that you may want to spend more time on the problem definition as well.</p>

CC BY-SA 2.5
2011-03-15T15:29:11.890Z
2011-03-15T15:29:11.890Z
jbondeson
<p>It seems to me that a better approach is to frame this as a large optimization problem and throw it into CPLEX or something like that. </p>

CC BY-SA 2.5
2011-03-15T16:38:17.900Z
2011-03-15T16:38:17.900Z
Suresh Venkat
<p>I have a problem where mentors need to paired with courses, this is similar to the marriage problem or the hospitals/residents problem except that it isn't. The current solution is terribly written and needs to be expanded, plus it's a monte-carlo algorithm. I want to change it to something deterministic</p>

<p>(I'm using weird terminology with "mentor" because my university is <a href="http://www.pdx.edu/unst/" rel="nofollow">weird</a> think of a mentor as a T.A.)</p>

<p>Courses don't "care" which mentor is assigned.
All courses must be assigned a mentor.
All mentors must be assigned one course.
No mentor may be assigned to more than 2 courses.
A mentor may not be assigned 2 courses with identical or overlapping time-slots.
Courses have 3 attributes:
time-slots (may be web-only or hybrid web/classroom)
theme
professor
faculty and/or time-slot may be TBD (too be decided)</p>

<p>Mentors are asked a series of questions:
rank your top 5 time-slots
rate (weight) the value of various themes from 1-7 or dont' care (don't care is the same as a 4 in the current algorithm)
rate (weight) faculty you'd like to work with from 1-7 or don't care (don't care is the same as a 4 as above)
Are you willing to mentor two courses? yes/no
Are you willing to mentor an online or hybrid course? yes/no
Are you trained to mentor an online/hybrid course.</p>

<p>Current system assigns a "score" to each assignment using the questions above and tries to minimize the score.</p>

<p>When combining assignments into a schedule, no extra weightings are added. However, some schedules are considered invalid (as above): assigning a mentor to more than 2 courses or more than 1 if they didn't select "yes" to "I'm willing to mentor 2 courses" and time-slots aren't allowed to overlap.</p>

<p>More complications/edge cases:
certain mentors may be pre-assigned courses. This doesn't take the mentor out of the running but it does take the course out. A mentor may be assigned to multiple courses, so there first one might be pre-assigned, but there second one cannot.
Also, some mentors are "owned" by a certain department, and so may only be allowed to teach "urban studies" courses.</p>

<p>Thoughts on an algorithm I should use?</p>

<p>Edit: for clarity and to answer some questions.
The current solution (monte-carlo) has a function that generates a cost based on your options 1st choice is 0.0 cost, 2nd choice is .33, etc. 7th choice is 4.0. Then the weights for all parameters are summed and the algorithm has to optimize for the lowest score. There are also some other parameters like untrained (0.0 if web and trained, +2.0 to cost if web course and untrained, +2.0 to cost if unwilling to teach web course and web course)</p>

CC BY-SA 2.5
2011-03-15T14:26:05.920Z
As a question in algorithms, this question is underspecified.  You have only specified what a feasible solution is and which information is available, but you have not specified the objective function.  In other words, you have to model the question to reduce it to an algorithmic question.
Tsuyoshi Ito
CC BY-SA 2.5
2011-03-15T14:35:47.653Z
I think that this should be considered as a question of how to model the problem, which is allowed.  See the [meta discussion](http://meta.cstheory.stackexchange.com/questions/514/how-to-model-this-questions) for more information on this.
Tsuyoshi Ito
CC BY-SA 2.5
2011-03-16T05:26:39.770Z
Mark, I think you need to clarify (at least informally) what you want to find, i.e. you should specify when a solution is better than another one, and then we can talk about finding an optimum/optimal solution or approximate solution. An unknown scoring function used by current system is not very helpful. If they really don't care about this and just want an acceptable answer then you can ignore all those extra detailed information. (IMHO, your question is underspecified even for a modeling question and it is not clear what would be an acceptable answer to your question. (more)
Kaveh
CC BY-SA 2.5
2011-03-16T05:32:15.753Z
You probably need a software engineer first to speak with them to find what they are trying to achieve.) Abstracting the details a little bit will also help, most of the details just tell which mentor can be assigned to which course, and how much the mentor is willing to accept that appointment. (I don't see the point of asking mentors both for the course and the instructor, it just complicates things, one number should suffice).
Kaveh
<ds.algorithms><application-of-theory>
Suggestions on a matching/scheduling algorithm.
Mark Harviston
# Suggestions on a matching/scheduling algorithm.

(Asked by: username_0 on 2011-03-15)

I have a problem where mentors need to paired with courses, this is similar to the marriage problem or the hospitals/residents problem except that it isn't. The current solution is terribly written and needs to be expanded, plus it's a monte-carlo algorithm. I want to change it to something deterministic

(I'm using weird terminology with "mentor" because my university is [weird](http://www.pdx.edu/unst/) think of a mentor as a T.A.)

Courses don't "care" which mentor is assigned.
All courses must be assigned a mentor.
All mentors must be assigned one course.
No mentor may be assigned to more than 2 courses.
A mentor may not be assigned 2 courses with identical or overlapping time-slots.
Courses have 3 attributes:
time-slots (may be web-only or hybrid web/classroom)
theme
professor
faculty and/or time-slot may be TBD (too be decided)

Mentors are asked a series of questions:
rank your top 5 time-slots
rate (weight) the value of various themes from 1-7 or dont' care (don't care is the same as a 4 in the current algorithm)
rate (weight) faculty you'd like to work with from 1-7 or don't care (don't care is the same as a 4 as above)
Are you willing to mentor two courses? yes/no
Are you willing to mentor an online or hybrid course? yes/no
Are you trained to mentor an online/hybrid course.

Current system assigns a "score" to each assignment using the questions above and tries to minimize the score.

When combining assignments into a schedule, no extra weightings are added. However, some schedules are considered invalid (as above): assigning a mentor to more than 2 courses or more than 1 if they didn't select "yes" to "I'm willing to mentor 2 courses" and time-slots aren't allowed to overlap.

More complications/edge cases:
certain mentors may be pre-assigned courses. This doesn't take the mentor out of the running but it does take the course out. A mentor may be assigned to multiple courses, so there first one might be pre-assigned, but there second one cannot.
Also, some mentors are "owned" by a certain department, and so may only be allowed to teach "urban studies" courses.

Thoughts on an algorithm I should use?

Edit: for clarity and to answer some questions.
The current solution (monte-carlo) has a function that generates a cost based on your options 1st choice is 0.0 cost, 2nd choice is .33, etc. 7th choice is 4.0. Then the weights for all parameters are summed and the algorithm has to optimize for the lowest score. There are also some other parameters like untrained (0.0 if web and trained, +2.0 to cost if web course and untrained, +2.0 to cost if unwilling to teach web course and web course)

**Tags:** ds.algorithms, application-of-theory

> **Comments:**
> **username_1**: As a question in algorithms, this question is underspecified.  You have only specified what a feasible solution is and which information is available, but you have not specified the objective function.  In other words, you have to model the question to reduce it to an algorithmic question.  
> **username_1**: I think that this should be considered as a question of how to model the problem, which is allowed.  See the [meta discussion](http://meta.cstheory.stackexchange.com/questions/514/how-to-model-this-questions) for more information on this.  
> **username_2**: Mark, I think you need to clarify (at least informally) what you want to find, i.e. you should specify when a solution is better than another one, and then we can talk about finding an optimum/optimal solution or approximate solution. An unknown scoring function used by current system is not very helpful. If they really don't care about this and just want an acceptable answer then you can ignore all those extra detailed information. (IMHO, your question is underspecified even for a modeling question and it is not clear what would be an acceptable answer to your question. (more)  
> **username_2**: You probably need a software engineer first to speak with them to find what they are trying to achieve.) Abstracting the details a little bit will also help, most of the details just tell which mentor can be assigned to which course, and how much the mentor is willing to accept that appointment. (I don't see the point of asking mentors both for the course and the instructor, it just complicates things, one number should suffice).  

---

## 2 answers

### Answer by username_3 on 2011-03-15. Score: 3 | Accepted answer

While the entire problem seems under-defined, I believe it's fairly clear that you're dealing with a Multi-Objective Optimization problem, with scheduling simply being the backdrop for this problem. Most new effort in this field seems to be concentrated on Evolution Algorithms as solutions to these problems.

I personally do quite a bit of work with Particle Swarms in this area mostly because they provide very simple method of visualization in a complicated space. Other algorithms would include Non-dominated Sorting Genetic Algorithm-II (NSGA-II), or Multiple-objective Bayesian Optimization Algorithm (mBOA).

I would agree with Tsuyoshi in that you may want to spend more time on the problem definition as well.


---

### Answer by username_4 on 2011-03-15. Score: 3

It seems to me that a better approach is to frame this as a large optimization problem and throw it into CPLEX or something like that.


---

