Final fix - Project Complete
This commit is contained in:
parent
5fe1352f2d
commit
7c6be2385e
5 changed files with 445 additions and 25 deletions
403
src/main/java/COO-JobShop.ucls
Normal file
403
src/main/java/COO-JobShop.ucls
Normal file
|
@ -0,0 +1,403 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<class-diagram version="1.2.4" icons="true" always-add-relationships="false" generalizations="true" realizations="true"
|
||||||
|
associations="true" dependencies="false" nesting-relationships="true" router="FAN">
|
||||||
|
<class id="1" language="java" name="jobshop.Main" project="JSP" file="/JSP/src/main/java/jobshop/Main.java"
|
||||||
|
binary="false" corner="BOTTOM_RIGHT">
|
||||||
|
<position height="-1" width="-1" x="886" y="338"/>
|
||||||
|
<display autosize="true" stereotype="true" package="true" initial-value="false" signature="true"
|
||||||
|
sort-features="false" accessors="true" visibility="true">
|
||||||
|
<attributes public="true" package="true" protected="true" private="true" static="true"/>
|
||||||
|
<operations public="true" package="true" protected="true" private="true" static="true"/>
|
||||||
|
</display>
|
||||||
|
</class>
|
||||||
|
<class id="2" language="java" name="jobshop.Encoding" project="JSP" file="/JSP/src/main/java/jobshop/Encoding.java"
|
||||||
|
binary="false" corner="BOTTOM_RIGHT">
|
||||||
|
<position height="-1" width="-1" x="399" y="285"/>
|
||||||
|
<display autosize="true" stereotype="true" package="true" initial-value="false" signature="true"
|
||||||
|
sort-features="false" accessors="true" visibility="true">
|
||||||
|
<attributes public="true" package="true" protected="true" private="true" static="true"/>
|
||||||
|
<operations public="true" package="true" protected="true" private="true" static="true"/>
|
||||||
|
</display>
|
||||||
|
</class>
|
||||||
|
<class id="3" language="java" name="jobshop.encodings.JobNumbers" project="JSP"
|
||||||
|
file="/JSP/src/main/java/jobshop/encodings/JobNumbers.java" binary="false" corner="BOTTOM_RIGHT">
|
||||||
|
<position height="-1" width="-1" x="164" y="543"/>
|
||||||
|
<display autosize="true" stereotype="true" package="true" initial-value="false" signature="true"
|
||||||
|
sort-features="false" accessors="true" visibility="true">
|
||||||
|
<attributes public="true" package="true" protected="true" private="true" static="true"/>
|
||||||
|
<operations public="true" package="true" protected="true" private="true" static="true"/>
|
||||||
|
</display>
|
||||||
|
</class>
|
||||||
|
<class id="4" language="java" name="jobshop.solvers.DescentSolver" project="JSP"
|
||||||
|
file="/JSP/src/main/java/jobshop/solvers/DescentSolver.java" binary="false" corner="BOTTOM_RIGHT">
|
||||||
|
<position height="-1" width="-1" x="1494" y="749"/>
|
||||||
|
<display autosize="true" stereotype="true" package="true" initial-value="false" signature="true"
|
||||||
|
sort-features="false" accessors="true" visibility="true">
|
||||||
|
<attributes public="true" package="true" protected="true" private="true" static="true"/>
|
||||||
|
<operations public="true" package="true" protected="true" private="true" static="true"/>
|
||||||
|
</display>
|
||||||
|
</class>
|
||||||
|
<enumeration id="5" language="java" name="jobshop.solvers.GreedySolver.PriorityRule" project="JSP"
|
||||||
|
file="/JSP/src/main/java/jobshop/solvers/GreedySolver.java" binary="false" corner="BOTTOM_RIGHT">
|
||||||
|
<position height="-1" width="-1" x="2049" y="342"/>
|
||||||
|
<display autosize="true" stereotype="true" package="true" initial-value="false" signature="true"
|
||||||
|
sort-features="false" accessors="true" visibility="true">
|
||||||
|
<attributes public="true" package="true" protected="true" private="true" static="true"/>
|
||||||
|
<operations public="true" package="true" protected="true" private="true" static="true"/>
|
||||||
|
</display>
|
||||||
|
</enumeration>
|
||||||
|
<class id="6" language="java" name="jobshop.BestKnownResult" project="JSP"
|
||||||
|
file="/JSP/src/main/java/jobshop/BestKnownResult.java" binary="false" corner="BOTTOM_RIGHT">
|
||||||
|
<position height="-1" width="-1" x="1200" y="258"/>
|
||||||
|
<display autosize="true" stereotype="true" package="true" initial-value="false" signature="true"
|
||||||
|
sort-features="false" accessors="true" visibility="true">
|
||||||
|
<attributes public="true" package="true" protected="true" private="true" static="true"/>
|
||||||
|
<operations public="true" package="true" protected="true" private="true" static="true"/>
|
||||||
|
</display>
|
||||||
|
</class>
|
||||||
|
<class id="7" language="java" name="jobshop.Instance" project="JSP" file="/JSP/src/main/java/jobshop/Instance.java"
|
||||||
|
binary="false" corner="BOTTOM_RIGHT">
|
||||||
|
<position height="-1" width="-1" x="659" y="601"/>
|
||||||
|
<display autosize="true" stereotype="true" package="true" initial-value="false" signature="true"
|
||||||
|
sort-features="false" accessors="true" visibility="true">
|
||||||
|
<attributes public="true" package="true" protected="true" private="true" static="true"/>
|
||||||
|
<operations public="true" package="true" protected="true" private="true" static="true"/>
|
||||||
|
</display>
|
||||||
|
</class>
|
||||||
|
<class id="8" language="java" name="jobshop.solvers.DescentSolver.Swap" project="JSP"
|
||||||
|
file="/JSP/src/main/java/jobshop/solvers/DescentSolver.java" binary="false" corner="BOTTOM_RIGHT">
|
||||||
|
<position height="-1" width="-1" x="2005" y="983"/>
|
||||||
|
<display autosize="true" stereotype="true" package="true" initial-value="false" signature="true"
|
||||||
|
sort-features="false" accessors="true" visibility="true">
|
||||||
|
<attributes public="true" package="true" protected="true" private="true" static="true"/>
|
||||||
|
<operations public="true" package="true" protected="true" private="true" static="true"/>
|
||||||
|
</display>
|
||||||
|
</class>
|
||||||
|
<class id="9" language="java" name="jobshop.Result" project="JSP" file="/JSP/src/main/java/jobshop/Result.java"
|
||||||
|
binary="false" corner="BOTTOM_RIGHT">
|
||||||
|
<position height="-1" width="-1" x="1001" y="694"/>
|
||||||
|
<display autosize="true" stereotype="true" package="true" initial-value="false" signature="true"
|
||||||
|
sort-features="false" accessors="true" visibility="true">
|
||||||
|
<attributes public="true" package="true" protected="true" private="true" static="true"/>
|
||||||
|
<operations public="true" package="true" protected="true" private="true" static="true"/>
|
||||||
|
</display>
|
||||||
|
</class>
|
||||||
|
<class id="10" language="java" name="jobshop.DebuggingMain" project="JSP"
|
||||||
|
file="/JSP/src/main/java/jobshop/DebuggingMain.java" binary="false" corner="BOTTOM_RIGHT">
|
||||||
|
<position height="-1" width="-1" x="1014" y="215"/>
|
||||||
|
<display autosize="true" stereotype="true" package="true" initial-value="false" signature="true"
|
||||||
|
sort-features="false" accessors="true" visibility="true">
|
||||||
|
<attributes public="true" package="true" protected="true" private="true" static="true"/>
|
||||||
|
<operations public="true" package="true" protected="true" private="true" static="true"/>
|
||||||
|
</display>
|
||||||
|
</class>
|
||||||
|
<class id="11" language="java" name="jobshop.solvers.RandomSolver" project="JSP"
|
||||||
|
file="/JSP/src/main/java/jobshop/solvers/RandomSolver.java" binary="false" corner="BOTTOM_RIGHT">
|
||||||
|
<position height="-1" width="-1" x="1450" y="414"/>
|
||||||
|
<display autosize="true" stereotype="true" package="true" initial-value="false" signature="true"
|
||||||
|
sort-features="false" accessors="true" visibility="true">
|
||||||
|
<attributes public="true" package="true" protected="true" private="true" static="true"/>
|
||||||
|
<operations public="true" package="true" protected="true" private="true" static="true"/>
|
||||||
|
</display>
|
||||||
|
</class>
|
||||||
|
<class id="12" language="java" name="jobshop.solvers.GreedySolver" project="JSP"
|
||||||
|
file="/JSP/src/main/java/jobshop/solvers/GreedySolver.java" binary="false" corner="BOTTOM_RIGHT">
|
||||||
|
<position height="-1" width="-1" x="1452" y="576"/>
|
||||||
|
<display autosize="true" stereotype="true" package="true" initial-value="false" signature="true"
|
||||||
|
sort-features="false" accessors="true" visibility="true">
|
||||||
|
<attributes public="true" package="true" protected="true" private="true" static="true"/>
|
||||||
|
<operations public="true" package="true" protected="true" private="true" static="true"/>
|
||||||
|
</display>
|
||||||
|
</class>
|
||||||
|
<interface id="13" language="java" name="jobshop.Solver" project="JSP" file="/JSP/src/main/java/jobshop/Solver.java"
|
||||||
|
binary="false" corner="BOTTOM_RIGHT">
|
||||||
|
<position height="-1" width="-1" x="1026" y="537"/>
|
||||||
|
<display autosize="true" stereotype="true" package="true" initial-value="false" signature="true"
|
||||||
|
sort-features="false" accessors="true" visibility="true">
|
||||||
|
<attributes public="true" package="true" protected="true" private="true" static="true"/>
|
||||||
|
<operations public="true" package="true" protected="true" private="true" static="true"/>
|
||||||
|
</display>
|
||||||
|
</interface>
|
||||||
|
<enumeration id="14" language="java" name="jobshop.Result.ExitCause" project="JSP"
|
||||||
|
file="/JSP/src/main/java/jobshop/Result.java" binary="false" corner="BOTTOM_RIGHT">
|
||||||
|
<position height="-1" width="-1" x="1000" y="857"/>
|
||||||
|
<display autosize="true" stereotype="true" package="true" initial-value="false" signature="true"
|
||||||
|
sort-features="false" accessors="true" visibility="true">
|
||||||
|
<attributes public="true" package="true" protected="true" private="true" static="true"/>
|
||||||
|
<operations public="true" package="true" protected="true" private="true" static="true"/>
|
||||||
|
</display>
|
||||||
|
</enumeration>
|
||||||
|
<class id="15" language="java" name="jobshop.encodings.ResourceOrder" project="JSP"
|
||||||
|
file="/JSP/src/main/java/jobshop/encodings/ResourceOrder.java" binary="false" corner="BOTTOM_RIGHT">
|
||||||
|
<position height="-1" width="-1" x="402" y="539"/>
|
||||||
|
<display autosize="true" stereotype="true" package="true" initial-value="false" signature="true"
|
||||||
|
sort-features="false" accessors="true" visibility="true">
|
||||||
|
<attributes public="true" package="true" protected="true" private="true" static="true"/>
|
||||||
|
<operations public="true" package="true" protected="true" private="true" static="true"/>
|
||||||
|
</display>
|
||||||
|
</class>
|
||||||
|
<enumeration id="16" language="java" name="jobshop.solvers.GreedySolver.PriorityESTRule" project="JSP"
|
||||||
|
file="/JSP/src/main/java/jobshop/solvers/GreedySolver.java" binary="false" corner="BOTTOM_RIGHT">
|
||||||
|
<position height="-1" width="-1" x="2109" y="585"/>
|
||||||
|
<display autosize="true" stereotype="true" package="true" initial-value="false" signature="true"
|
||||||
|
sort-features="false" accessors="true" visibility="true">
|
||||||
|
<attributes public="true" package="true" protected="true" private="true" static="true"/>
|
||||||
|
<operations public="true" package="true" protected="true" private="true" static="true"/>
|
||||||
|
</display>
|
||||||
|
</enumeration>
|
||||||
|
<class id="17" language="java" name="jobshop.Schedule" project="JSP" file="/JSP/src/main/java/jobshop/Schedule.java"
|
||||||
|
binary="false" corner="BOTTOM_RIGHT">
|
||||||
|
<position height="-1" width="-1" x="665" y="906"/>
|
||||||
|
<display autosize="true" stereotype="true" package="true" initial-value="false" signature="true"
|
||||||
|
sort-features="false" accessors="true" visibility="true">
|
||||||
|
<attributes public="true" package="true" protected="true" private="true" static="true"/>
|
||||||
|
<operations public="true" package="true" protected="true" private="true" static="true"/>
|
||||||
|
</display>
|
||||||
|
</class>
|
||||||
|
<class id="18" language="java" name="jobshop.solvers.BasicSolver" project="JSP"
|
||||||
|
file="/JSP/src/main/java/jobshop/solvers/BasicSolver.java" binary="false" corner="BOTTOM_RIGHT">
|
||||||
|
<position height="-1" width="-1" x="1441" y="270"/>
|
||||||
|
<display autosize="true" stereotype="true" package="true" initial-value="false" signature="true"
|
||||||
|
sort-features="false" accessors="true" visibility="true">
|
||||||
|
<attributes public="true" package="true" protected="true" private="true" static="true"/>
|
||||||
|
<operations public="true" package="true" protected="true" private="true" static="true"/>
|
||||||
|
</display>
|
||||||
|
</class>
|
||||||
|
<class id="19" language="java" name="jobshop.solvers.DescentSolver.Block" project="JSP"
|
||||||
|
file="/JSP/src/main/java/jobshop/solvers/DescentSolver.java" binary="false" corner="BOTTOM_RIGHT">
|
||||||
|
<position height="150" width="102" x="1919" y="732"/>
|
||||||
|
<display autosize="false" stereotype="true" package="true" initial-value="false" signature="true"
|
||||||
|
sort-features="false" accessors="true" visibility="true">
|
||||||
|
<attributes public="true" package="true" protected="true" private="true" static="true"/>
|
||||||
|
<operations public="true" package="true" protected="true" private="true" static="true"/>
|
||||||
|
</display>
|
||||||
|
</class>
|
||||||
|
<class id="20" language="java" name="jobshop.solvers.TabooSolver" project="JSP"
|
||||||
|
file="/JSP/src/main/java/jobshop/solvers/TabooSolver.java" binary="false" corner="BOTTOM_RIGHT">
|
||||||
|
<position height="-1" width="-1" x="1498" y="974"/>
|
||||||
|
<display autosize="true" stereotype="true" package="true" initial-value="false" signature="true"
|
||||||
|
sort-features="false" accessors="true" visibility="true">
|
||||||
|
<attributes public="true" package="true" protected="true" private="true" static="true"/>
|
||||||
|
<operations public="true" package="true" protected="true" private="true" static="true"/>
|
||||||
|
</display>
|
||||||
|
</class>
|
||||||
|
<class id="21" language="java" name="jobshop.encodings.Task" project="JSP"
|
||||||
|
file="/JSP/src/main/java/jobshop/encodings/Task.java" binary="false" corner="BOTTOM_RIGHT">
|
||||||
|
<position height="-1" width="-1" x="405" y="777"/>
|
||||||
|
<display autosize="true" stereotype="true" package="true" initial-value="false" signature="true"
|
||||||
|
sort-features="false" accessors="true" visibility="true">
|
||||||
|
<attributes public="true" package="true" protected="true" private="true" static="true"/>
|
||||||
|
<operations public="true" package="true" protected="true" private="true" static="true"/>
|
||||||
|
</display>
|
||||||
|
</class>
|
||||||
|
<association id="22">
|
||||||
|
<end type="SOURCE" refId="9" navigable="false">
|
||||||
|
<attribute id="23" name="instance">
|
||||||
|
<position height="0" width="0" x="0" y="0"/>
|
||||||
|
</attribute>
|
||||||
|
<multiplicity id="24" minimum="0" maximum="1">
|
||||||
|
<position height="0" width="0" x="0" y="0"/>
|
||||||
|
</multiplicity>
|
||||||
|
</end>
|
||||||
|
<end type="TARGET" refId="7" navigable="true"/>
|
||||||
|
<display labels="true" multiplicity="true"/>
|
||||||
|
</association>
|
||||||
|
<nesting id="25">
|
||||||
|
<end type="SOURCE" refId="9"/>
|
||||||
|
<end type="TARGET" refId="14"/>
|
||||||
|
</nesting>
|
||||||
|
<generalization id="26">
|
||||||
|
<end type="SOURCE" refId="15"/>
|
||||||
|
<end type="TARGET" refId="2"/>
|
||||||
|
</generalization>
|
||||||
|
<realization id="27">
|
||||||
|
<end type="SOURCE" refId="11"/>
|
||||||
|
<end type="TARGET" refId="13"/>
|
||||||
|
</realization>
|
||||||
|
<association id="28">
|
||||||
|
<end type="SOURCE" refId="15" navigable="false">
|
||||||
|
<attribute id="29" name="tasksByMachine">
|
||||||
|
<position height="0" width="0" x="-61" y="-102"/>
|
||||||
|
</attribute>
|
||||||
|
<multiplicity id="30" minimum="0" maximum="2147483647">
|
||||||
|
<position height="0" width="0" x="-61" y="-102"/>
|
||||||
|
</multiplicity>
|
||||||
|
</end>
|
||||||
|
<end type="TARGET" refId="21" navigable="true"/>
|
||||||
|
<display labels="true" multiplicity="true"/>
|
||||||
|
</association>
|
||||||
|
<nesting id="31">
|
||||||
|
<end type="SOURCE" refId="4"/>
|
||||||
|
<end type="TARGET" refId="19"/>
|
||||||
|
</nesting>
|
||||||
|
<realization id="32">
|
||||||
|
<end type="SOURCE" refId="12"/>
|
||||||
|
<end type="TARGET" refId="13"/>
|
||||||
|
</realization>
|
||||||
|
<association id="33">
|
||||||
|
<end type="SOURCE" refId="20" navigable="false">
|
||||||
|
<attribute id="34" name="priorityRule">
|
||||||
|
<position height="17" width="62" x="1836" y="386"/>
|
||||||
|
</attribute>
|
||||||
|
<multiplicity id="35" minimum="0" maximum="1">
|
||||||
|
<position height="15" width="23" x="1897" y="337"/>
|
||||||
|
</multiplicity>
|
||||||
|
</end>
|
||||||
|
<end type="TARGET" refId="5" navigable="true"/>
|
||||||
|
<display labels="true" multiplicity="true"/>
|
||||||
|
</association>
|
||||||
|
<generalization id="36">
|
||||||
|
<end type="SOURCE" refId="3"/>
|
||||||
|
<end type="TARGET" refId="2"/>
|
||||||
|
</generalization>
|
||||||
|
<realization id="37">
|
||||||
|
<end type="SOURCE" refId="4"/>
|
||||||
|
<end type="TARGET" refId="13"/>
|
||||||
|
</realization>
|
||||||
|
<association id="38">
|
||||||
|
<end type="SOURCE" refId="12" navigable="false">
|
||||||
|
<attribute id="39" name="priorityRule">
|
||||||
|
<position height="17" width="62" x="1842" y="331"/>
|
||||||
|
</attribute>
|
||||||
|
<multiplicity id="40" minimum="0" maximum="1">
|
||||||
|
<position height="0" width="0" x="93" y="-580"/>
|
||||||
|
</multiplicity>
|
||||||
|
</end>
|
||||||
|
<end type="TARGET" refId="5" navigable="true"/>
|
||||||
|
<display labels="true" multiplicity="true"/>
|
||||||
|
</association>
|
||||||
|
<association id="41">
|
||||||
|
<end type="SOURCE" refId="4" navigable="false">
|
||||||
|
<attribute id="42" name="priorityRule">
|
||||||
|
<position height="17" width="62" x="1813" y="364"/>
|
||||||
|
</attribute>
|
||||||
|
<multiplicity id="43" minimum="0" maximum="1">
|
||||||
|
<position height="0" width="0" x="93" y="-580"/>
|
||||||
|
</multiplicity>
|
||||||
|
</end>
|
||||||
|
<end type="TARGET" refId="5" navigable="true"/>
|
||||||
|
<display labels="true" multiplicity="true"/>
|
||||||
|
</association>
|
||||||
|
<association id="44">
|
||||||
|
<end type="SOURCE" refId="2" navigable="false">
|
||||||
|
<attribute id="45" name="instance">
|
||||||
|
<position height="0" width="0" x="0" y="0"/>
|
||||||
|
</attribute>
|
||||||
|
<multiplicity id="46" minimum="0" maximum="1">
|
||||||
|
<position height="0" width="0" x="0" y="0"/>
|
||||||
|
</multiplicity>
|
||||||
|
</end>
|
||||||
|
<end type="TARGET" refId="7" navigable="true"/>
|
||||||
|
<display labels="true" multiplicity="true"/>
|
||||||
|
</association>
|
||||||
|
<nesting id="47">
|
||||||
|
<end type="SOURCE" refId="12"/>
|
||||||
|
<end type="TARGET" refId="16"/>
|
||||||
|
</nesting>
|
||||||
|
<association id="48">
|
||||||
|
<end type="SOURCE" refId="12" navigable="false">
|
||||||
|
<attribute id="49" name="priorityESTRule">
|
||||||
|
<position height="17" width="83" x="1837" y="597"/>
|
||||||
|
</attribute>
|
||||||
|
<multiplicity id="50" minimum="0" maximum="1">
|
||||||
|
<position height="0" width="0" x="-215" y="-338"/>
|
||||||
|
</multiplicity>
|
||||||
|
</end>
|
||||||
|
<end type="TARGET" refId="16" navigable="true"/>
|
||||||
|
<display labels="true" multiplicity="true"/>
|
||||||
|
</association>
|
||||||
|
<realization id="51">
|
||||||
|
<end type="SOURCE" refId="18"/>
|
||||||
|
<end type="TARGET" refId="13"/>
|
||||||
|
</realization>
|
||||||
|
<nesting id="52">
|
||||||
|
<end type="SOURCE" refId="4"/>
|
||||||
|
<end type="TARGET" refId="8"/>
|
||||||
|
</nesting>
|
||||||
|
<nesting id="53">
|
||||||
|
<end type="SOURCE" refId="12"/>
|
||||||
|
<end type="TARGET" refId="5"/>
|
||||||
|
</nesting>
|
||||||
|
<association id="54">
|
||||||
|
<end type="SOURCE" refId="4" navigable="false">
|
||||||
|
<attribute id="55" name="priorityESTRule">
|
||||||
|
<position height="17" width="83" x="1866" y="652"/>
|
||||||
|
</attribute>
|
||||||
|
<multiplicity id="56" minimum="0" maximum="1">
|
||||||
|
<position height="0" width="0" x="-215" y="-338"/>
|
||||||
|
</multiplicity>
|
||||||
|
</end>
|
||||||
|
<end type="TARGET" refId="16" navigable="true"/>
|
||||||
|
<display labels="true" multiplicity="true"/>
|
||||||
|
</association>
|
||||||
|
<realization id="57">
|
||||||
|
<end type="SOURCE" refId="20"/>
|
||||||
|
<end type="TARGET" refId="13"/>
|
||||||
|
</realization>
|
||||||
|
<association id="58">
|
||||||
|
<end type="SOURCE" refId="17" navigable="false">
|
||||||
|
<attribute id="59" name="pb">
|
||||||
|
<position height="0" width="0" x="0" y="0"/>
|
||||||
|
</attribute>
|
||||||
|
<multiplicity id="60" minimum="0" maximum="1">
|
||||||
|
<position height="0" width="0" x="0" y="0"/>
|
||||||
|
</multiplicity>
|
||||||
|
</end>
|
||||||
|
<end type="TARGET" refId="7" navigable="true"/>
|
||||||
|
<display labels="true" multiplicity="true"/>
|
||||||
|
</association>
|
||||||
|
<association id="61">
|
||||||
|
<end type="SOURCE" refId="9" navigable="false">
|
||||||
|
<attribute id="62" name="cause">
|
||||||
|
<position height="0" width="0" x="-20" y="-104"/>
|
||||||
|
</attribute>
|
||||||
|
<multiplicity id="63" minimum="0" maximum="1">
|
||||||
|
<position height="0" width="0" x="-20" y="-104"/>
|
||||||
|
</multiplicity>
|
||||||
|
</end>
|
||||||
|
<end type="TARGET" refId="14" navigable="true"/>
|
||||||
|
<display labels="true" multiplicity="true"/>
|
||||||
|
</association>
|
||||||
|
<association id="64">
|
||||||
|
<end type="SOURCE" refId="1" navigable="false">
|
||||||
|
<attribute id="65" name="solvers">
|
||||||
|
<position height="0" width="0" x="-746" y="308"/>
|
||||||
|
</attribute>
|
||||||
|
<multiplicity id="66" minimum="0" maximum="2147483647">
|
||||||
|
<position height="0" width="0" x="-746" y="308"/>
|
||||||
|
</multiplicity>
|
||||||
|
</end>
|
||||||
|
<end type="TARGET" refId="13" navigable="true"/>
|
||||||
|
<display labels="true" multiplicity="true"/>
|
||||||
|
</association>
|
||||||
|
<association id="67">
|
||||||
|
<end type="SOURCE" refId="20" navigable="false">
|
||||||
|
<attribute id="68" name="priorityESTRule">
|
||||||
|
<position height="17" width="83" x="1829" y="548"/>
|
||||||
|
</attribute>
|
||||||
|
<multiplicity id="69" minimum="0" maximum="1">
|
||||||
|
<position height="0" width="0" x="-215" y="-338"/>
|
||||||
|
</multiplicity>
|
||||||
|
</end>
|
||||||
|
<end type="TARGET" refId="16" navigable="true"/>
|
||||||
|
<display labels="true" multiplicity="true"/>
|
||||||
|
</association>
|
||||||
|
<association id="70">
|
||||||
|
<end type="SOURCE" refId="9" navigable="false">
|
||||||
|
<attribute id="71" name="schedule">
|
||||||
|
<position height="0" width="0" x="0" y="0"/>
|
||||||
|
</attribute>
|
||||||
|
<multiplicity id="72" minimum="0" maximum="1">
|
||||||
|
<position height="0" width="0" x="0" y="0"/>
|
||||||
|
</multiplicity>
|
||||||
|
</end>
|
||||||
|
<end type="TARGET" refId="17" navigable="true"/>
|
||||||
|
<display labels="true" multiplicity="true"/>
|
||||||
|
</association>
|
||||||
|
<classifier-display autosize="true" stereotype="true" package="true" initial-value="false" signature="true"
|
||||||
|
sort-features="false" accessors="true" visibility="true">
|
||||||
|
<attributes public="true" package="true" protected="true" private="true" static="true"/>
|
||||||
|
<operations public="true" package="true" protected="true" private="true" static="true"/>
|
||||||
|
</classifier-display>
|
||||||
|
<association-display labels="true" multiplicity="true"/>
|
||||||
|
</class-diagram>
|
|
@ -20,21 +20,29 @@ import net.sourceforge.argparse4j.inf.Namespace;
|
||||||
|
|
||||||
public class Main {
|
public class Main {
|
||||||
// ******************************************** Main - Arguments ************************************************ //
|
// ******************************************** Main - Arguments ************************************************ //
|
||||||
|
// All instances
|
||||||
|
// --instance aaa1 ft06 ft10 ft20 la01 la02 la03 la04 la05 la06 la07 la08 la09 la10 la11 la12 la13 la14 la15 la16 la17 la18 la19 la20 la21 la22 la23 la24 la25 la26 la27 la28 la29 la30 la31 la32 la33 la34 la35 la36 la37 la38 la39 la40
|
||||||
|
// --instance ft06 ft10 ft20 la01 la06 la11 la16 la21 la26 la31 la36
|
||||||
|
|
||||||
// *** Basic + Random *** //
|
// *** Basic + Random *** //
|
||||||
// --solver basic random --instance aaa1 ft06 ft10 ft20 la01 la02 la03 la04 la05 la06 la07 la08 la09
|
// --solver basic random
|
||||||
|
|
||||||
// *** Greedy Solvers *** //
|
// *** Greedy Solvers *** //
|
||||||
// --solver Greedy-SPT Greedy-LRPT Greedy-EST_SPT Greedy-EST_LRPT --instance aaa1 ft06 ft10 ft20 la01 la02 la03 la04 la05 la06 la07 la08 la09
|
// --solver Greedy-SPT Greedy-LRPT Greedy-EST_SPT Greedy-EST_LRPT
|
||||||
|
|
||||||
// *** Descent Solvers *** //
|
// *** Descent Solvers *** //
|
||||||
// --solver Descent-SPT Descent-LRPT Descent-EST_SPT Descent-EST_LRPT --instance aaa1 ft06 ft10 ft20 la01 la02 la03 la04 la05 la06 la07 la08 la09
|
// --solver Descent-SPT Descent-LRPT Descent-EST_SPT Descent-EST_LRPT
|
||||||
|
|
||||||
// *** Taboo Solvers *** //
|
// *** Taboo Solvers *** //
|
||||||
// --solver Taboo-EST_LRPT(1,1) --instance aaa1 ft06 ft10 ft20 la01 la02 la03 la04 la05 la06 la07 la08 la09
|
// --solver Taboo-EST_LRPT(1,1)
|
||||||
// --solver Taboo-EST_LRPT(1,10) Taboo-EST_LRPT(2,10) Taboo-EST_LRPT(3,10) Taboo-EST_LRPT(4,10) Taboo-EST_LRPT(5,10) Taboo-EST_LRPT(6,10) Taboo-EST_LRPT(7,10) Taboo-EST_LRPT(8,10) Taboo-EST_LRPT(9,10) Taboo-EST_LRPT(10,10) --instance aaa1 ft06 ft10 ft20 la01 la02 la03 la04 la05 la06 la07 la08 la09
|
// --solver Taboo-EST_LRPT(1,10) Taboo-EST_LRPT(2,10) Taboo-EST_LRPT(5,10) Taboo-EST_LRPT(10,10)
|
||||||
// --solver Taboo-EST_LRPT(1,100) Taboo-EST_LRPT(6,100) Taboo-EST_LRPT(8,100) Taboo-EST_LRPT(10,100) Taboo-EST_LRPT(12,100) Taboo-EST_LRPT(14,100) Taboo-EST_LRPT(20,100) Taboo-EST_LRPT(50,100) Taboo-EST_LRPT(100,100) --instance aaa1 ft06 ft10 ft20 la01 la02 la03 la04 la05 la06 la07 la08 la09
|
// --solver Taboo-EST_LRPT(1,100) Taboo-EST_LRPT(6,100) Taboo-EST_LRPT(8,100) Taboo-EST_LRPT(10,100) Taboo-EST_LRPT(12,100) Taboo-EST_LRPT(14,100) Taboo-EST_LRPT(20,100) Taboo-EST_LRPT(50,100) Taboo-EST_LRPT(100,100)
|
||||||
// --solver Taboo-EST_LRPT(1,1000) Taboo-EST_LRPT(6,1000) Taboo-EST_LRPT(8,1000) Taboo-EST_LRPT(10,1000) Taboo-EST_LRPT(12,1000) Taboo-EST_LRPT(14,1000) Taboo-EST_LRPT(20,1000) Taboo-EST_LRPT(50,1000) Taboo-EST_LRPT(100,1000) --instance aaa1 ft06 ft10 ft20 la01 la02 la03 la04 la05 la06 la07 la08 la09
|
// --solver Taboo-EST_LRPT(1,1000) Taboo-EST_LRPT(6,1000) Taboo-EST_LRPT(8,1000) Taboo-EST_LRPT(10,1000) Taboo-EST_LRPT(12,1000) Taboo-EST_LRPT(14,1000) Taboo-EST_LRPT(20,1000) Taboo-EST_LRPT(50,1000) Taboo-EST_LRPT(100,1000)
|
||||||
// --solver Taboo-EST_LRPT(1,5000) Taboo-EST_LRPT(6,5000) Taboo-EST_LRPT(8,5000) Taboo-EST_LRPT(10,5000) Taboo-EST_LRPT(12,5000) Taboo-EST_LRPT(14,5000) Taboo-EST_LRPT(20,5000) Taboo-EST_LRPT(50,5000) Taboo-EST_LRPT(100,5000) --instance aaa1 ft06 ft10 ft20 la01 la02 la03 la04 la05 la06 la07 la08 la09
|
// --solver Taboo-EST_LRPT(1,5000) Taboo-EST_LRPT(6,5000) Taboo-EST_LRPT(8,5000) Taboo-EST_LRPT(10,5000) Taboo-EST_LRPT(12,5000) Taboo-EST_LRPT(14,5000) Taboo-EST_LRPT(20,5000) Taboo-EST_LRPT(50,5000) Taboo-EST_LRPT(100,5000)
|
||||||
|
|
||||||
|
// *** Method comparison *** //
|
||||||
|
// --solver Greedy-SPT Descent-SPT Taboo-SPT(10,5000)
|
||||||
|
// --solver Greedy-LRPT Descent-LRPT Taboo-LRPT(10,5000)
|
||||||
|
|
||||||
/** All solvers available in this program */
|
/** All solvers available in this program */
|
||||||
private static HashMap<String, Solver> solvers;
|
private static HashMap<String, Solver> solvers;
|
||||||
|
@ -64,13 +72,7 @@ public class Main {
|
||||||
|
|
||||||
solvers.put("Taboo-EST_LRPT(1,10)", new TabooSolver(EST_LRPT, 1, 10));
|
solvers.put("Taboo-EST_LRPT(1,10)", new TabooSolver(EST_LRPT, 1, 10));
|
||||||
solvers.put("Taboo-EST_LRPT(2,10)", new TabooSolver(EST_LRPT, 2, 10));
|
solvers.put("Taboo-EST_LRPT(2,10)", new TabooSolver(EST_LRPT, 2, 10));
|
||||||
solvers.put("Taboo-EST_LRPT(3,10)", new TabooSolver(EST_LRPT, 3, 10));
|
|
||||||
solvers.put("Taboo-EST_LRPT(4,10)", new TabooSolver(EST_LRPT, 4, 10));
|
|
||||||
solvers.put("Taboo-EST_LRPT(5,10)", new TabooSolver(EST_LRPT, 5, 10));
|
solvers.put("Taboo-EST_LRPT(5,10)", new TabooSolver(EST_LRPT, 5, 10));
|
||||||
solvers.put("Taboo-EST_LRPT(6,10)", new TabooSolver(EST_LRPT, 6, 10));
|
|
||||||
solvers.put("Taboo-EST_LRPT(7,10)", new TabooSolver(EST_LRPT, 7, 10));
|
|
||||||
solvers.put("Taboo-EST_LRPT(8,10)", new TabooSolver(EST_LRPT, 8, 10));
|
|
||||||
solvers.put("Taboo-EST_LRPT(9,10)", new TabooSolver(EST_LRPT, 9, 10));
|
|
||||||
solvers.put("Taboo-EST_LRPT(10,10)", new TabooSolver(EST_LRPT, 10, 10));
|
solvers.put("Taboo-EST_LRPT(10,10)", new TabooSolver(EST_LRPT, 10, 10));
|
||||||
|
|
||||||
solvers.put("Taboo-EST_LRPT(1,100)", new TabooSolver(EST_LRPT, 1, 100));
|
solvers.put("Taboo-EST_LRPT(1,100)", new TabooSolver(EST_LRPT, 1, 100));
|
||||||
|
@ -102,6 +104,21 @@ public class Main {
|
||||||
solvers.put("Taboo-EST_LRPT(20,5000)", new TabooSolver(EST_LRPT, 20, 5000));
|
solvers.put("Taboo-EST_LRPT(20,5000)", new TabooSolver(EST_LRPT, 20, 5000));
|
||||||
solvers.put("Taboo-EST_LRPT(50,5000)", new TabooSolver(EST_LRPT, 50, 5000));
|
solvers.put("Taboo-EST_LRPT(50,5000)", new TabooSolver(EST_LRPT, 50, 5000));
|
||||||
solvers.put("Taboo-EST_LRPT(100,5000)", new TabooSolver(EST_LRPT, 100, 5000));
|
solvers.put("Taboo-EST_LRPT(100,5000)", new TabooSolver(EST_LRPT, 100, 5000));
|
||||||
|
|
||||||
|
solvers.put("Taboo-EST_LRPT(10,12000)", new TabooSolver(EST_LRPT, 10, 12000));
|
||||||
|
solvers.put("Taboo-EST_LRPT(14,12000)", new TabooSolver(EST_LRPT, 14, 12000));
|
||||||
|
|
||||||
|
solvers.put("Taboo-EST_LRPT(10,2000)", new TabooSolver(EST_LRPT, 10, 2000));
|
||||||
|
solvers.put("Taboo-EST_LRPT(10,4000)", new TabooSolver(EST_LRPT, 10, 4000));
|
||||||
|
solvers.put("Taboo-EST_LRPT(10,6000)", new TabooSolver(EST_LRPT, 10, 6000));
|
||||||
|
solvers.put("Taboo-EST_LRPT(10,8000)", new TabooSolver(EST_LRPT, 10, 8000));
|
||||||
|
solvers.put("Taboo-EST_LRPT(10,10000)", new TabooSolver(EST_LRPT, 10, 10000));
|
||||||
|
solvers.put("Taboo-EST_LRPT(10,12000)", new TabooSolver(EST_LRPT, 10, 12000));
|
||||||
|
solvers.put("Taboo-EST_LRPT(10,14000)", new TabooSolver(EST_LRPT, 10, 14000));
|
||||||
|
|
||||||
|
solvers.put("Taboo-SPT(10,1000)", new TabooSolver(SPT, 10, 1000));
|
||||||
|
solvers.put("Taboo-LRPT(10,1000)", new TabooSolver(LRPT, 10, 1000));
|
||||||
|
solvers.put("Taboo-EST_SPT(10,1000)", new TabooSolver(EST_SPT, 10, 1000));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -124,8 +124,8 @@ public class DescentSolver implements Solver {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Start: Sinit <- GreedySolver(instance)
|
// Start: Sinit <- GreedySolver(instance)
|
||||||
Result resultLRPT = greedy.solve(instance, deadline);
|
Result result = greedy.solve(instance, deadline);
|
||||||
Schedule initialSolution = resultLRPT.schedule;
|
Schedule initialSolution = result.schedule;
|
||||||
|
|
||||||
// Record the best solution
|
// Record the best solution
|
||||||
Schedule bestSolution = initialSolution;
|
Schedule bestSolution = initialSolution;
|
||||||
|
@ -167,7 +167,7 @@ public class DescentSolver implements Solver {
|
||||||
if(deadline <= System.currentTimeMillis()) {
|
if(deadline <= System.currentTimeMillis()) {
|
||||||
exitCause = ExitCause.Timeout;
|
exitCause = ExitCause.Timeout;
|
||||||
} else {
|
} else {
|
||||||
exitCause = ExitCause.ProvedOptimal;
|
exitCause = ExitCause.Blocked;
|
||||||
}
|
}
|
||||||
|
|
||||||
return new Result(instance, bestSolution, exitCause);
|
return new Result(instance, bestSolution, exitCause);
|
||||||
|
|
|
@ -151,7 +151,7 @@ public class GreedySolver implements Solver {
|
||||||
int[] nextStartDateMachines = new int[instance.numMachines];
|
int[] nextStartDateMachines = new int[instance.numMachines];
|
||||||
|
|
||||||
// We create a new ResourceOrder for putting all tasks in the schedule
|
// We create a new ResourceOrder for putting all tasks in the schedule
|
||||||
ResourceOrder solution = new ResourceOrder(instance);
|
ResourceOrder solutionRO = new ResourceOrder(instance);
|
||||||
// Array list with all the achievable current tasks
|
// Array list with all the achievable current tasks
|
||||||
ArrayList<Task> achievableTasks = new ArrayList<>();
|
ArrayList<Task> achievableTasks = new ArrayList<>();
|
||||||
|
|
||||||
|
@ -188,16 +188,16 @@ public class GreedySolver implements Solver {
|
||||||
}
|
}
|
||||||
|
|
||||||
// We add the current task to the solution
|
// We add the current task to the solution
|
||||||
nextFreeSlot = solution.nextFreeSlot[currentMachine]++;
|
nextFreeSlot = solutionRO.nextFreeSlot[currentMachine]++;
|
||||||
solution.tasksByMachine[currentMachine][nextFreeSlot] = currentTask;
|
solutionRO.tasksByMachine[currentMachine][nextFreeSlot] = currentTask;
|
||||||
}
|
}
|
||||||
// We find the exit cause in order to create the result we will return
|
// We find the exit cause in order to create the result we will return
|
||||||
ExitCause exitCause = null;
|
ExitCause exitCause = null;
|
||||||
if(deadline <= System.currentTimeMillis()) {
|
if(deadline <= System.currentTimeMillis()) {
|
||||||
exitCause = ExitCause.Timeout;
|
exitCause = ExitCause.Timeout;
|
||||||
} else {
|
} else {
|
||||||
exitCause = ExitCause.ProvedOptimal;
|
exitCause = ExitCause.Blocked;
|
||||||
}
|
}
|
||||||
return new Result(instance, solution.toSchedule(), exitCause);
|
return new Result(instance, solutionRO.toSchedule(), exitCause);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -88,7 +88,7 @@ public class TabooSolver implements Solver {
|
||||||
// Iteration Counter
|
// Iteration Counter
|
||||||
int k = 0;
|
int k = 0;
|
||||||
|
|
||||||
while (deadline > System.currentTimeMillis() && k <= this.maxIter) {
|
while (/*deadline > System.currentTimeMillis() &&*/ k <= this.maxIter) {
|
||||||
// ***************** 1. k <- k + 1 ******************************************************** //
|
// ***************** 1. k <- k + 1 ******************************************************** //
|
||||||
k++;
|
k++;
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue