<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>http://tomwiki.com/index.php?action=history&amp;feed=atom&amp;title=Models_Timetabling</id>
	<title>Models Timetabling - Revision history</title>
	<link rel="self" type="application/atom+xml" href="http://tomwiki.com/index.php?action=history&amp;feed=atom&amp;title=Models_Timetabling"/>
	<link rel="alternate" type="text/html" href="http://tomwiki.com/index.php?title=Models_Timetabling&amp;action=history"/>
	<updated>2026-11-03T00:19:14Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.39.1</generator>
	<entry>
		<id>http://tomwiki.com/index.php?title=Models_Timetabling&amp;diff=2563&amp;oldid=prev</id>
		<title>Elias at 23:01, 17 January 2012</title>
		<link rel="alternate" type="text/html" href="http://tomwiki.com/index.php?title=Models_Timetabling&amp;diff=2563&amp;oldid=prev"/>
		<updated>2012-01-17T23:01:20Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 18:01, 17 January 2012&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l2&quot;&gt;Line 2:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 2:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==Assigning personnel to machines==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==Assigning personnel to machines==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;syntaxhighlight &lt;/del&gt;lang=&amp;quot;matlab&amp;quot;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;source &lt;/ins&gt;lang=&amp;quot;matlab&amp;quot;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;% function Result = assigningpersonneltomachinesEx(PriLev)&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;% function Result = assigningpersonneltomachinesEx(PriLev)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;%&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;%&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l113&quot;&gt;Line 113:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 113:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;% 060117 per   Added documentation.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;% 060117 per   Added documentation.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;% 060126 per   Moved disp to end&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;% 060126 per   Moved disp to end&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;syntaxhighlight&lt;/del&gt;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;source&lt;/ins&gt;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==Scheduling nurses==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==Scheduling nurses==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;syntaxhighlight &lt;/del&gt;lang=&amp;quot;matlab&amp;quot;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;source &lt;/ins&gt;lang=&amp;quot;matlab&amp;quot;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;% function Result = schedulingnursesEx(PriLev)&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;% function Result = schedulingnursesEx(PriLev)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;%&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;%&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l259&quot;&gt;Line 259:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 259:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;% 060117 per   Added documentation.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;% 060117 per   Added documentation.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;% 060126 per   Moved disp to end&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;% 060126 per   Moved disp to end&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;syntaxhighlight&lt;/del&gt;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;source&lt;/ins&gt;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==Establishing a college timetable==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==Establishing a college timetable==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;syntaxhighlight &lt;/del&gt;lang=&amp;quot;matlab&amp;quot;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;source &lt;/ins&gt;lang=&amp;quot;matlab&amp;quot;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;% function Result = establishingacollegetimetableEx(PriLev)&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;% function Result = establishingacollegetimetableEx(PriLev)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;%&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;%&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l390&quot;&gt;Line 390:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 390:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;% 060117 per   Added documentation.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;% 060117 per   Added documentation.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;% 060126 per   Moved disp to end&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;% 060126 per   Moved disp to end&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;syntaxhighlight&lt;/del&gt;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;source&lt;/ins&gt;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==Exam scheduling==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==Exam scheduling==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;syntaxhighlight &lt;/del&gt;lang=&amp;quot;matlab&amp;quot;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;source &lt;/ins&gt;lang=&amp;quot;matlab&amp;quot;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;% function Result = examschedulingEx(PriLev)&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;% function Result = examschedulingEx(PriLev)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;%&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;%&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l523&quot;&gt;Line 523:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 523:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;% 060117 per   Added documentation.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;% 060117 per   Added documentation.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;% 060126 per   Moved disp to end&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;% 060126 per   Moved disp to end&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;syntaxhighlight&lt;/del&gt;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;source&lt;/ins&gt;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==Production planning with personnel assignment==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==Production planning with personnel assignment==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;syntaxhighlight &lt;/del&gt;lang=&amp;quot;matlab&amp;quot;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;source &lt;/ins&gt;lang=&amp;quot;matlab&amp;quot;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;% function Result = prodplanwithpersonnelassignEx(PriLev)&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;% function Result = prodplanwithpersonnelassignEx(PriLev)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;%&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;%&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l680&quot;&gt;Line 680:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 680:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;% 060126 per   Moved disp to end&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;% 060126 per   Moved disp to end&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;% 060131 per   Really moved disp to end&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;% 060131 per   Really moved disp to end&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;syntaxhighlight&lt;/del&gt;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;source&lt;/ins&gt;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==Plan the personnel at a construction site==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==Plan the personnel at a construction site==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;syntaxhighlight &lt;/del&gt;lang=&amp;quot;matlab&amp;quot;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;source &lt;/ins&gt;lang=&amp;quot;matlab&amp;quot;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;% function Result = planthepersonnelataconstrEx(PriLev)&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;% function Result = planthepersonnelataconstrEx(PriLev)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;%&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;%&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l793&quot;&gt;Line 793:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 793:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;% 060118 per   Added documentation.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;% 060118 per   Added documentation.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;% 060126 per   Moved disp to end&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;% 060126 per   Moved disp to end&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;syntaxhighlight&lt;/del&gt;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;source&lt;/ins&gt;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Elias</name></author>
	</entry>
	<entry>
		<id>http://tomwiki.com/index.php?title=Models_Timetabling&amp;diff=930&amp;oldid=prev</id>
		<title>Elias: Created page with &quot;{{Part Of Manual|title=TOMLAB Models|link=TOMLAB Models}} ==Assigning personnel to machines==  &lt;syntaxhighlight lang=&quot;matlab&quot;&gt; % function Result = assigningpersonnelto...&quot;</title>
		<link rel="alternate" type="text/html" href="http://tomwiki.com/index.php?title=Models_Timetabling&amp;diff=930&amp;oldid=prev"/>
		<updated>2011-08-12T13:27:01Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;{{Part Of Manual|title=TOMLAB Models|link=&lt;a href=&quot;/index.php?title=Models&quot; title=&quot;Models&quot;&gt;TOMLAB Models&lt;/a&gt;}} ==Assigning personnel to machines==  &amp;lt;syntaxhighlight lang=&amp;quot;matlab&amp;quot;&amp;gt; % function Result = assigningpersonnelto...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{Part Of Manual|title=TOMLAB Models|link=[[Models|TOMLAB Models]]}}&lt;br /&gt;
==Assigning personnel to machines==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;matlab&amp;quot;&amp;gt;&lt;br /&gt;
% function Result = assigningpersonneltomachinesEx(PriLev)&lt;br /&gt;
%&lt;br /&gt;
% Creates a TOMLAB MILP problem for assigning personnel to machines&lt;br /&gt;
%&lt;br /&gt;
% ASSIGNING PERSONNEL TO MACHINES&lt;br /&gt;
%&lt;br /&gt;
% An operator needs to be assigned to each of the six machines in a&lt;br /&gt;
% workshop. Six workers have been pre-selected. Everyone has&lt;br /&gt;
% undergone a test of her productivity on every machine. The table&lt;br /&gt;
% below lists the productivities in pieces per hour. The machines run&lt;br /&gt;
% in parallel, that is, the total productivity of the workshop is the&lt;br /&gt;
% sum of the productivities of the people assigned to the machines.&lt;br /&gt;
%&lt;br /&gt;
% Productivity in pieces per hour&lt;br /&gt;
%&lt;br /&gt;
% +-------+-----------------+&lt;br /&gt;
% |       |    Machines     |&lt;br /&gt;
% +-------+--+--+--+--+--+--+&lt;br /&gt;
% |Workers| 1| 2| 3| 4| 5| 6|&lt;br /&gt;
% +-------+--+--+--+--+--+--+&lt;br /&gt;
% |   1   |13|24|31|19|40|29|&lt;br /&gt;
% |   2   |18|25|30|15|43|22|&lt;br /&gt;
% |   3   |20|20|27|25|34|33|&lt;br /&gt;
% |   4   |23|26|28|18|37|30|&lt;br /&gt;
% |   5   |28|33|34|17|38|20|&lt;br /&gt;
% |   6   |19|36|25|27|45|24|&lt;br /&gt;
% +-------+--+--+--+--+--+--+&lt;br /&gt;
%&lt;br /&gt;
% The objective is to determine an assignment of workers to machines&lt;br /&gt;
% that maximizes the total productivity. We may start by calculating&lt;br /&gt;
% a (non-optimal) heuristic solution using the following fairly&lt;br /&gt;
% natural method: choose the assignment p -&amp;gt; m with the highest&lt;br /&gt;
% productivity, cross out the line p and the column m (since the&lt;br /&gt;
% person has been placed and the machine has an operator), and&lt;br /&gt;
% restart this process until we have assigned all persons. The&lt;br /&gt;
% problem should then be solved to optimality using Mathematical&lt;br /&gt;
% Programming. And finally, solve the same problem to optimality,&lt;br /&gt;
% but for machines working in series.&lt;br /&gt;
%&lt;br /&gt;
% VARIABLES&lt;br /&gt;
%&lt;br /&gt;
% prodmat                    The productivity matrix&lt;br /&gt;
%&lt;br /&gt;
% RESULTS&lt;br /&gt;
%&lt;br /&gt;
% For an interpretation of the results, run:&lt;br /&gt;
% [Result1, Result2] = assigningpersonneltomachinesEx(2);&lt;br /&gt;
%&lt;br /&gt;
% REFERENCES&lt;br /&gt;
%&lt;br /&gt;
% Applications of optimization... Gueret, Prins, Seveaux&lt;br /&gt;
% http://web.univ-ubs.fr/lester/~sevaux/pl/index.php&lt;br /&gt;
%&lt;br /&gt;
% INPUT PARAMETERS&lt;br /&gt;
% PriLev       Print Level&lt;br /&gt;
%&lt;br /&gt;
% OUTPUT PARAMETERS&lt;br /&gt;
% Result       Result structure&lt;br /&gt;
&lt;br /&gt;
% Marcus Edvall, Tomlab Optimization Inc, E-mail: tomlab@tomopt.com&lt;br /&gt;
% Copyright (c) 2005-2005 by Tomlab Optimization Inc., $Release: 5.0.0$&lt;br /&gt;
% Written Dec 2, 2005.   Last modified Dec 2, 2005.&lt;br /&gt;
&lt;br /&gt;
function [Result1, Result2] = assigningpersonneltomachinesEx(PriLev)&lt;br /&gt;
&lt;br /&gt;
if nargin &amp;lt; 1&lt;br /&gt;
   PriLev = 1;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
prodmat       = [ 13 24 31 19 40 29;...&lt;br /&gt;
      18 25 30 15 43 22;...&lt;br /&gt;
      20 20 27 25 34 33;...&lt;br /&gt;
      23 26 28 18 37 30;...&lt;br /&gt;
      28 33 34 17 38 20;...&lt;br /&gt;
      19 36 25 27 45 24];&lt;br /&gt;
