<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE article  PUBLIC "-//NLM//DTD Journal Publishing DTD v3.0 20080202//EN" "http://dtd.nlm.nih.gov/publishing/3.0/journalpublishing3.dtd"><article xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink" dtd-version="3.0" xml:lang="en" article-type="research article"><front><journal-meta><journal-id journal-id-type="publisher-id">AJOR</journal-id><journal-title-group><journal-title>American Journal of Operations Research</journal-title></journal-title-group><issn pub-type="epub">2160-8830</issn><publisher><publisher-name>Scientific Research Publishing</publisher-name></publisher></journal-meta><article-meta><article-id pub-id-type="doi">10.4236/ajor.2016.66044</article-id><article-id pub-id-type="publisher-id">AJOR-72145</article-id><article-categories><subj-group subj-group-type="heading"><subject>Articles</subject></subj-group><subj-group subj-group-type="Discipline-v2"><subject>Physics&amp;Mathematics</subject></subj-group></article-categories><title-group><article-title>
 
 
  Resolution of Resource Contentions in the CCPM-MPL Using Simulated Annealing and Genetic Algorithm
 
</article-title></title-group><contrib-group><contrib contrib-type="author" xlink:type="simple"><name name-style="western"><surname>Hajime</surname><given-names>Yokoyama</given-names></name><xref ref-type="aff" rid="aff1"><sup>1</sup></xref><xref ref-type="corresp" rid="cor1"><sup>*</sup></xref></contrib><contrib contrib-type="author" xlink:type="simple"><name name-style="western"><surname>Hiroyuki</surname><given-names>Goto</given-names></name><xref ref-type="aff" rid="aff1"><sup>1</sup></xref><xref ref-type="corresp" rid="cor1"><sup>*</sup></xref></contrib></contrib-group><aff id="aff1"><addr-line>Department of Industrial &amp;amp; System Engineering, Hosei University, Tokyo, Japan</addr-line></aff><author-notes><corresp id="cor1">* E-mail:<email>hajime.yokoyama.3m@stu.hosei.ac.jp(HY)</email>;<email>goto-h@hosei.ac.jp(HG)</email>;</corresp></author-notes><pub-date pub-type="epub"><day>28</day><month>10</month><year>2016</year></pub-date><volume>06</volume><issue>06</issue><fpage>480</fpage><lpage>488</lpage><history><date date-type="received"><day>September</day>	<month>20,</month>	<year>2016</year></date><date date-type="rev-recd"><day>Accepted:</day>	<month>November</month>	<year>18,</year>	</date><date date-type="accepted"><day>November</day>	<month>21,</month>	<year>2016</year></date></history><permissions><copyright-statement>&#169; Copyright  2014 by authors and Scientific Research Publishing Inc. </copyright-statement><copyright-year>2014</copyright-year><license><license-p>This work is licensed under the Creative Commons Attribution International License (CC BY). http://creativecommons.org/licenses/by/4.0/</license-p></license></permissions><abstract><p>
 
 
  This research aims to plan a “good-enough” schedule with leveling of resource contentions. We use the existing critical chain project management-max-plus linear framework. Critical chain project management is known as a technique used to both shorten the makespan and observe the due date under limited resources; the max-plus linear representation is an approach for modeling discrete event systems as production systems and project scheduling. If a contention arises within a single resource, we must resolve it by appending precedence relations. Thus, the resolution framework is reduced to a combinatorial optimization. If we aim to obtain the exact optimal solution, the maximum computation time is longer than 10 hours for 20 jobs. We thus experiment with Simulated Annealing (SA) and Genetic Algorithm (GA) to obtain an approximate solution within a practical time. Comparing the two methods, the former was beneficial in computation time, whereas the latter was better in terms of the performance of the solution. If the number of tasks is 50, the solution using SA is better than that using GA.
 
</p></abstract><kwd-group><kwd>Critical Chain Project Management</kwd><kwd> Max-Plus Algebra</kwd><kwd> CCPM-MPL</kwd><kwd> Simulated  Annealing</kwd><kwd> Genetic Algorithm</kwd></kwd-group></article-meta></front><body><sec id="s1"><title>1. Introduction</title><p>This research aims to plan a “good-enough” schedule with leveling of resource contentions. References [<xref ref-type="bibr" rid="scirp.72145-ref1">1</xref>] and [<xref ref-type="bibr" rid="scirp.72145-ref2">2</xref>] modified and extended a scheduling methodology referred to as critical chain project management-max-plus linear (CCPM-MPL), in which CCPM [<xref ref-type="bibr" rid="scirp.72145-ref3">3</xref>] [<xref ref-type="bibr" rid="scirp.72145-ref4">4</xref>] was applied to the max-plus algebra [<xref ref-type="bibr" rid="scirp.72145-ref5">5</xref>] . CCPM is a technique for project management invented by E. M. Goldratt and developed by L. P. Leach. The objective of this method is to both shorten the makespan and observe the due date under a limited number of resources. The max-plus algebra is an algebraic system wherein the max and plus operations are defined as addition and multiplication, respectively. MPL [<xref ref-type="bibr" rid="scirp.72145-ref1">1</xref>] representation is an approach for modeling and analyzing a class of discrete-event systems such as production and project scheduling, in which the behavior of the target system is represented by linear equations in the max-plus algebra. MPL representation can formulate systems with structures of non-concurrency, synchronization, parallel pro- cessing of multiple tasks, and so on [<xref ref-type="bibr" rid="scirp.72145-ref1">1</xref>] . We assume that a single resource cannot process multiple tasks simultaneously. If a contention arises within a single resource, we must resolve it by appending precedence relations. Thus, the resolution framework is reduced to a combinatorial problem. To level resource contentions, we developed a complete enumeration method by which an exact solution is obtained. In a numerical simulation, the maximum computation time was longer than 10 hours for 20 jobs. Reference [<xref ref-type="bibr" rid="scirp.72145-ref6">6</xref>] obtained a “good-enough” schedule by using Genetic Algorithm (GA) within a short computation time. On the other hand, we uncovered a preliminary design to obtain a “good-enough” schedule by using Simulated Annealing (SA) [<xref ref-type="bibr" rid="scirp.72145-ref7">7</xref>] . However, it is not currently clear which of the two methods is better. Hence, this research compares the two methods in terms of the performances of their solutions, computation times, and values.</p></sec><sec id="s2"><title>2. CCPM-MPL Framework</title><p>After defining the max-plus algebra, we define the CCPM-MPL framework with the help of [<xref ref-type="bibr" rid="scirp.72145-ref1">1</xref>] and [<xref ref-type="bibr" rid="scirp.72145-ref2">2</xref>] .</p><sec id="s2_1"><title>2.1. Max-Plus Algebra</title><p>We define a set<inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/6-1040512x2.png" xlink:type="simple"/></inline-formula>, where <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/6-1040512x3.png" xlink:type="simple"/></inline-formula> is the whole real line. Then, for <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/6-1040512x4.png" xlink:type="simple"/></inline-formula>, we define the operators:</p><disp-formula id="scirp.72145-formula112"><label>(1)</label><graphic position="anchor" xlink:href="http://html.scirp.org/file/6-1040512x5.png"  xlink:type="simple"/></disp-formula><disp-formula id="scirp.72145-formula113"><label>(2)</label><graphic position="anchor" xlink:href="http://html.scirp.org/file/6-1040512x6.png"  xlink:type="simple"/></disp-formula><p>The priority of operator <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/6-1040512x7.png" xlink:type="simple"/></inline-formula> is higher than that of<inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/6-1040512x8.png" xlink:type="simple"/></inline-formula>. If <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/6-1040512x9.png" xlink:type="simple"/></inline-formula> and<inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/6-1040512x10.png" xlink:type="simple"/></inline-formula>,</p><disp-formula id="scirp.72145-formula114"><label>(3)</label><graphic position="anchor" xlink:href="http://html.scirp.org/file/6-1040512x11.png"  xlink:type="simple"/></disp-formula><disp-formula id="scirp.72145-formula115"><label>(4)</label><graphic position="anchor" xlink:href="http://html.scirp.org/file/6-1040512x12.png"  xlink:type="simple"/></disp-formula><p>The zero and unit elements for operators <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/6-1040512x13.png" xlink:type="simple"/></inline-formula> and <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/6-1040512x14.png" xlink:type="simple"/></inline-formula> are denoted by <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/6-1040512x15.png" xlink:type="simple"/></inline-formula> and<inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/6-1040512x16.png" xlink:type="simple"/></inline-formula>, respectively. <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/6-1040512x17.png" xlink:type="simple"/></inline-formula>is a matrix whose elements are all<inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/6-1040512x18.png" xlink:type="simple"/></inline-formula>, and <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/6-1040512x19.png" xlink:type="simple"/></inline-formula> is a matrix whose diagonal elements are <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/6-1040512x19.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/6-1040512x20.png" xlink:type="simple"/></inline-formula> and whose off-diagonal elements are<inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/6-1040512x19.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/6-1040512x20.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/6-1040512x21.png" xlink:type="simple"/></inline-formula>. If<inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/6-1040512x19.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/6-1040512x20.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/6-1040512x21.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/6-1040512x22.png" xlink:type="simple"/></inline-formula>, the following operator <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/6-1040512x19.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/6-1040512x20.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/6-1040512x21.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/6-1040512x22.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/6-1040512x23.png" xlink:type="simple"/></inline-formula> is the Kleene star:</p><disp-formula id="scirp.72145-formula116"><label>(5)</label><graphic position="anchor" xlink:href="http://html.scirp.org/file/6-1040512x24.png"  xlink:type="simple"/></disp-formula><p>where <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/6-1040512x25.png" xlink:type="simple"/></inline-formula> is an instance that satisfies <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/6-1040512x25.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/6-1040512x26.png" xlink:type="simple"/></inline-formula> and<inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/6-1040512x25.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/6-1040512x26.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/6-1040512x27.png" xlink:type="simple"/></inline-formula>. In addition, we define</p><disp-formula id="scirp.72145-formula117"><label>(6)</label><graphic position="anchor" xlink:href="http://html.scirp.org/file/6-1040512x28.png"  xlink:type="simple"/></disp-formula></sec><sec id="s2_2"><title>2.2. Formulation of the CCPM-MPL Framework</title><p>We define the following relevant matrices and vectors:</p><p>・ n: number of tasks;</p><p>・ <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/6-1040512x29.png" xlink:type="simple"/></inline-formula>: number of external outputs;</p><p>・ <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/6-1040512x30.png" xlink:type="simple"/></inline-formula>: number of external inputs;</p><p>・ <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/6-1040512x31.png" xlink:type="simple"/></inline-formula>: input matrix, <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/6-1040512x31.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/6-1040512x32.png" xlink:type="simple"/></inline-formula>= {e: if task i has an input transition j, ε: otherwise};</p><p>・ <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/6-1040512x33.png" xlink:type="simple"/></inline-formula>: output matrix, <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/6-1040512x33.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/6-1040512x34.png" xlink:type="simple"/></inline-formula>= {e: if task j has an output transition i, : otherwise};</p><p>・ <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/6-1040512x35.png" xlink:type="simple"/></inline-formula>: adjacency matrix, <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/6-1040512x35.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/6-1040512x36.png" xlink:type="simple"/></inline-formula>= {e: if task i has a preceding task j, ε: otherwise};</p><p>・ <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/6-1040512x37.png" xlink:type="simple"/></inline-formula>: system parameter,<inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/6-1040512x37.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/6-1040512x38.png" xlink:type="simple"/></inline-formula>: duration time in task i;</p><p>・ <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/6-1040512x39.png" xlink:type="simple"/></inline-formula>: input vector,<inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/6-1040512x39.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/6-1040512x40.png" xlink:type="simple"/></inline-formula>: input time to external input i;</p><p>・ <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/6-1040512x41.png" xlink:type="simple"/></inline-formula>: output vector,<inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/6-1040512x41.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/6-1040512x42.png" xlink:type="simple"/></inline-formula>: output time from external output i;</p><p>・ <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/6-1040512x43.png" xlink:type="simple"/></inline-formula>: state vector,<inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/6-1040512x43.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/6-1040512x44.png" xlink:type="simple"/></inline-formula>: start or completion time of task i.</p><p>The earliest task-completion times of all tasks, <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/6-1040512x45.png" xlink:type="simple"/></inline-formula>, are calculated using</p><disp-formula id="scirp.72145-formula118"><label>(7)</label><graphic position="anchor" xlink:href="http://html.scirp.org/file/6-1040512x46.png"  xlink:type="simple"/></disp-formula><p>where</p><disp-formula id="scirp.72145-formula119"><label>(8)</label><graphic position="anchor" xlink:href="http://html.scirp.org/file/6-1040512x47.png"  xlink:type="simple"/></disp-formula><disp-formula id="scirp.72145-formula120"><label>(9)</label><graphic position="anchor" xlink:href="http://html.scirp.org/file/6-1040512x48.png"  xlink:type="simple"/></disp-formula><p>Matrixes <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/6-1040512x49.png" xlink:type="simple"/></inline-formula> and <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/6-1040512x49.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/6-1040512x50.png" xlink:type="simple"/></inline-formula> are the transition and weight matrices, respectively. The earliest output times to all output transitions, <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/6-1040512x49.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/6-1040512x50.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/6-1040512x51.png" xlink:type="simple"/></inline-formula>, are then calculated by</p><disp-formula id="scirp.72145-formula121"><label>(10)</label><graphic position="anchor" xlink:href="http://html.scirp.org/file/6-1040512x52.png"  xlink:type="simple"/></disp-formula><p>Then, the latest task-starting times, <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/6-1040512x53.png" xlink:type="simple"/></inline-formula>, are calculated using Equation (10):</p><disp-formula id="scirp.72145-formula122"><label>(11)</label><graphic position="anchor" xlink:href="http://html.scirp.org/file/6-1040512x54.png"  xlink:type="simple"/></disp-formula><p>The latest input times, <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/6-1040512x55.png" xlink:type="simple"/></inline-formula>, are calculated in terms of<inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/6-1040512x55.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/6-1040512x56.png" xlink:type="simple"/></inline-formula>:</p><disp-formula id="scirp.72145-formula123"><label>(12)</label><graphic position="anchor" xlink:href="http://html.scirp.org/file/6-1040512x57.png"  xlink:type="simple"/></disp-formula><p>As a consequence, the total floats of all tasks can be calculated using Equations ((5) and (8)):</p><disp-formula id="scirp.72145-formula124"><label>(13)</label><graphic position="anchor" xlink:href="http://html.scirp.org/file/6-1040512x58.png"  xlink:type="simple"/></disp-formula><p>All tasks can be classified into two types: <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/6-1040512x59.png" xlink:type="simple"/></inline-formula>and <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/6-1040512x59.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/6-1040512x60.png" xlink:type="simple"/></inline-formula> are a critical and a non-critical task, respectively. We define two vectors, <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/6-1040512x59.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/6-1040512x60.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/6-1040512x61.png" xlink:type="simple"/></inline-formula>, to classify each task as either critical or non-critical:</p><disp-formula id="scirp.72145-formula125"><label>(14)</label><graphic position="anchor" xlink:href="http://html.scirp.org/file/6-1040512x62.png"  xlink:type="simple"/></disp-formula><disp-formula id="scirp.72145-formula126"><label>(15)</label><graphic position="anchor" xlink:href="http://html.scirp.org/file/6-1040512x63.png"  xlink:type="simple"/></disp-formula><p>We then calculate two matrices, <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/6-1040512x64.png" xlink:type="simple"/></inline-formula>, as follows:</p><disp-formula id="scirp.72145-formula127"><label>(16)</label><graphic position="anchor" xlink:href="http://html.scirp.org/file/6-1040512x65.png"  xlink:type="simple"/></disp-formula><disp-formula id="scirp.72145-formula128"><label>(17)</label><graphic position="anchor" xlink:href="http://html.scirp.org/file/6-1040512x66.png"  xlink:type="simple"/></disp-formula><p>In the CCPM framework, there are two types of buffers, referred to as feeding and project buffers. The size of each buffer is calculated by</p><disp-formula id="scirp.72145-formula129"><label>(18)</label><graphic position="anchor" xlink:href="http://html.scirp.org/file/6-1040512x67.png"  xlink:type="simple"/></disp-formula><disp-formula id="scirp.72145-formula130"><label>(19)</label><graphic position="anchor" xlink:href="http://html.scirp.org/file/6-1040512x68.png"  xlink:type="simple"/></disp-formula><p>where</p><disp-formula id="scirp.72145-formula131"><label>(20)</label><graphic position="anchor" xlink:href="http://html.scirp.org/file/6-1040512x69.png"  xlink:type="simple"/></disp-formula><p>Feeding buffers are inserted wherever a non-critical task joins into a critical one. A project buffer is inserted on the eve of an output to avoid tardiness of the project. To reflect the insertion of the two types of buffers, we incur weights to the adjacency matrix <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/6-1040512x70.png" xlink:type="simple"/></inline-formula> and the output matrix<inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/6-1040512x70.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/6-1040512x71.png" xlink:type="simple"/></inline-formula>:</p><disp-formula id="scirp.72145-formula132"><label>(21)</label><graphic position="anchor" xlink:href="http://html.scirp.org/file/6-1040512x72.png"  xlink:type="simple"/></disp-formula><disp-formula id="scirp.72145-formula133"><label>(22)</label><graphic position="anchor" xlink:href="http://html.scirp.org/file/6-1040512x73.png"  xlink:type="simple"/></disp-formula><p>Now we can calculate the earliest task-completion, <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/6-1040512x74.png" xlink:type="simple"/></inline-formula>, and the output time, <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/6-1040512x74.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/6-1040512x75.png" xlink:type="simple"/></inline-formula>, after inserting the time buffers. The earliest task-completion times of all nodes, <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/6-1040512x74.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/6-1040512x75.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/6-1040512x76.png" xlink:type="simple"/></inline-formula>, are calculated using</p><disp-formula id="scirp.72145-formula134"><label>(23)</label><graphic position="anchor" xlink:href="http://html.scirp.org/file/6-1040512x77.png"  xlink:type="simple"/></disp-formula><disp-formula id="scirp.72145-formula135"><label>(24)</label><graphic position="anchor" xlink:href="http://html.scirp.org/file/6-1040512x78.png"  xlink:type="simple"/></disp-formula><p>Matrix <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/6-1040512x79.png" xlink:type="simple"/></inline-formula> is the transition matrix, in which the insertion of the two types of buffers is reflected. The earliest output times to all output transitions, <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/6-1040512x79.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/6-1040512x80.png" xlink:type="simple"/></inline-formula>, are then calculated by</p><disp-formula id="scirp.72145-formula136"><label>(25)</label><graphic position="anchor" xlink:href="http://html.scirp.org/file/6-1040512x81.png"  xlink:type="simple"/></disp-formula><p>We treat <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/6-1040512x82.png" xlink:type="simple"/></inline-formula> as the objective function and consider minimizing<inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/6-1040512x82.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/6-1040512x83.png" xlink:type="simple"/></inline-formula>.</p></sec></sec><sec id="s3"><title>3. Resolution of Resource Contentions</title><p>We explain the resolution of resource contentions with the help of [<xref ref-type="bibr" rid="scirp.72145-ref8">8</xref>] . We add relevant matrices and vectors as follows:</p><p>・ <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/6-1040512x84.png" xlink:type="simple"/></inline-formula>: number of resources,</p><p>・ <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/6-1040512x85.png" xlink:type="simple"/></inline-formula>: maximum number of tasks that a single resource processes,</p><p>・ <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/6-1040512x86.png" xlink:type="simple"/></inline-formula>: processing order of tasks,</p><p><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/6-1040512x87.png" xlink:type="simple"/></inline-formula>.</p><p>We consider <xref ref-type="fig" rid="fig1">Figure 1</xref> as an example project with five tasks before the leveling of resource contentions. The duration time of each task is<inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/6-1040512x88.png" xlink:type="simple"/></inline-formula>. The adjacency matrix, <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/6-1040512x88.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/6-1040512x89.png" xlink:type="simple"/></inline-formula>, is</p><disp-formula id="scirp.72145-formula137"><label>(26)</label><graphic position="anchor" xlink:href="http://html.scirp.org/file/6-1040512x90.png"  xlink:type="simple"/></disp-formula><p>Tasks 1, 4, and 5 are processed by resource 1, whereas tasks 2 and 3 are processed by resource 2. If resource 2 processes tasks 2 and 3 simultaneously, a resource contention occurs. We avoid contentions between tasks 2 and 3 by appending two precedence relations, which are expressed by broken arrows in <xref ref-type="fig" rid="fig2">Figure 2</xref>, which shows the project after the resource contention is leveled. We then reflect the leveling of the resource contentions using the following adjacency matrix,<inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/6-1040512x91.png" xlink:type="simple"/></inline-formula>:</p><disp-formula id="scirp.72145-formula138"><label>(27)</label><graphic position="anchor" xlink:href="http://html.scirp.org/file/6-1040512x92.png"  xlink:type="simple"/></disp-formula><p>In addition, the processing order of tasks, <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/6-1040512x93.png" xlink:type="simple"/></inline-formula>, is</p><disp-formula id="scirp.72145-formula139"><label>(28)</label><graphic position="anchor" xlink:href="http://html.scirp.org/file/6-1040512x94.png"  xlink:type="simple"/></disp-formula><p>Our numerical simulation to level resource contentions shows that the maximum</p><fig id="fig1"  position="float"><label><xref ref-type="fig" rid="fig1">Figure 1</xref></label><caption><title> Example of a fifth-task project before a resource contention is leveled</title></caption><graphic mimetype="image"   position="float"  xlink:type="simple"  xlink:href="http://html.scirp.org/file/6-1040512x95.png"/></fig><fig id="fig2"  position="float"><label><xref ref-type="fig" rid="fig2">Figure 2</xref></label><caption><title> Example of the fifth-task project after the resource contention is leveled</title></caption><graphic mimetype="image"   position="float"  xlink:type="simple"  xlink:href="http://html.scirp.org/file/6-1040512x96.png"/></fig><p>computation time was longer than 10 hours for 20 jobs. We thus consider the development of approximate methods within a short computation time.</p></sec><sec id="s4"><title>4. Two Metaheuristics</title><p>We experiment with an optimization based on Genetic Algorithm (GA) and Simulated Annealing (SA), both of which are common metaheuristics.</p><sec id="s4_1"><title>4.1. Genetic Algorithm</title><p>We experiment with an optimization based on the GA developed in [<xref ref-type="bibr" rid="scirp.72145-ref6">6</xref>] , which is used to obtain an approximate solution.</p><p>Algorithm 1: Genetic Algorithm</p><p>STEP 1. Set mutation parameter and termination condition, <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/6-1040512x97.png" xlink:type="simple"/></inline-formula>and<inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/6-1040512x97.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/6-1040512x98.png" xlink:type="simple"/></inline-formula>, respectively.</p><p>STEP 2. Generate a random solution, <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/6-1040512x99.png" xlink:type="simple"/></inline-formula>, and create the earliest output times,<inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/6-1040512x99.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/6-1040512x100.png" xlink:type="simple"/></inline-formula>.</p><p>STEP 3. Focusing on a row vector of <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/6-1040512x101.png" xlink:type="simple"/></inline-formula> that gives the list of tasks for a single resource, split the vector into two. We then swap the two vectors, followed by generating a new solution,<inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/6-1040512x101.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/6-1040512x102.png" xlink:type="simple"/></inline-formula>.</p><p>STEP 4. If a mutation occurs having probability<inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/6-1040512x103.png" xlink:type="simple"/></inline-formula>, then proceed to STEP 5. Otherwise, i.e., if a mutation does not occur, then follow STEP 6.</p><p>STEP 5. Swap two tasks of <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/6-1040512x104.png" xlink:type="simple"/></inline-formula> at the same resource randomly.</p><p>STEP 6. Create the new earliest output times, <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/6-1040512x105.png" xlink:type="simple"/></inline-formula>using<inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/6-1040512x105.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/6-1040512x106.png" xlink:type="simple"/></inline-formula>.</p><p>STEP 7. If <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/6-1040512x107.png" xlink:type="simple"/></inline-formula> follows, then set <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/6-1040512x107.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/6-1040512x108.png" xlink:type="simple"/></inline-formula> and<inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/6-1040512x107.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/6-1040512x108.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/6-1040512x109.png" xlink:type="simple"/></inline-formula>.</p><p>STEP 8. Terminate if the termination condition is satisfied. If otherwise, return to STEP4.</p></sec><sec id="s4_2"><title>4.2. Simulated Annealing</title><p>SA [<xref ref-type="bibr" rid="scirp.72145-ref9">9</xref>] is known as an approach to efficiently obtain an approximate solution. We use the 2-opt neighborhood method [<xref ref-type="bibr" rid="scirp.72145-ref10">10</xref>] based on a local search to generate a neighboring solution.</p><p>Algorithm 2: Simulated Annealing</p><p>STEP 1. Initialize the temperature and cooling parameters, <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/6-1040512x110.png" xlink:type="simple"/></inline-formula>and<inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/6-1040512x110.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/6-1040512x111.png" xlink:type="simple"/></inline-formula>, respectively.</p><p>STEP 2. Generate a random solution, <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/6-1040512x112.png" xlink:type="simple"/></inline-formula>, and create the earliest output times,<inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/6-1040512x112.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/6-1040512x113.png" xlink:type="simple"/></inline-formula>.</p><p>STEP 3. Generate a neighboring solution, <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/6-1040512x114.png" xlink:type="simple"/></inline-formula>, and create the new earliest output times,<inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/6-1040512x114.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/6-1040512x115.png" xlink:type="simple"/></inline-formula>.</p><p>STEP 4. Calculate<inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/6-1040512x116.png" xlink:type="simple"/></inline-formula>.</p><p>STEP 5. If <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/6-1040512x117.png" xlink:type="simple"/></inline-formula> holds, then set <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/6-1040512x117.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/6-1040512x118.png" xlink:type="simple"/></inline-formula> and <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/6-1040512x117.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/6-1040512x118.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/6-1040512x119.png" xlink:type="simple"/></inline-formula> with probably 1. Otherwise, i.e., if <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/6-1040512x117.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/6-1040512x118.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/6-1040512x119.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/6-1040512x120.png" xlink:type="simple"/></inline-formula> holds, then set <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/6-1040512x117.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/6-1040512x118.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/6-1040512x119.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/6-1040512x120.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/6-1040512x121.png" xlink:type="simple"/></inline-formula> and <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/6-1040512x117.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/6-1040512x118.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/6-1040512x119.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/6-1040512x120.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/6-1040512x121.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/6-1040512x122.png" xlink:type="simple"/></inline-formula> with probably<inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/6-1040512x117.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/6-1040512x118.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/6-1040512x119.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/6-1040512x120.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/6-1040512x121.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/6-1040512x122.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/6-1040512x123.png" xlink:type="simple"/></inline-formula>.</p><p>STEP 6. Update the temperature parameter,<inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/6-1040512x124.png" xlink:type="simple"/></inline-formula>.The value of <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/6-1040512x124.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/6-1040512x125.png" xlink:type="simple"/></inline-formula> is a cooling parameter which decreases the temperature parameter,<inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/6-1040512x124.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/6-1040512x125.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/6-1040512x126.png" xlink:type="simple"/></inline-formula>.</p><p>STEP 7. Repeat STEPS3-6.</p><p>STEP 8. Terminate if the temperatures are sufficiently low. If otherwise, return to STEP3.</p></sec></sec><sec id="s5"><title>5. Approximate Ratio and Computation Time</title><p>We obtain solutions using the SA- and GA-based algorithms. We use a personal computer with the following execution environment:</p><p>・ machine: Dell Optiplex 9020;</p><p>・ CPU: Intel<sup>&#174;</sup> Core™ i7-4790 3.60 GHz;</p><p>・ OS: Microsoft Windows 7 Professional;</p><p>・ memory: 4.0 GB;</p><p>・ programming language: MATLAB R2015b.</p><p>The test cases for the numerical experiment are generated under the following conditions:</p><p>・ number of cases: 100;</p><p>・ number of resources,<inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/6-1040512x127.png" xlink:type="simple"/></inline-formula>: for 10, 15, and 20 tasks, we set the number of resources to 3, 5, and 7, respectively;</p><p>・ number of resources for task,<inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/6-1040512x128.png" xlink:type="simple"/></inline-formula>: uniformly random integer numbers;</p><p>・ duration time,<inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/6-1040512x129.png" xlink:type="simple"/></inline-formula>: uniformly random integer numbers.</p><p>We obtain approximate solutions using two metaheuristics. The temperature and cooling parameter are set to <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/6-1040512x130.png" xlink:type="simple"/></inline-formula> and<inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/6-1040512x130.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/6-1040512x131.png" xlink:type="simple"/></inline-formula>, respectively, for the SA-based algorithm. The mutation parameter and the end condition are set to <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/6-1040512x130.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/6-1040512x131.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/6-1040512x132.png" xlink:type="simple"/></inline-formula> and<inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/6-1040512x130.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/6-1040512x131.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/6-1040512x132.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/6-1040512x133.png" xlink:type="simple"/></inline-formula>, respectively, for the GA-based algorithm. We compare the exact and approximate solutions. The performance of the solution is shown in <xref ref-type="table" rid="table1">Table 1</xref> for the two metaheuristics. We can confirm that the performance of the solution using the GA-based algorithm is smaller than that using the SA-based algorithm. The average computation times are shown in <xref ref-type="fig" rid="fig3">Figure 3</xref>. We can confirm that the computation using the SA-based algorithm is faster than that using the GA-based algorithm. The computation time of the GA-based algorithm is more than16-fold longer than that of the SA-based algorithm. The average values of the solutions are shown in <xref ref-type="table" rid="table2">Table 2</xref>. If the number of tasks is 10 or 20, the values of the solutions using the two methods are not remarkably different; if the number of tasks is 30 or 40, the value of the solution using the GA-based algorithm is smaller than that of the SA-based algorithm. However, we should note</p><table-wrap id="table1" ><label><xref ref-type="table" rid="table1">Table 1</xref></label><caption><title> Performance of the solutions</title></caption><table><tbody><thead><tr><th align="center" valign="middle"  rowspan="2"  >Method</th><th align="center" valign="middle"  colspan="3"  >Number of tasks</th></tr></thead><tr><td align="center" valign="middle" >10</td><td align="center" valign="middle" >15</td><td align="center" valign="middle" >20</td></tr><tr><td align="center" valign="middle" >Simulated Annealing</td><td align="center" valign="middle" >1.001</td><td align="center" valign="middle" >1.002</td><td align="center" valign="middle" >1.006</td></tr><tr><td align="center" valign="middle" >Genetic Algorithm</td><td align="center" valign="middle" >1.000</td><td align="center" valign="middle" >1.001</td><td align="center" valign="middle" >1.000</td></tr></tbody></table></table-wrap><table-wrap id="table2" ><label><xref ref-type="table" rid="table2">Table 2</xref></label><caption><title> Average values of the solutions</title></caption><table><tbody><thead><tr><th align="center" valign="middle"  rowspan="2"  >Method</th><th align="center" valign="middle"  colspan="5"  >Number of tasks</th></tr></thead><tr><td align="center" valign="middle" >10</td><td align="center" valign="middle" >20</td><td align="center" valign="middle" >30</td><td align="center" valign="middle" >40</td><td align="center" valign="middle" >50</td></tr><tr><td align="center" valign="middle" >Simulated Annealing</td><td align="center" valign="middle" >155.335</td><td align="center" valign="middle" >260.48</td><td align="center" valign="middle" >365.485</td><td align="center" valign="middle" >467.925</td><td align="center" valign="middle" >563.795</td></tr><tr><td align="center" valign="middle" >Genetic Algorithm</td><td align="center" valign="middle" >155.215</td><td align="center" valign="middle" >259.055</td><td align="center" valign="middle" >361.755</td><td align="center" valign="middle" >465.45</td><td align="center" valign="middle" >568.955</td></tr></tbody></table></table-wrap><fig id="fig3"  position="float"><label><xref ref-type="fig" rid="fig3">Figure 3</xref></label><caption><title> Average computation times in seconds</title></caption><graphic mimetype="image"   position="float"  xlink:type="simple"  xlink:href="http://html.scirp.org/file/6-1040512x134.png"/></fig><p>here that the solution using the SA-based algorithm is better than that using the GA if the number of tasks is 50.</p></sec><sec id="s6"><title>6. Conclusions</title><p>This research has studied the planning of a “good-enough” schedule with leveling of resource contentions. We utilized an existing framework called the CCPM-MPL. The resolution framework was reduced to a combinatorial problem. We used SA- and GA-based algorithms to obtain approximate solutions within short time. Moreover, we used the 2-opt neighborhood to generate a neighboring solution in the SA-based algorithm. Comparing the two methods, the SA-based algorithm was beneficial in terms of computation time, whereas the latter was better in terms of the performance of the solution. In addition, when the number of tasks was 50, the value of the solution using the SA-based algorithm was better than that using the GA-based algorithm.</p><p>Developing an original heuristic to level resource contentions within a short computation time is our future work.</p></sec><sec id="s7"><title>Cite this paper</title><p>Yokoyama, H. and Goto, H. (2016) Resolution of Resource Contentions in the CCPM-MPL Using Simulated Annealing and Genetic Algorithm. American Journal of Operations Research, 6, 480-488. http://dx.doi.org/10.4236/ajor.2016.66044</p></sec></body><back><ref-list><title>References</title><ref id="scirp.72145-ref1"><label>1</label><mixed-citation publication-type="other" xlink:type="simple">Goto, H. (2017) Forward-Compatible Framework with Critical-Chain Project Management using a Max-Plus Linear Representation. OPSEARCH, 54, 16 p.. 
http://dx.doi.org/10.1007/s12597-016-0276-3</mixed-citation></ref><ref id="scirp.72145-ref2"><label>2</label><mixed-citation publication-type="other" xlink:type="simple">Goto, H., Truc, N.T.N. and Takahashi, H. (2013) Simple Representation of the Critical Chain Project Management Framework in a Max-Plus Linear Form. SICE Journal of Control, Measurement, and System Integration, 6, 341-344.  
http://dx.doi.org/10.9746/jcmsi.6.341</mixed-citation></ref><ref id="scirp.72145-ref3"><label>3</label><mixed-citation publication-type="other" xlink:type="simple">Goldratt, E.M. (1997) Critical Chain. North River Press, Great Barrington.</mixed-citation></ref><ref id="scirp.72145-ref4"><label>4</label><mixed-citation publication-type="other" xlink:type="simple">Leach, L.P. (2005) Critical Chain Project Management. 2nd Edition, Artech House, Boston.</mixed-citation></ref><ref id="scirp.72145-ref5"><label>5</label><mixed-citation publication-type="other" xlink:type="simple">Heidergott, B., Olsder, G.J. and Woude, L. (2006) Max Plus at Work: Modeling and Analysis of Synchronized Systems. Princeton University Press, New Jersey.</mixed-citation></ref><ref id="scirp.72145-ref6"><label>6</label><mixed-citation publication-type="other" xlink:type="simple">Koga, H., Goto, H. and Chiba, E. (2014) Resolution of Resource Conflicts in the CCPM Framework: Utilization of a Local Search Method or Genetic Algorithm, 50, 7-12. (In Japanese)</mixed-citation></ref><ref id="scirp.72145-ref7"><label>7</label><mixed-citation publication-type="other" xlink:type="simple">Yokoyama, H. and Goto, H. (2016) Resolution of Resource Contentions in the Critical Chain Project Management Based on Simulated Annealing. Proceedings of the 6th International Conference on Industrial Engineering and Operations Management, Kuala Lumpur, 8 March 2016, 29.</mixed-citation></ref><ref id="scirp.72145-ref8"><label>8</label><mixed-citation publication-type="other" xlink:type="simple">Koga, H., Goto, H. and Chiba, E. (2014) Resolution of Resource Conflicts in the CCPM Framework Using a Local Search Method. Proceedings of the IEEE International Conference on Industrial Engineering and Engineering Management, Bandar Sunway, 10 December 2014, 94-98. http://dx.doi.org/10.1109/ieem.2014.7058607</mixed-citation></ref><ref id="scirp.72145-ref9"><label>9</label><mixed-citation publication-type="other" xlink:type="simple">Kirkpatrick, S., Gelatt, C.D. and Vecchi, M.P. (1983) Optimization by Simulated Annealing. Science, 220, 671-680. http://dx.doi.org/10.1126/science.220.4598.671</mixed-citation></ref><ref id="scirp.72145-ref10"><label>10</label><mixed-citation publication-type="other" xlink:type="simple">Croes, G.A. (1958) A Method for Solving Traveling-Salesman Problems. Operation Research, 6, 791-812. http://dx.doi.org/10.1287/opre.6.6.791</mixed-citation></ref></ref-list></back></article>