&lt;br /&gt;
flag = 0; % Parallel&lt;br /&gt;
&lt;br /&gt;
Prob = assigningpersonneltomachines(prodmat, flag);&lt;br /&gt;
Result1 = tomRun(&amp;#039;cplex&amp;#039;, Prob, PriLev);&lt;br /&gt;
&lt;br /&gt;
flag = 1; % Series&lt;br /&gt;
&lt;br /&gt;
Prob = assigningpersonneltomachines(prodmat, flag);&lt;br /&gt;
Result2 = tomRun(&amp;#039;cplex&amp;#039;, Prob, PriLev);&lt;br /&gt;
&lt;br /&gt;
if PriLev &amp;gt; 1,&lt;br /&gt;
   m   = size(prodmat,1); % number of machines&lt;br /&gt;
   w   = m;               % number of workers&lt;br /&gt;
   x1  = reshape(Result1.x_k,m,w);&lt;br /&gt;
   disp([&amp;#039;Best parallel work (&amp;#039; num2str(-Result1.f_k) &amp;#039;) when &amp;#039;])&lt;br /&gt;
   [worker,machine] = find(x1);&lt;br /&gt;
   for i = 1:length(worker)&lt;br /&gt;
      disp([&amp;#039;   worker &amp;#039;           num2str(worker(i)) ...&lt;br /&gt;
            &amp;#039; operates machine &amp;#039; num2str(machine(i))])&lt;br /&gt;
   end&lt;br /&gt;
   x2  = reshape(Result2.x_k(1:m*w),m,w);&lt;br /&gt;
   disp([&amp;#039;Best serial work (&amp;#039; num2str(-Result2.f_k) &amp;#039;) when &amp;#039;])&lt;br /&gt;
   [worker,machine] = find(x2);&lt;br /&gt;
   for i = 1:length(worker)&lt;br /&gt;
      disp([&amp;#039;   worker &amp;#039;           num2str(worker(i)) ...&lt;br /&gt;
            &amp;#039; operates machine &amp;#039; num2str(machine(i))])&lt;br /&gt;
   end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% MODIFICATION LOG&lt;br /&gt;
%&lt;br /&gt;
% 051202 med   Created.&lt;br /&gt;
% 060117 per   Added documentation.&lt;br /&gt;
% 060126 per   Moved disp to end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Scheduling nurses==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;matlab&amp;quot;&amp;gt;&lt;br /&gt;
% function Result = schedulingnursesEx(PriLev)&lt;br /&gt;
%&lt;br /&gt;
% Creates a TOMLAB MILP problem for scheduling nurses&lt;br /&gt;
%&lt;br /&gt;
% SCHEDULING NURSES&lt;br /&gt;
%&lt;br /&gt;
% Mr. Schedule has been asked to organize the schedule of nurses for&lt;br /&gt;
% the Cardiology service at St. Joseph’s hospital. A working day in&lt;br /&gt;
% this service is subdivided into twelve periods of two hours. The&lt;br /&gt;
% personnel requirement changes from period to period: for instance,&lt;br /&gt;
% only a few nurses are required during the night, but the total&lt;br /&gt;
% number must be relatively high during the morning to provide&lt;br /&gt;
% specific care to the patients. The following table lists the&lt;br /&gt;
% personnel requirement for every time period.&lt;br /&gt;
%&lt;br /&gt;
% Question 1:&lt;br /&gt;
% Determine the minimum number of nurses required to cover all the&lt;br /&gt;
% requirements, knowing that a nurse works eight hours per day and&lt;br /&gt;
% that she is entitled to a break of two hours after she has worked&lt;br /&gt;
% for four hours.&lt;br /&gt;
%&lt;br /&gt;
% Question 2:&lt;br /&gt;
% The service only has 80 nurses, which is not sufficient with the&lt;br /&gt;
% given requirements. Mr. Schedule therefore proposes that part of&lt;br /&gt;
% the personnel works two additional hours per day. These two&lt;br /&gt;
% additional hours follow immediately after the last four hours,&lt;br /&gt;
% without any break. Determine the schedule of the nurses in this&lt;br /&gt;
% service that minimizes the number of nurses working overtime.&lt;br /&gt;
%&lt;br /&gt;
% Personnel requirement per time period&lt;br /&gt;
%&lt;br /&gt;
% +------+-------------+------------------------+&lt;br /&gt;
% |Number|Time interval|Minimum number of nurses|&lt;br /&gt;
% +------+-------------+------------------------+&lt;br /&gt;
% |   0  | 00am - 02am |          15            |&lt;br /&gt;
% |   1  | 02am - 04am |          15            |&lt;br /&gt;
% |   2  | 04am - 06am |          15            |&lt;br /&gt;
% |   3  | 06am - 08am |          35            |&lt;br /&gt;
% |   4  | 08am - 10am |          40            |&lt;br /&gt;
% |   5  | 10am - 12pm |          40            |&lt;br /&gt;
% |   6  | 12pm - 02pm |          40            |&lt;br /&gt;
% |   7  | 02pm - 04pm |          30            |&lt;br /&gt;
% |   8  | 04pm - 06pm |          31            |&lt;br /&gt;
% |   9  | 06pm - 08pm |          35            |&lt;br /&gt;
% |  10  | 08pm - 10pm |          30            |&lt;br /&gt;
% |  11  | 10pm - 12am |          20            |&lt;br /&gt;
% +------+-------------+------------------------+&lt;br /&gt;
%&lt;br /&gt;
%&lt;br /&gt;
% VARIABLES&lt;br /&gt;
%&lt;br /&gt;
% demand                     nurses needed per shift&lt;br /&gt;
% hoursperday                hours of work per day&lt;br /&gt;
% breakinterval              work this long before break&lt;br /&gt;
% breaklength                length of break&lt;br /&gt;
% intervallength             length of an interval&lt;br /&gt;
% maxdemand                  max number of nurses in Q 2&lt;br /&gt;
%&lt;br /&gt;
% RESULTS&lt;br /&gt;
%&lt;br /&gt;
% For an interpretation of the results, run:&lt;br /&gt;
% [Result1, Result2] = schedulingnursesEx(2);&lt;br /&gt;
%&lt;br /&gt;
% REFERENCES&lt;br /&gt;
%&lt;br /&gt;
% Applications of optimization... Gueret, Prins, Seveaux&lt;br /&gt;
% http://web.univ-ubs.fr/lester/~sevaux/pl/index.php&lt;br /&gt;
%&lt;br /&gt;
% INPUT PARAMETERS&lt;br /&gt;
% PriLev       Print Level&lt;br /&gt;
%&lt;br /&gt;
% OUTPUT PARAMETERS&lt;br /&gt;
% Result       Result structure&lt;br /&gt;
&lt;br /&gt;
% Marcus Edvall, Tomlab Optimization Inc, E-mail: tomlab@tomopt.com&lt;br /&gt;
% Copyright (c) 2005-2005 by Tomlab Optimization Inc., $Release: 5.0.0$&lt;br /&gt;
% Written Dec 2, 2005.   Last modified Dec 2, 2005.&lt;br /&gt;
&lt;br /&gt;
function [Result1, Result2] = schedulingnursesEx(PriLev)&lt;br /&gt;
&lt;br /&gt;
if nargin &amp;lt; 1&lt;br /&gt;
   PriLev = 1;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
demand         = [15 15 15 35 40 40 40 30 31 35 30 20]&amp;#039;;&lt;br /&gt;
hoursperday    = 8;&lt;br /&gt;
breakinterval  = 4;&lt;br /&gt;
breaklength    = 2;&lt;br /&gt;
intervallength = 2;&lt;br /&gt;
maxdemand      = 80;&lt;br /&gt;
&lt;br /&gt;
flag = 0; % No max on nurses&lt;br /&gt;
&lt;br /&gt;
Prob = schedulingnurses(demand, hoursperday, breakinterval, breaklength, ...&lt;br /&gt;
   intervallength, maxdemand, flag);&lt;br /&gt;
Result1 = tomRun(&amp;#039;cplex&amp;#039;, Prob, PriLev);&lt;br /&gt;
&lt;br /&gt;
flag = 1; % Max on nurses&lt;br /&gt;
Prob = schedulingnurses(demand, hoursperday, breakinterval, breaklength, ...&lt;br /&gt;
   intervallength, maxdemand, flag);&lt;br /&gt;
Result2 = tomRun(&amp;#039;cplex&amp;#039;, Prob, PriLev);&lt;br /&gt;
&lt;br /&gt;
if PriLev &amp;gt; 1,&lt;br /&gt;
   x1        = Result1.x_k;                      % nurses working&lt;br /&gt;
   intervals = length(x1);                       % number of intervals&lt;br /&gt;
   work      = [x1 circshift(x1,-1) circshift(x1,-3) circshift(x1,-4)];&lt;br /&gt;
   work_1    = sum(work&amp;#039;)&amp;#039;;                      % total nurses&lt;br /&gt;
   n         = Result2.x_k(1:intervals);         % regular shifts&lt;br /&gt;
   o         = Result2.x_k(intervals+1:end);     % overtime&lt;br /&gt;
   work1     = [n circshift(n,-1) ...            % regular -&amp;gt; 4 intervals&lt;br /&gt;
         circshift(n,-3) circshift(n,-4)];&lt;br /&gt;
   work2     = [o circshift(o,-1) ...            % overtime -&amp;gt; 5 intervals&lt;br /&gt;
         circshift(o,-3) circshift(o,-4) circshift(o,-5)];&lt;br /&gt;
   work_2    = sum(work1&amp;#039;)&amp;#039; + sum(work2&amp;#039;)&amp;#039;;      % total work&lt;br /&gt;
&lt;br /&gt;
   disp([&amp;#039;Without overtime we need &amp;#039; num2str(Result1.f_k) &amp;#039; nurses.&amp;#039;])&lt;br /&gt;
   disp([&amp;#039;   This is the schedule:&amp;#039;])&lt;br /&gt;
   for i = 1:intervals,&lt;br /&gt;
      disp([&amp;#039;   &amp;#039; num2str((i-1)*2) &amp;#039;.00: &amp;#039; num2str(x1(i)) ...&lt;br /&gt;
            &amp;#039; start and &amp;#039; num2str(work_1(i)) &amp;#039; are working.&amp;#039; ...&lt;br /&gt;
            &amp;#039; ( demand is &amp;#039; num2str(demand(i)) &amp;#039;)&amp;#039;  ])&lt;br /&gt;
   end&lt;br /&gt;
&lt;br /&gt;
   disp([&amp;#039;With overtime we have &amp;#039; num2str(sum(n)) ...&lt;br /&gt;
         &amp;#039; nurses, and &amp;#039; num2str(sum(o)) ...&lt;br /&gt;
         &amp;#039; of them will work overtime.&amp;#039;])&lt;br /&gt;
   disp([&amp;#039;   This is the schedule:&amp;#039;])&lt;br /&gt;
   for i = 1:intervals,&lt;br /&gt;
      disp([&amp;#039;   &amp;#039; num2str((i-1)*2) &amp;#039;.00: &amp;#039; num2str(n(i)) ...&lt;br /&gt;
            &amp;#039; start a regular shift, &amp;#039;     num2str(o(i)) ...&lt;br /&gt;
            &amp;#039; start an overtime shift and &amp;#039; num2str(work_2(i)) ...&lt;br /&gt;
            &amp;#039; are working.&amp;#039; ...&lt;br /&gt;
            &amp;#039; ( demand is &amp;#039; num2str(demand(i)) &amp;#039;)&amp;#039;  ])&lt;br /&gt;
   end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% MODIFICATION LOG&lt;br /&gt;
%&lt;br /&gt;
% 051202 med   Created.&lt;br /&gt;
% 060117 per   Added documentation.&lt;br /&gt;
% 060126 per   Moved disp to end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Establishing a college timetable==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;matlab&amp;quot;&amp;gt;&lt;br /&gt;
% function Result = establishingacollegetimetableEx(PriLev)&lt;br /&gt;
%&lt;br /&gt;
% Creates a TOMLAB MILP problem for establishing a college time table&lt;br /&gt;
%&lt;br /&gt;
% ESTABLISHING A COLLEGE TIMETABLE&lt;br /&gt;
%&lt;br /&gt;
% Mr. Miller is in charge of establishing the weekly timetable for&lt;br /&gt;
% two classes of the last year in a college. The two classes have&lt;br /&gt;
% the same teachers, except for mathematics and sport. In the&lt;br /&gt;
% college all lessons have a duration of two hours. Furthermore,&lt;br /&gt;
% all students of the same class attend exactly the same courses.&lt;br /&gt;
% From Monday to Friday, the slots for courses are the following:&lt;br /&gt;
% 8:00–10:00, 10:15–12:15, 14:00–16:00, and 16:15–18:15. The&lt;br /&gt;
% following table lists the number of two-hour lessons that every&lt;br /&gt;
% teacher has to teach the students of the two classes per week.&lt;br /&gt;
%&lt;br /&gt;
% Number of 2-hour lessons per teacher and class&lt;br /&gt;
%+------------+-----------------+-------------------+-------------------+&lt;br /&gt;
%|Teacher     |Subject          |Lessons for class 1|Lessons for class 2|&lt;br /&gt;
%+------------+-----------------+-------------------+-------------------+&lt;br /&gt;
%|Mr Cheese   |English          |         1         |         1         |&lt;br /&gt;
%|Mrs Insulin |Biology          |         3         |         3         |&lt;br /&gt;
%|Mr Map      |History-Geography|         2         |         2         |&lt;br /&gt;
%|Mr Effofecks|Mathematics      |         0         |         4         |&lt;br /&gt;
%|Mrs Derivate|Mathematics      |         4         |         0         |&lt;br /&gt;
%|Mrs Electron|Physics          |         3         |         3         |&lt;br /&gt;
%|Mr Wise     |Philosophy       |         1         |         1         |&lt;br /&gt;
%|Mr Muscle   |Sport            |         1         |         0         |&lt;br /&gt;
%|Mrs Biceps  |Sport            |         0         |         1         |&lt;br /&gt;
%+------------+-----------------+-------------------+-------------------+&lt;br /&gt;
%&lt;br /&gt;
% The sport lessons have to take place on Thursday afternoon from&lt;br /&gt;
% 14:00 to 16:00. Furthermore, the first time slot on Monday morning&lt;br /&gt;
% is reserved for supervised homework. Mr Effofecks is absent every&lt;br /&gt;
% Monday morning because he teaches some courses at another college.&lt;br /&gt;
% Mrs Insulin does not work on Wednesday. And finally, to prevent&lt;br /&gt;
% students from getting bored, every class may only have one two-hour&lt;br /&gt;
% lesson per subject on a single day. Write a mathematical program&lt;br /&gt;
% that allows Mr Miller to determine the weekly timetable for the two&lt;br /&gt;
% classes.&lt;br /&gt;
%&lt;br /&gt;
% VARIABLES&lt;br /&gt;
%&lt;br /&gt;
% lessons1/2                 Number of lessons per subject and class&lt;br /&gt;
% subject                    Subject indices&lt;br /&gt;
% slots                      Possible slots&lt;br /&gt;
%&lt;br /&gt;
% RESULTS&lt;br /&gt;
%&lt;br /&gt;
% For an interpretation of the results, run:&lt;br /&gt;
% Result = establishingacollegetimetableEx(2);&lt;br /&gt;
%&lt;br /&gt;
% REFERENCES&lt;br /&gt;
%&lt;br /&gt;
% Applications of optimization... Gueret, Prins, Seveaux&lt;br /&gt;
% http://web.univ-ubs.fr/lester/~sevaux/pl/index.php&lt;br /&gt;
%&lt;br /&gt;
% INPUT PARAMETERS&lt;br /&gt;
% PriLev       Print Level&lt;br /&gt;
%&lt;br /&gt;
% OUTPUT PARAMETERS&lt;br /&gt;
% Result       Result structure&lt;br /&gt;
&lt;br /&gt;
% Marcus Edvall, Tomlab Optimization Inc, E-mail: tomlab@tomopt.com&lt;br /&gt;
% Copyright (c) 2005-2005 by Tomlab Optimization Inc., $Release: 5.0.0$&lt;br /&gt;
% Written Dec 5, 2005.   Last modified Dec 5, 2005.&lt;br /&gt;
&lt;br /&gt;
function Result = establishingacollegetimetableEx(PriLev)&lt;br /&gt;
&lt;br /&gt;
if nargin &amp;lt; 1&lt;br /&gt;
   PriLev = 1;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
lessons1        = [ 1  3  2  0  4  3  1  1  0]&amp;#039;;&lt;br /&gt;
lessons2        = [ 1  3  2  4  0  3  1  0  1]&amp;#039;;&lt;br /&gt;
subject         = [ 1  2  3  4  4  5  6  7  7]&amp;#039;;&lt;br /&gt;
slots           = 4*5;&lt;br /&gt;
&lt;br /&gt;
Prob = establishingacollegetimetable(lessons1, lessons2, subject, slots);&lt;br /&gt;
Result = tomRun(&amp;#039;cplex&amp;#039;, Prob, PriLev);&lt;br /&gt;
&lt;br /&gt;
if PriLev &amp;gt; 1,&lt;br /&gt;
   t_names = [&amp;#039;Cheese   &amp;#039;; &amp;#039;Insulin  &amp;#039;; &amp;#039;Map      &amp;#039;;&lt;br /&gt;
      &amp;#039;Effofecks&amp;#039;; &amp;#039;Derivate &amp;#039;; &amp;#039;Electron &amp;#039;;&lt;br /&gt;
      &amp;#039;Wise     &amp;#039;; &amp;#039;Muscle   &amp;#039;; &amp;#039;Biceps   &amp;#039; ];&lt;br /&gt;
   s_names = [&amp;#039;English    &amp;#039;; &amp;#039;Biology    &amp;#039;; &amp;#039;Histo-Geo  &amp;#039;;&lt;br /&gt;
      &amp;#039;Mathematics&amp;#039;; &amp;#039;Physics    &amp;#039;; &amp;#039;Philosophy &amp;#039;;&lt;br /&gt;
      &amp;#039;Sport      &amp;#039; ];&lt;br /&gt;
   subject = [ 1  2  3  4  4  5  6  7  7]&amp;#039;;&lt;br /&gt;
   d_names = [&amp;#039;Mon&amp;#039;; &amp;#039;Tue&amp;#039;; &amp;#039;Wed&amp;#039;; &amp;#039;Thu&amp;#039;; &amp;#039;Fri&amp;#039; ];&lt;br /&gt;
   l_times = [&amp;#039;0800-1000&amp;#039;; &amp;#039;1015-1215&amp;#039;; &amp;#039;1400-1600&amp;#039;; &amp;#039;1615-1815&amp;#039;; ];&lt;br /&gt;
   t_nr   = length(t_names);&lt;br /&gt;
   s_nr   = 20 ; % number of slots&lt;br /&gt;
   temp   = reshape(Result.x_k,t_nr*2,s_nr);&lt;br /&gt;
   class1 = temp(1:t_nr,:);&lt;br /&gt;
   class2 = temp(t_nr+1:end,:);&lt;br /&gt;
   classes= [class1 class2];&lt;br /&gt;
   for c = 1:2,&lt;br /&gt;
      this_class = class1;&lt;br /&gt;
      if c == 2,&lt;br /&gt;
         this_class = class2;&lt;br /&gt;
      end&lt;br /&gt;
      disp(&amp;#039; &amp;#039;)&lt;br /&gt;
      disp([&amp;#039;TIMETABLE FOR CLASS &amp;#039; num2str(c)])&lt;br /&gt;
      counter = 0;&lt;br /&gt;
      for i = 1:length(d_names),&lt;br /&gt;
         day = d_names(i,:);&lt;br /&gt;
         disp([&amp;#039;--&amp;#039; day &amp;#039;--&amp;#039;])&lt;br /&gt;
         for j = 1:size(l_times,1),&lt;br /&gt;
            time = l_times(j,:);&lt;br /&gt;
            counter = counter + 1;&lt;br /&gt;
            if sum(this_class(:,counter)) == 1,&lt;br /&gt;
               teacher = find(this_class(:,counter));&lt;br /&gt;
               disp([&amp;#039;   &amp;#039; time &amp;#039; &amp;#039; s_names(subject(teacher),:) ...&lt;br /&gt;
                     &amp;#039; (&amp;#039; t_names(teacher,:) &amp;#039;)&amp;#039;])&lt;br /&gt;
            end&lt;br /&gt;
         end&lt;br /&gt;
      end&lt;br /&gt;
   end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% MODIFICATION LOG&lt;br /&gt;
%&lt;br /&gt;
% 051205 med   Created.&lt;br /&gt;
% 060117 per   Added documentation.&lt;br /&gt;
% 060126 per   Moved disp to end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Exam scheduling==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;matlab&amp;quot;&amp;gt;&lt;br /&gt;
% function Result = examschedulingEx(PriLev)&lt;br /&gt;
%&lt;br /&gt;
% Creates a TOMLAB MILP problem for exam scheduling&lt;br /&gt;
%&lt;br /&gt;
% EXAM SCHEDULING&lt;br /&gt;
%&lt;br /&gt;
% At a technical university every term the third-year students choose&lt;br /&gt;
% eight modules from the eleven modules that are taught, depending on&lt;br /&gt;
% the option they wish to choose in the fourth year (there are two&lt;br /&gt;
% possible choices: &amp;quot;Production planning&amp;quot; and &amp;quot;Quality and security&lt;br /&gt;
% management&amp;quot;). In the current term, certain modules are obligatory&lt;br /&gt;
% for students who wish to continue with one of these options. The&lt;br /&gt;
% obligatory courses are Statistics (S), Graph models and algorithms&lt;br /&gt;
% (GMA), Production management (PM), and Discrete systems and events&lt;br /&gt;
% (DSE). The optional modules are: Data analysis (DA), Numerical&lt;br /&gt;
% analysis (NA), Mathematical programming (MP), C++, Java (J), Logic&lt;br /&gt;
% programming (LP), and Software engineering (SE).&lt;br /&gt;
%&lt;br /&gt;
% Incompatibilities between different exams&lt;br /&gt;
%&lt;br /&gt;
% +---+---+---+---+---+---+---+---+---+---+---+---+&lt;br /&gt;
% |   | DA| NA|C++| SE| PM| J |GMA| LP| MP| S |DSE|&lt;br /&gt;
% +---+---+---+---+---+---+---+---+---+---+---+---+&lt;br /&gt;
% |DA | - | X | - | - | X | - | X | - | - | X | X |&lt;br /&gt;
% |NA | X | - | - | - | X | - | X | - | - | X | X |&lt;br /&gt;
% |C++| - | - | - | X | X | X | X | - | X | X | X |&lt;br /&gt;
% |SE | - | - | X | - | X | X | X | - | - | X | X |&lt;br /&gt;
% |PM | X | X | X | X | - | X | X | X | X | X | X |&lt;br /&gt;
% |J  | - | - | X | X | X | - | X | - | X | X | X |&lt;br /&gt;
% |GMA| X | X | X | X | X | X | - | X | X | X | X |&lt;br /&gt;
% |LP | - | - | - | - | X | - | X | - | - | X | X |&lt;br /&gt;
% |MP | - | - | X | - | X | X | X | - | - | X | X |&lt;br /&gt;
% |S  | X | X | X | X | X | X | X | X | X | - | X |&lt;br /&gt;
% |DSE| X | X | X | X | X | X | X | X | X | X | - |&lt;br /&gt;
% +---+---+---+---+---+---+---+---+---+---+---+---+&lt;br /&gt;
%&lt;br /&gt;
% Mrs Edeetee needs to schedule the exams at the end of the term.&lt;br /&gt;
% Every exam lasts two hours. Two days have been reserved for the&lt;br /&gt;
% exams with the following time slices: 8:00-10:00, 10:15-12:15,&lt;br /&gt;
% 14:00-16:00, and 16:15-18:15. For every exam she knows the set of&lt;br /&gt;
% incompatible exams that may not take place at the same time because&lt;br /&gt;
% they have to be taken by the same students. These incompatibilities&lt;br /&gt;
% are summarized in the table above.&lt;br /&gt;
%&lt;br /&gt;
% Help Mrs Edeetee construct a timetable so that no student has more&lt;br /&gt;
% than one exam at a time.&lt;br /&gt;
%&lt;br /&gt;
% VARIABLES&lt;br /&gt;
%&lt;br /&gt;
% incompatmat                Matrix of incompatabilities&lt;br /&gt;
% slots                      Timeslots (2 days * 4 per day)&lt;br /&gt;
%&lt;br /&gt;
% RESULTS&lt;br /&gt;
%&lt;br /&gt;
% For an interpretation of the results, run:&lt;br /&gt;
% Result = examschedulingEx(2);&lt;br /&gt;
&lt;br /&gt;
%&lt;br /&gt;
% REFERENCES&lt;br /&gt;
%&lt;br /&gt;
% Applications of optimization... Gueret, Prins, Seveaux&lt;br /&gt;
% http://web.univ-ubs.fr/lester/~sevaux/pl/index.php&lt;br /&gt;
%&lt;br /&gt;
% INPUT PARAMETERS&lt;br /&gt;
% PriLev       Print Level&lt;br /&gt;
%&lt;br /&gt;
% OUTPUT PARAMETERS&lt;br /&gt;
% Result       Result structure&lt;br /&gt;
&lt;br /&gt;
% Marcus Edvall, Tomlab Optimization Inc, E-mail: tomlab@tomopt.com&lt;br /&gt;
% Copyright (c) 2005-2005 by Tomlab Optimization Inc., $Release: 5.0.0$&lt;br /&gt;
% Written Dec 5, 2005.   Last modified Dec 5, 2005.&lt;br /&gt;
&lt;br /&gt;
function Result = examschedulingEx(PriLev)&lt;br /&gt;
&lt;br /&gt;
if nargin &amp;lt; 1&lt;br /&gt;
   PriLev = 1;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
incompatmat     = [ 0 1 0 0 1 0 1 0 0 1 1;...&lt;br /&gt;
      1 0 0 0 1 0 1 0 0 1 1;...&lt;br /&gt;
      0 0 0 1 1 1 1 0 1 1 1;...&lt;br /&gt;
      0 0 1 0 1 1 1 0 0 1 1;...&lt;br /&gt;
      1 1 1 1 0 1 1 1 1 1 1;...&lt;br /&gt;
      0 0 1 1 1 0 1 0 1 1 1;...&lt;br /&gt;
      1 1 1 1 1 1 0 1 1 1 1;...&lt;br /&gt;
      0 0 0 0 1 0 1 0 0 1 1;...&lt;br /&gt;
      0 0 1 0 1 1 1 0 0 1 1;...&lt;br /&gt;
      1 1 1 1 1 1 1 1 1 0 1;...&lt;br /&gt;
      1 1 1 1 1 1 1 1 1 1 0];&lt;br /&gt;
&lt;br /&gt;
slots           = 8;&lt;br /&gt;
&lt;br /&gt;
Prob = examscheduling(incompatmat, slots);&lt;br /&gt;
Result = tomRun(&amp;#039;cplex&amp;#039;, Prob, PriLev);&lt;br /&gt;
&lt;br /&gt;
if PriLev &amp;gt; 1,&lt;br /&gt;
   e_names = [&amp;#039;DA  &amp;#039;; &amp;#039;NA  &amp;#039;; &amp;#039;C++ &amp;#039;; &amp;#039;SE  &amp;#039;;&lt;br /&gt;
      &amp;#039;PM  &amp;#039;; &amp;#039;J   &amp;#039;; &amp;#039;GMA &amp;#039;; &amp;#039;LP  &amp;#039;;&lt;br /&gt;
      &amp;#039;MP  &amp;#039;; &amp;#039;S   &amp;#039;; &amp;#039;DSE &amp;#039;] ;&lt;br /&gt;
   exams   = length(e_names); % number of exams&lt;br /&gt;
   days    = 2;               % number of days&lt;br /&gt;
   times   = [&amp;#039;0800-1000&amp;#039;; &amp;#039;1015-1215&amp;#039;; &amp;#039;1400-1600&amp;#039;; &amp;#039;1615-1815&amp;#039;; ];&lt;br /&gt;
   slots   = size(times,1);   % time slots per day&lt;br /&gt;
   temp    = reshape(Result.x_k,exams,days*slots);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   for d = 1:days,&lt;br /&gt;
      disp([&amp;#039; day number &amp;#039; num2str(d)])&lt;br /&gt;
      for s = 1:slots,&lt;br /&gt;
         i = s + (slots)*(d-1);&lt;br /&gt;
         exams_now = find(temp(:,i));&lt;br /&gt;
         e_list = [];&lt;br /&gt;
         for e = 1:length(exams_now),&lt;br /&gt;
            e_list = [e_list e_names(exams_now(e),:)];&lt;br /&gt;
         end&lt;br /&gt;
         if ~isempty(e_list),&lt;br /&gt;
            disp([&amp;#039;  during &amp;#039; times(s,:) &amp;#039;: &amp;#039; num2str(e_list)])&lt;br /&gt;
         end&lt;br /&gt;
      end&lt;br /&gt;
   end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% MODIFICATION LOG&lt;br /&gt;
%&lt;br /&gt;
% 051205 med   Created.&lt;br /&gt;
% 060117 per   Added documentation.&lt;br /&gt;
% 060126 per   Moved disp to end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Production planning with personnel assignment==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;matlab&amp;quot;&amp;gt;&lt;br /&gt;
% function Result = prodplanwithpersonnelassignEx(PriLev)&lt;br /&gt;
%&lt;br /&gt;
% Creates a TOMLAB MILP problem for production planning with personnel assignment&lt;br /&gt;
%&lt;br /&gt;
% PRODUCTION PLANNING WITH PERSONNEL ASSIGNMENT&lt;br /&gt;
%&lt;br /&gt;
% The company Line Production decides to plan the production of four&lt;br /&gt;
% of its products (P1, P2, P3, P4) on its five production lines (L1&lt;br /&gt;
% to L5). The company gains net profits of $ 7 for the products P1&lt;br /&gt;
% and P4, $ 8 for P2, and $ 9 for P3. The maximum times during&lt;br /&gt;
% which the five production lines may operate are different during&lt;br /&gt;
% the planning period. The maximum capacities for L1 to L5 are 4500&lt;br /&gt;
% hours, 5000 hours, 4500 hours, 1500 hours, and 2500 hours&lt;br /&gt;
% respectively. The table below lists the processing time in hours&lt;br /&gt;
% necessary for the production of one unit of every product on every&lt;br /&gt;
% production line. Which quantities of P1 to P4 should be produced to&lt;br /&gt;
% maximize the total profit? If subsequently a transfer of personnel&lt;br /&gt;
% (and hence of working hours) is authorized between production lines&lt;br /&gt;
% during the planning period as shown in the second table below,&lt;br /&gt;
% which is the maximum profit? How many hours are transfered and&lt;br /&gt;
% under what conditions?&lt;br /&gt;
%&lt;br /&gt;
% Unitary processing times&lt;br /&gt;
%&lt;br /&gt;
% +--------+-------------------+&lt;br /&gt;
% |        |   Lines           |&lt;br /&gt;
% +--------+---+---+---+---+---+&lt;br /&gt;
% |Products| L1| L2| L3| L4| L5|&lt;br /&gt;
% +--------+---+---+---+---+---+&lt;br /&gt;
% |   P1   |1.3|0.9|2.0|0.3|0.9|&lt;br /&gt;
% |   P2   |1.8|1.7|1.4|0.6|1.1|&lt;br /&gt;
% |   P3   |1.3|1.2|1.3|1.0|1.4|&lt;br /&gt;
% |   P4   |0.9|1.1|1.0|0.9|1.0|&lt;br /&gt;
% +--------+---+---+---+---+---+&lt;br /&gt;
%&lt;br /&gt;
% Possible transfers of personnel&lt;br /&gt;
%&lt;br /&gt;
% +------+-------------------+------------------+&lt;br /&gt;
% |      |  Destination      |                  |&lt;br /&gt;
% +------+---+---+---+---+---+Maximum number of |&lt;br /&gt;
% |Origin| L1| L2| L3| L4| L5|transferable hours|&lt;br /&gt;
% +------+---+---+---+---+---+------------------+&lt;br /&gt;
% |  L1  |  -|yes|yes|yes| no|     400          |&lt;br /&gt;
% |  L2  | no|  -|yes| no|yes|     800          |&lt;br /&gt;
% |  L3  |yes|yes|  -|yes| no|     500          |&lt;br /&gt;
% |  L4  | no| no| no|  -|yes|     200          |&lt;br /&gt;
% |  L5  |yes|yes|yes| no|  -|     300          |&lt;br /&gt;
% +------+---+---+---+---+---+------------------+&lt;br /&gt;
%&lt;br /&gt;
% VARIABLES&lt;br /&gt;
%&lt;br /&gt;
% profit                     Profit per product&lt;br /&gt;
% capacity                   Hours at each site&lt;br /&gt;
% timemat                    Time to produce products&lt;br /&gt;
% transfermat                Transfer matrix&lt;br /&gt;
% maxtransfer                Maximum hours to transfer&lt;br /&gt;
%&lt;br /&gt;
% RESULTS&lt;br /&gt;
%&lt;br /&gt;
% For an interpretation of the results, run:&lt;br /&gt;
% [Result1, Result2] = prodplanwithpersonnelassignEx(2);&lt;br /&gt;
%&lt;br /&gt;
% REFERENCES&lt;br /&gt;
%&lt;br /&gt;
% Applications of optimization... Gueret, Prins, Seveaux&lt;br /&gt;
% http://web.univ-ubs.fr/lester/~sevaux/pl/index.php&lt;br /&gt;
%&lt;br /&gt;
% INPUT PARAMETERS&lt;br /&gt;
% PriLev       Print Level&lt;br /&gt;
%&lt;br /&gt;
% OUTPUT PARAMETERS&lt;br /&gt;
% Result       Result structure&lt;br /&gt;
&lt;br /&gt;
% Marcus Edvall, Tomlab Optimization Inc, E-mail: tomlab@tomopt.com&lt;br /&gt;
% Copyright (c) 2005-2005 by Tomlab Optimization Inc., $Release: 5.0.0$&lt;br /&gt;
% Written Dec 5, 2005.   Last modified Dec 5, 2005.&lt;br /&gt;
&lt;br /&gt;
function [Result1, Result2] = prodplanwithpersonnelassignEx(PriLev)&lt;br /&gt;
&lt;br /&gt;
if nargin &amp;lt; 1&lt;br /&gt;
   PriLev = 1;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
profit        = [7 8 9 7]&amp;#039;;&lt;br /&gt;
capacity      = [4500 5000 4500 1500 2500]&amp;#039;;&lt;br /&gt;
&lt;br /&gt;
timemat       = [ 1.3 0.9 2.0 0.3 0.9;...&lt;br /&gt;
      1.8 1.7 1.4 0.6 1.1;...&lt;br /&gt;
      1.3 1.2 1.3 1.0 1.4;...&lt;br /&gt;
      0.9 1.1 1.0 0.9 1.0];&lt;br /&gt;
&lt;br /&gt;
transfermat   = [0 1 1 1 0;...&lt;br /&gt;
      0 0 1 0 1;...&lt;br /&gt;
      1 1 0 1 0;...&lt;br /&gt;
      0 0 0 0 1;...&lt;br /&gt;
      1 1 1 0 0];&lt;br /&gt;
&lt;br /&gt;
maxtransfer   = [400 800 200 500 300]&amp;#039;;&lt;br /&gt;
&lt;br /&gt;
flag          = 0;&lt;br /&gt;
&lt;br /&gt;
Prob = prodplanwithpersonnelassign(profit, capacity, timemat,...&lt;br /&gt;
   transfermat, maxtransfer, flag);&lt;br /&gt;
Result1 = tomRun(&amp;#039;cplex&amp;#039;, Prob, PriLev);&lt;br /&gt;
&lt;br /&gt;
flag          = 1;&lt;br /&gt;
&lt;br /&gt;
Prob = prodplanwithpersonnelassign(profit, capacity, timemat,...&lt;br /&gt;
   transfermat, maxtransfer, flag);&lt;br /&gt;
Result2 = tomRun(&amp;#039;cplex&amp;#039;, Prob, PriLev);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if PriLev &amp;gt; 1,&lt;br /&gt;
   disp(&amp;#039;without transfer&amp;#039;)&lt;br /&gt;
   x1 = Result1.x_k;&lt;br /&gt;
   for i = 1:length(x1),&lt;br /&gt;
      if x1(i) &amp;gt; 0,&lt;br /&gt;
         disp([&amp;#039;    produce &amp;#039; num2str(x1(i)) &amp;#039; units of P&amp;#039; num2str(i)  ])&lt;br /&gt;
      end&lt;br /&gt;
   end&lt;br /&gt;
   disp(&amp;#039;with transfer&amp;#039;)&lt;br /&gt;
   x2 = Result2.x_k;&lt;br /&gt;
   length(x2);&lt;br /&gt;
   n1    = 5;&lt;br /&gt;
   n2    = 4;&lt;br /&gt;
   n     = n1 + n2*n2 + n2;   %amount, transfers, hours&lt;br /&gt;
   x2 = Result2.x_k;&lt;br /&gt;
   for i = 1:length(x1),&lt;br /&gt;
      if x2(i) &amp;gt; 0,&lt;br /&gt;
         disp([&amp;#039;    produce &amp;#039; num2str(x2(i)) &amp;#039; units of P&amp;#039; num2str(i)  ])&lt;br /&gt;
      end&lt;br /&gt;
   end&lt;br /&gt;
   transfer = reshape(x2(n1:n1+n1*n1-1),n1,n1);&lt;br /&gt;
   for i = 1:size(transfer,1),&lt;br /&gt;
      idx = find(transfer(i,:));&lt;br /&gt;
      for j = 1: length(idx),&lt;br /&gt;
         disp([&amp;#039;    transfer &amp;#039; num2str(transfer(i,idx(j))) ...&lt;br /&gt;
               &amp;#039; hours from &amp;#039; num2str(i) &amp;#039; to &amp;#039; num2str(idx(j)) ])&lt;br /&gt;
      end&lt;br /&gt;
   end&lt;br /&gt;
   hours = x2(n1+n1*n1:end);&lt;br /&gt;
   for j = 1:length(hours),&lt;br /&gt;
      disp([&amp;#039;    work &amp;#039; num2str(hours(j)) &amp;#039; hours at L&amp;#039; num2str(j) ])&lt;br /&gt;
   end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% MODIFICATION LOG&lt;br /&gt;
%&lt;br /&gt;
% 051205 med   Created.&lt;br /&gt;
% 060117 per   Added documentation.&lt;br /&gt;
% 060126 per   Moved disp to end&lt;br /&gt;
% 060131 per   Really moved disp to end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Plan the personnel at a construction site==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;matlab&amp;quot;&amp;gt;&lt;br /&gt;
% function Result = planthepersonnelataconstrEx(PriLev)&lt;br /&gt;
%&lt;br /&gt;
% Creates a TOMLAB MILP problem for planning the personnel at a construction site&lt;br /&gt;
%&lt;br /&gt;
% PLANNING THE PERSONNEL AT A CONSTRUCTION SITE&lt;br /&gt;
%&lt;br /&gt;
% Construction workers who erect the metal skeleton of skyscrapers&lt;br /&gt;
% are called steel erectors. The following table lists the&lt;br /&gt;
% requirements for steel erectors at a construction site during a&lt;br /&gt;
% period of six months. Transfers from other sites to this one are&lt;br /&gt;
% possible on the first day of every month and cost $100 per person.&lt;br /&gt;
% At the end of every month workers may leave to other sites at a&lt;br /&gt;
% transfer cost of $160 per person. It is estimated that&lt;br /&gt;
% understaffing as well as overstaffing cost $200 per month per post&lt;br /&gt;
% (in the case of unoccupied posts the missing hours have to be&lt;br /&gt;
% filled through overtime work).&lt;br /&gt;
%&lt;br /&gt;
% Monthly requirement for steel erectors&lt;br /&gt;
%&lt;br /&gt;
% +---+---+---+---+---+---+&lt;br /&gt;
% |Mar|Apr|May|Jun|Jul|Aug|&lt;br /&gt;
% +---+---+---+---+---+---+&lt;br /&gt;
% | 4 | 6 | 7 | 4 | 6 | 2 |&lt;br /&gt;
% +---+---+---+---+---+---+&lt;br /&gt;
%&lt;br /&gt;
% Overtime work is limited to 25% of the hours worked normally. Every&lt;br /&gt;
% month, at most three workers may arrive at the site. The departure&lt;br /&gt;
% to other sites is limited by agreements with labor unions to 1/3 of&lt;br /&gt;
% the total personnel of the month. We suppose that three steel&lt;br /&gt;
% erectors are already present on site at the end of February, that&lt;br /&gt;
% nobody leaves at the end of February and that three workers need to&lt;br /&gt;
% remain on-site at the end of August. Which are the number of&lt;br /&gt;
% arrivals and departures every month to minimize the total cost?&lt;br /&gt;
%&lt;br /&gt;
% VARIABLES&lt;br /&gt;
%&lt;br /&gt;
% transferin                 Cost to transfer in&lt;br /&gt;
% transferout                Cost to transfer out&lt;br /&gt;
% staffingdevcost            Cost for over or under employment&lt;br /&gt;
% overtimemax                Maximum overtime&lt;br /&gt;
% maxtransferin              Maximum amount to transfer in&lt;br /&gt;
% maxtransferout             Maximum amount to transfer out&lt;br /&gt;
% startstaff                 Starting staff&lt;br /&gt;
% endstaff                   Staff required at the end of the period&lt;br /&gt;
% demands                    Staff required each month&lt;br /&gt;
%&lt;br /&gt;
% RESULTS&lt;br /&gt;
%&lt;br /&gt;
% For an interpretation of the results, run:&lt;br /&gt;
% Result = planthepersonnelataconstrEx(2);&lt;br /&gt;
%&lt;br /&gt;
% REFERENCES&lt;br /&gt;
%&lt;br /&gt;
% Applications of optimization... Gueret, Prins, Seveaux&lt;br /&gt;
% http://web.univ-ubs.fr/lester/~sevaux/pl/index.php&lt;br /&gt;
%&lt;br /&gt;
% INPUT PARAMETERS&lt;br /&gt;
% PriLev       Print Level&lt;br /&gt;
%&lt;br /&gt;
% OUTPUT PARAMETERS&lt;br /&gt;
% Result       Result structure&lt;br /&gt;
&lt;br /&gt;
% Marcus Edvall, Tomlab Optimization Inc, E-mail: tomlab@tomopt.com&lt;br /&gt;
% Copyright (c) 2005-2005 by Tomlab Optimization Inc., $Release: 5.0.0$&lt;br /&gt;
% Written Dec 5, 2005.   Last modified Dec 5, 2005.&lt;br /&gt;
&lt;br /&gt;
function Result = planthepersonnelataconstrEx(PriLev)&lt;br /&gt;
&lt;br /&gt;
if nargin &amp;lt; 1&lt;br /&gt;
   PriLev = 1;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
transferin      = 100;&lt;br /&gt;
transferout     = 160;&lt;br /&gt;
staffingdevcost = 200;&lt;br /&gt;
&lt;br /&gt;
overtimemax     = 0.25;&lt;br /&gt;
maxtransferin   = 3;&lt;br /&gt;
maxtransferout  = 1/3;&lt;br /&gt;
&lt;br /&gt;
startstaff      = 3;&lt;br /&gt;
endstaff        = 3;&lt;br /&gt;
&lt;br /&gt;
demands         = [4 6 7 4 6 2]&amp;#039;;&lt;br /&gt;
&lt;br /&gt;
Prob = planthepersonnelataconstr(transferin, transferout,...&lt;br /&gt;
   staffingdevcost, overtimemax, maxtransferin, maxtransferout, ...&lt;br /&gt;
   startstaff, endstaff, demands);&lt;br /&gt;
Result = tomRun(&amp;#039;cplex&amp;#039;, Prob, PriLev);&lt;br /&gt;
&lt;br /&gt;
if PriLev &amp;gt; 1,&lt;br /&gt;
   months = [&amp;#039;Mar&amp;#039;; &amp;#039;Apr&amp;#039;; &amp;#039;May&amp;#039;; &amp;#039;Jun&amp;#039;; &amp;#039;Jul&amp;#039;; &amp;#039;Aug&amp;#039;];&lt;br /&gt;
   temp   = reshape(Result.x_k,size(months,1),5);&lt;br /&gt;
   for m = 1:size(months,1),&lt;br /&gt;
      disp([&amp;#039;-- &amp;#039; months(m,:) &amp;#039; --&amp;#039; ])&lt;br /&gt;
      disp([&amp;#039;  &amp;#039; num2str(temp(m,1)) &amp;#039; worker(s) on site&amp;#039;])&lt;br /&gt;
      disp([&amp;#039;  &amp;#039; num2str(temp(m,2)) &amp;#039; worker(s) have arrived&amp;#039;])&lt;br /&gt;
      disp([&amp;#039;  &amp;#039; num2str(temp(m,3)) &amp;#039; worker(s) will leave&amp;#039;])&lt;br /&gt;
      disp([&amp;#039;  &amp;#039; num2str(temp(m,4)) &amp;#039; worker(s) too many&amp;#039;])&lt;br /&gt;
      disp([&amp;#039;  &amp;#039; num2str(temp(m,5)) &amp;#039; worker(s) too few&amp;#039;])&lt;br /&gt;
   end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% MODIFICATION LOG&lt;br /&gt;
%&lt;br /&gt;
% 051205 med   Created.&lt;br /&gt;
% 060118 per   Added documentation.&lt;br /&gt;
% 060126 per   Moved disp to end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Elias</name></author>
	</entry>
</feed>