Add FAIKR1 Graphplan

This commit is contained in:
2023-11-30 18:14:27 +01:00
parent 71cd9e14f0
commit 5bd52e414d
3 changed files with 746 additions and 2 deletions

View File

@ -0,0 +1,496 @@
<mxfile host="app.diagrams.net" modified="2023-11-30T16:39:50.591Z" agent="Mozilla/5.0 (X11; Linux x86_64; rv:120.0) Gecko/20100101 Firefox/120.0" etag="a0X61gIeOFjE0NNLV0Sk" version="22.1.5" type="device">
<diagram name="Pagina-1" id="Yt0qHgG8r23Rpl98Hr5L">
<mxGraphModel dx="1050" dy="606" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" math="0" shadow="0">
<root>
<mxCell id="0" />
<mxCell id="1" parent="0" />
<mxCell id="P9rIqunZUvPBB-14v_PH-1" value="&lt;font style=&quot;font-size: 18px;&quot;&gt;at(a, l)&lt;br&gt;&lt;/font&gt;" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontFamily=Courier New;" vertex="1" parent="1">
<mxGeometry x="110" y="130" width="100" height="30" as="geometry" />
</mxCell>
<mxCell id="P9rIqunZUvPBB-14v_PH-2" value="&lt;font style=&quot;font-size: 18px;&quot;&gt;at(b, l)&lt;br&gt;&lt;/font&gt;" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontFamily=Courier New;" vertex="1" parent="1">
<mxGeometry x="110" y="210" width="100" height="30" as="geometry" />
</mxCell>
<mxCell id="P9rIqunZUvPBB-14v_PH-3" value="&lt;font style=&quot;font-size: 18px;&quot;&gt;at(r, l)&lt;br&gt;&lt;/font&gt;" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontFamily=Courier New;" vertex="1" parent="1">
<mxGeometry x="110" y="290" width="100" height="30" as="geometry" />
</mxCell>
<mxCell id="P9rIqunZUvPBB-14v_PH-4" value="&lt;font style=&quot;font-size: 18px;&quot;&gt;hasFuel(r)&lt;br&gt;&lt;/font&gt;" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontFamily=Courier New;" vertex="1" parent="1">
<mxGeometry x="105" y="370" width="110" height="30" as="geometry" />
</mxCell>
<mxCell id="P9rIqunZUvPBB-14v_PH-5" value="" style="endArrow=none;html=1;rounded=0;fontFamily=Courier New;" edge="1" parent="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="240" y="420" as="sourcePoint" />
<mxPoint x="240" y="110" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="P9rIqunZUvPBB-14v_PH-6" value="&lt;font style=&quot;font-size: 18px;&quot;&gt;LOAD(a, r)&lt;br&gt;&lt;/font&gt;" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontFamily=Courier New;" vertex="1" parent="1">
<mxGeometry x="270" y="170" width="150" height="30" as="geometry" />
</mxCell>
<mxCell id="P9rIqunZUvPBB-14v_PH-7" value="&lt;font style=&quot;font-size: 18px;&quot;&gt;LOAD(b, r)&lt;br&gt;&lt;/font&gt;" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontFamily=Courier New;" vertex="1" parent="1">
<mxGeometry x="270" y="250" width="150" height="30" as="geometry" />
</mxCell>
<mxCell id="P9rIqunZUvPBB-14v_PH-8" value="&lt;font style=&quot;font-size: 18px;&quot;&gt;MOVE(r, l, p)&lt;br&gt;&lt;/font&gt;" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontFamily=Courier New;" vertex="1" parent="1">
<mxGeometry x="270" y="330" width="150" height="30" as="geometry" />
</mxCell>
<mxCell id="P9rIqunZUvPBB-14v_PH-9" value="&lt;font style=&quot;font-size: 14px;&quot;&gt;NO-OP&lt;br style=&quot;font-size: 14px;&quot;&gt;&lt;/font&gt;" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontSize=14;fontFamily=Courier New;" vertex="1" parent="1">
<mxGeometry x="305" y="130" width="80" height="30" as="geometry" />
</mxCell>
<mxCell id="P9rIqunZUvPBB-14v_PH-10" value="&lt;font style=&quot;font-size: 14px;&quot;&gt;NO-OP&lt;br&gt;&lt;/font&gt;" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontFamily=Courier New;" vertex="1" parent="1">
<mxGeometry x="305" y="210" width="80" height="30" as="geometry" />
</mxCell>
<mxCell id="P9rIqunZUvPBB-14v_PH-11" value="&lt;font style=&quot;font-size: 14px;&quot;&gt;NO-OP&lt;br style=&quot;font-size: 14px;&quot;&gt;&lt;/font&gt;" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontSize=14;fontFamily=Courier New;" vertex="1" parent="1">
<mxGeometry x="305" y="290" width="80" height="30" as="geometry" />
</mxCell>
<mxCell id="P9rIqunZUvPBB-14v_PH-12" value="&lt;font style=&quot;font-size: 14px;&quot;&gt;NO-OP&lt;br style=&quot;font-size: 14px;&quot;&gt;&lt;/font&gt;" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontSize=14;fontFamily=Courier New;" vertex="1" parent="1">
<mxGeometry x="305" y="370" width="80" height="30" as="geometry" />
</mxCell>
<mxCell id="P9rIqunZUvPBB-14v_PH-13" value="" style="endArrow=none;html=1;rounded=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;fillColor=#f5f5f5;strokeColor=#9a9996;fontFamily=Courier New;" edge="1" parent="1" source="P9rIqunZUvPBB-14v_PH-9" target="P9rIqunZUvPBB-14v_PH-1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="390" y="300" as="sourcePoint" />
<mxPoint x="440" y="250" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="P9rIqunZUvPBB-14v_PH-14" value="" style="endArrow=none;html=1;rounded=0;fontFamily=Courier New;" edge="1" parent="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="440" y="420" as="sourcePoint" />
<mxPoint x="440" y="110" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="P9rIqunZUvPBB-14v_PH-15" value="" style="endArrow=none;html=1;rounded=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;fillColor=#f5f5f5;strokeColor=#9a9996;fontFamily=Courier New;" edge="1" parent="1" source="P9rIqunZUvPBB-14v_PH-10" target="P9rIqunZUvPBB-14v_PH-2">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="315" y="155" as="sourcePoint" />
<mxPoint x="220" y="155" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="P9rIqunZUvPBB-14v_PH-16" value="" style="endArrow=none;html=1;rounded=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;fillColor=#f5f5f5;strokeColor=#9a9996;fontFamily=Courier New;" edge="1" parent="1" source="P9rIqunZUvPBB-14v_PH-11" target="P9rIqunZUvPBB-14v_PH-3">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="315" y="235" as="sourcePoint" />
<mxPoint x="220" y="235" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="P9rIqunZUvPBB-14v_PH-17" value="" style="endArrow=none;html=1;rounded=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;fillColor=#f5f5f5;strokeColor=#9a9996;fontFamily=Courier New;" edge="1" parent="1" source="P9rIqunZUvPBB-14v_PH-12" target="P9rIqunZUvPBB-14v_PH-4">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="315" y="315" as="sourcePoint" />
<mxPoint x="220" y="315" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="P9rIqunZUvPBB-14v_PH-18" value="" style="endArrow=none;html=1;rounded=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;fillColor=#f5f5f5;strokeColor=#9a9996;fontFamily=Courier New;" edge="1" parent="1" source="P9rIqunZUvPBB-14v_PH-19" target="P9rIqunZUvPBB-14v_PH-9">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="315" y="155" as="sourcePoint" />
<mxPoint x="220" y="155" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="P9rIqunZUvPBB-14v_PH-19" value="&lt;font style=&quot;font-size: 18px;&quot;&gt;at(a, l)&lt;br&gt;&lt;/font&gt;" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontFamily=Courier New;" vertex="1" parent="1">
<mxGeometry x="480" y="130" width="100" height="30" as="geometry" />
</mxCell>
<mxCell id="P9rIqunZUvPBB-14v_PH-20" value="&lt;font style=&quot;font-size: 18px;&quot;&gt;at(b, l)&lt;br&gt;&lt;/font&gt;" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontFamily=Courier New;" vertex="1" parent="1">
<mxGeometry x="480" y="210" width="100" height="30" as="geometry" />
</mxCell>
<mxCell id="P9rIqunZUvPBB-14v_PH-21" value="&lt;font style=&quot;font-size: 18px;&quot;&gt;at(r, l)&lt;br&gt;&lt;/font&gt;" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontFamily=Courier New;" vertex="1" parent="1">
<mxGeometry x="480" y="290" width="100" height="30" as="geometry" />
</mxCell>
<mxCell id="P9rIqunZUvPBB-14v_PH-22" value="&lt;font style=&quot;font-size: 18px;&quot;&gt;hasFuel(r)&lt;br&gt;&lt;/font&gt;" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontFamily=Courier New;" vertex="1" parent="1">
<mxGeometry x="475" y="370" width="110" height="30" as="geometry" />
</mxCell>
<mxCell id="P9rIqunZUvPBB-14v_PH-23" value="" style="endArrow=none;html=1;rounded=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;fillColor=#f5f5f5;strokeColor=#9a9996;fontFamily=Courier New;" edge="1" parent="1" source="P9rIqunZUvPBB-14v_PH-20" target="P9rIqunZUvPBB-14v_PH-10">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="315" y="235" as="sourcePoint" />
<mxPoint x="220" y="235" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="P9rIqunZUvPBB-14v_PH-24" value="" style="endArrow=none;html=1;rounded=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;fillColor=#f5f5f5;strokeColor=#9a9996;fontFamily=Courier New;" edge="1" parent="1" source="P9rIqunZUvPBB-14v_PH-21" target="P9rIqunZUvPBB-14v_PH-11">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="315" y="315" as="sourcePoint" />
<mxPoint x="220" y="315" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="P9rIqunZUvPBB-14v_PH-25" value="" style="endArrow=none;html=1;rounded=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;fillColor=#f5f5f5;strokeColor=#9a9996;fontFamily=Courier New;" edge="1" parent="1" source="P9rIqunZUvPBB-14v_PH-12" target="P9rIqunZUvPBB-14v_PH-22">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="315" y="395" as="sourcePoint" />
<mxPoint x="225" y="395" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="P9rIqunZUvPBB-14v_PH-26" value="" style="endArrow=none;html=1;rounded=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;fillColor=#f8cecc;strokeColor=#e01b24;fontFamily=Courier New;" edge="1" parent="1" source="P9rIqunZUvPBB-14v_PH-6" target="P9rIqunZUvPBB-14v_PH-1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="390" y="330" as="sourcePoint" />
<mxPoint x="440" y="280" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="P9rIqunZUvPBB-14v_PH-27" value="" style="endArrow=none;html=1;rounded=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;fillColor=#f8cecc;strokeColor=#e01b24;fontFamily=Courier New;" edge="1" parent="1" source="P9rIqunZUvPBB-14v_PH-6" target="P9rIqunZUvPBB-14v_PH-3">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="280" y="195" as="sourcePoint" />
<mxPoint x="220" y="155" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="P9rIqunZUvPBB-14v_PH-28" value="" style="endArrow=none;html=1;rounded=0;strokeColor=#33d17a;entryX=1;entryY=0.5;entryDx=0;entryDy=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;fontFamily=Courier New;" edge="1" parent="1" source="P9rIqunZUvPBB-14v_PH-7" target="P9rIqunZUvPBB-14v_PH-2">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="390" y="330" as="sourcePoint" />
<mxPoint x="440" y="280" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="P9rIqunZUvPBB-14v_PH-29" value="" style="endArrow=none;html=1;rounded=0;strokeColor=#33d17a;entryX=1;entryY=0.5;entryDx=0;entryDy=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;fontFamily=Courier New;" edge="1" parent="1" source="P9rIqunZUvPBB-14v_PH-7" target="P9rIqunZUvPBB-14v_PH-3">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="280" y="275" as="sourcePoint" />
<mxPoint x="220" y="235" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="P9rIqunZUvPBB-14v_PH-30" value="" style="endArrow=none;html=1;rounded=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;strokeColor=#3584e4;fontFamily=Courier New;" edge="1" parent="1" source="P9rIqunZUvPBB-14v_PH-3" target="P9rIqunZUvPBB-14v_PH-8">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="390" y="330" as="sourcePoint" />
<mxPoint x="440" y="280" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="P9rIqunZUvPBB-14v_PH-31" value="" style="endArrow=none;html=1;rounded=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;strokeColor=#3584e4;fontFamily=Courier New;" edge="1" parent="1" source="P9rIqunZUvPBB-14v_PH-4" target="P9rIqunZUvPBB-14v_PH-8">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="220" y="315" as="sourcePoint" />
<mxPoint x="280" y="355" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="P9rIqunZUvPBB-14v_PH-32" value="&lt;font style=&quot;font-size: 18px;&quot;&gt;in(r, a)&lt;br&gt;&lt;/font&gt;" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontFamily=Courier New;" vertex="1" parent="1">
<mxGeometry x="480" y="170" width="100" height="30" as="geometry" />
</mxCell>
<mxCell id="P9rIqunZUvPBB-14v_PH-33" value="&lt;font style=&quot;font-size: 18px;&quot;&gt;in(r, b)&lt;br&gt;&lt;/font&gt;" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontFamily=Courier New;" vertex="1" parent="1">
<mxGeometry x="480" y="250" width="100" height="30" as="geometry" />
</mxCell>
<mxCell id="P9rIqunZUvPBB-14v_PH-34" value="&lt;font style=&quot;font-size: 18px;&quot;&gt;at(r, p)&lt;br&gt;&lt;/font&gt;" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontFamily=Courier New;" vertex="1" parent="1">
<mxGeometry x="480" y="330" width="100" height="30" as="geometry" />
</mxCell>
<mxCell id="P9rIqunZUvPBB-14v_PH-35" value="" style="endArrow=none;html=1;rounded=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;fillColor=#f8cecc;strokeColor=#e01b24;fontFamily=Courier New;" edge="1" parent="1" source="P9rIqunZUvPBB-14v_PH-32" target="P9rIqunZUvPBB-14v_PH-6">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="280" y="195" as="sourcePoint" />
<mxPoint x="220" y="155" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="P9rIqunZUvPBB-14v_PH-36" value="" style="endArrow=none;html=1;rounded=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;fillColor=#f8cecc;strokeColor=#e01b24;dashed=1;fontFamily=Courier New;" edge="1" parent="1" source="P9rIqunZUvPBB-14v_PH-19" target="P9rIqunZUvPBB-14v_PH-6">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="490" y="195" as="sourcePoint" />
<mxPoint x="430" y="195" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="P9rIqunZUvPBB-14v_PH-37" value="" style="endArrow=none;html=1;rounded=0;strokeColor=#33d17a;entryX=1;entryY=0.5;entryDx=0;entryDy=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;dashed=1;fontFamily=Courier New;" edge="1" parent="1" source="P9rIqunZUvPBB-14v_PH-20" target="P9rIqunZUvPBB-14v_PH-7">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="280" y="275" as="sourcePoint" />
<mxPoint x="220" y="235" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="P9rIqunZUvPBB-14v_PH-38" value="" style="endArrow=none;html=1;rounded=0;strokeColor=#33d17a;entryX=1;entryY=0.5;entryDx=0;entryDy=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;fontFamily=Courier New;" edge="1" parent="1" source="P9rIqunZUvPBB-14v_PH-33" target="P9rIqunZUvPBB-14v_PH-7">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="490" y="235" as="sourcePoint" />
<mxPoint x="430" y="275" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="P9rIqunZUvPBB-14v_PH-39" value="" style="endArrow=none;html=1;rounded=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;strokeColor=#3584e4;dashed=1;fontFamily=Courier New;" edge="1" parent="1" source="P9rIqunZUvPBB-14v_PH-21" target="P9rIqunZUvPBB-14v_PH-8">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="220" y="315" as="sourcePoint" />
<mxPoint x="280" y="355" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="P9rIqunZUvPBB-14v_PH-40" value="" style="endArrow=none;html=1;rounded=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;strokeColor=#3584e4;fontFamily=Courier New;" edge="1" parent="1" source="P9rIqunZUvPBB-14v_PH-34" target="P9rIqunZUvPBB-14v_PH-8">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="490" y="315" as="sourcePoint" />
<mxPoint x="430" y="355" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="P9rIqunZUvPBB-14v_PH-41" value="" style="endArrow=none;html=1;rounded=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;strokeColor=#3584e4;dashed=1;fontFamily=Courier New;" edge="1" parent="1" source="P9rIqunZUvPBB-14v_PH-22" target="P9rIqunZUvPBB-14v_PH-8">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="490" y="355" as="sourcePoint" />
<mxPoint x="430" y="355" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="P9rIqunZUvPBB-14v_PH-42" value="&lt;font style=&quot;font-size: 12px;&quot;&gt;NO-OP&lt;br style=&quot;font-size: 12px;&quot;&gt;&lt;/font&gt;" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontSize=12;fontFamily=Courier New;" vertex="1" parent="1">
<mxGeometry x="680" y="290" width="80" height="30" as="geometry" />
</mxCell>
<mxCell id="P9rIqunZUvPBB-14v_PH-43" value="" style="endArrow=none;html=1;rounded=0;fontFamily=Courier New;" edge="1" parent="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="620" y="420" as="sourcePoint" />
<mxPoint x="620" y="110" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="P9rIqunZUvPBB-14v_PH-44" value="&lt;font style=&quot;font-size: 12px;&quot;&gt;NO-OP&lt;br style=&quot;font-size: 12px;&quot;&gt;&lt;/font&gt;" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontSize=12;fontFamily=Courier New;" vertex="1" parent="1">
<mxGeometry x="680" y="330" width="80" height="30" as="geometry" />
</mxCell>
<mxCell id="P9rIqunZUvPBB-14v_PH-45" value="&lt;font style=&quot;font-size: 12px;&quot;&gt;NO-OP&lt;br style=&quot;font-size: 12px;&quot;&gt;&lt;/font&gt;" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontSize=12;fontFamily=Courier New;" vertex="1" parent="1">
<mxGeometry x="680" y="370" width="80" height="30" as="geometry" />
</mxCell>
<mxCell id="P9rIqunZUvPBB-14v_PH-46" value="&lt;font style=&quot;font-size: 12px;&quot;&gt;NO-OP&lt;br style=&quot;font-size: 12px;&quot;&gt;&lt;/font&gt;" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontSize=12;fontFamily=Courier New;" vertex="1" parent="1">
<mxGeometry x="680" y="250" width="80" height="30" as="geometry" />
</mxCell>
<mxCell id="P9rIqunZUvPBB-14v_PH-47" value="&lt;font style=&quot;font-size: 12px;&quot;&gt;NO-OP&lt;br style=&quot;font-size: 12px;&quot;&gt;&lt;/font&gt;" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontSize=12;fontFamily=Courier New;" vertex="1" parent="1">
<mxGeometry x="680" y="210" width="80" height="30" as="geometry" />
</mxCell>
<mxCell id="P9rIqunZUvPBB-14v_PH-48" value="&lt;font style=&quot;font-size: 12px;&quot;&gt;NO-OP&lt;br style=&quot;font-size: 12px;&quot;&gt;&lt;/font&gt;" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontSize=12;fontFamily=Courier New;" vertex="1" parent="1">
<mxGeometry x="680" y="170" width="80" height="30" as="geometry" />
</mxCell>
<mxCell id="P9rIqunZUvPBB-14v_PH-49" value="&lt;font style=&quot;font-size: 12px;&quot;&gt;NO-OP&lt;br style=&quot;font-size: 12px;&quot;&gt;&lt;/font&gt;" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontSize=12;fontFamily=Courier New;" vertex="1" parent="1">
<mxGeometry x="680" y="130" width="80" height="30" as="geometry" />
</mxCell>
<mxCell id="P9rIqunZUvPBB-14v_PH-50" value="" style="endArrow=none;html=1;rounded=0;fontFamily=Courier New;" edge="1" parent="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="827" y="420" as="sourcePoint" />
<mxPoint x="827" y="110" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="P9rIqunZUvPBB-14v_PH-51" value="&lt;font style=&quot;font-size: 16px;&quot;&gt;LOAD(a, l)&lt;br style=&quot;font-size: 16px;&quot;&gt;&lt;/font&gt;" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontSize=16;fontFamily=Courier New;" vertex="1" parent="1">
<mxGeometry x="650" y="150" width="150" height="30" as="geometry" />
</mxCell>
<mxCell id="P9rIqunZUvPBB-14v_PH-52" value="&lt;font style=&quot;font-size: 16px;&quot;&gt;LOAD(b, l)&lt;br style=&quot;font-size: 16px;&quot;&gt;&lt;/font&gt;" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontSize=16;fontFamily=Courier New;" vertex="1" parent="1">
<mxGeometry x="650" y="230" width="150" height="30" as="geometry" />
</mxCell>
<mxCell id="P9rIqunZUvPBB-14v_PH-53" value="&lt;font style=&quot;font-size: 16px;&quot;&gt;MOVE(r, l, p)&lt;br style=&quot;font-size: 16px;&quot;&gt;&lt;/font&gt;" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontFamily=Courier New;fontSize=16;" vertex="1" parent="1">
<mxGeometry x="650" y="350" width="150" height="30" as="geometry" />
</mxCell>
<mxCell id="P9rIqunZUvPBB-14v_PH-54" value="UN&lt;font style=&quot;font-size: 16px;&quot;&gt;LOAD(a, l)&lt;br style=&quot;font-size: 16px;&quot;&gt;&lt;/font&gt;" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontSize=16;fontFamily=Courier New;" vertex="1" parent="1">
<mxGeometry x="645" y="190" width="150" height="30" as="geometry" />
</mxCell>
<mxCell id="P9rIqunZUvPBB-14v_PH-55" value="UN&lt;font style=&quot;font-size: 16px;&quot;&gt;LOAD(b, l)&lt;br style=&quot;font-size: 16px;&quot;&gt;&lt;/font&gt;" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontSize=16;fontFamily=Courier New;" vertex="1" parent="1">
<mxGeometry x="650" y="270" width="150" height="30" as="geometry" />
</mxCell>
<mxCell id="P9rIqunZUvPBB-14v_PH-56" value="&lt;font style=&quot;font-size: 18px;&quot;&gt;at(a, l)&lt;br&gt;&lt;/font&gt;" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontFamily=Courier New;" vertex="1" parent="1">
<mxGeometry x="865" y="130" width="100" height="30" as="geometry" />
</mxCell>
<mxCell id="P9rIqunZUvPBB-14v_PH-57" value="&lt;font style=&quot;font-size: 18px;&quot;&gt;at(b, l)&lt;br&gt;&lt;/font&gt;" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontFamily=Courier New;" vertex="1" parent="1">
<mxGeometry x="865" y="210" width="100" height="30" as="geometry" />
</mxCell>
<mxCell id="P9rIqunZUvPBB-14v_PH-58" value="&lt;font style=&quot;font-size: 18px;&quot;&gt;at(r, l)&lt;br&gt;&lt;/font&gt;" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontFamily=Courier New;" vertex="1" parent="1">
<mxGeometry x="865" y="290" width="100" height="30" as="geometry" />
</mxCell>
<mxCell id="P9rIqunZUvPBB-14v_PH-59" value="&lt;font style=&quot;font-size: 18px;&quot;&gt;hasFuel(r)&lt;br&gt;&lt;/font&gt;" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontFamily=Courier New;" vertex="1" parent="1">
<mxGeometry x="860" y="370" width="110" height="30" as="geometry" />
</mxCell>
<mxCell id="P9rIqunZUvPBB-14v_PH-60" value="&lt;font style=&quot;font-size: 18px;&quot;&gt;in(r, a)&lt;br&gt;&lt;/font&gt;" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontFamily=Courier New;" vertex="1" parent="1">
<mxGeometry x="865" y="170" width="100" height="30" as="geometry" />
</mxCell>
<mxCell id="P9rIqunZUvPBB-14v_PH-61" value="&lt;font style=&quot;font-size: 18px;&quot;&gt;in(r, b)&lt;br&gt;&lt;/font&gt;" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontFamily=Courier New;" vertex="1" parent="1">
<mxGeometry x="865" y="250" width="100" height="30" as="geometry" />
</mxCell>
<mxCell id="P9rIqunZUvPBB-14v_PH-62" value="&lt;font style=&quot;font-size: 18px;&quot;&gt;at(r, p)&lt;br&gt;&lt;/font&gt;" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontFamily=Courier New;" vertex="1" parent="1">
<mxGeometry x="865" y="330" width="100" height="30" as="geometry" />
</mxCell>
<mxCell id="P9rIqunZUvPBB-14v_PH-63" value="" style="endArrow=none;html=1;rounded=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;fillColor=#f5f5f5;strokeColor=#9a9996;fontFamily=Courier New;" edge="1" parent="1" source="P9rIqunZUvPBB-14v_PH-19" target="P9rIqunZUvPBB-14v_PH-49">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="490" y="155" as="sourcePoint" />
<mxPoint x="395" y="155" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="P9rIqunZUvPBB-14v_PH-64" value="" style="endArrow=none;html=1;rounded=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;fillColor=#f5f5f5;strokeColor=#9a9996;fontFamily=Courier New;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="P9rIqunZUvPBB-14v_PH-32" target="P9rIqunZUvPBB-14v_PH-48">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="585" y="184.57999999999998" as="sourcePoint" />
<mxPoint x="650" y="185" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="P9rIqunZUvPBB-14v_PH-65" value="" style="endArrow=none;html=1;rounded=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;fillColor=#f5f5f5;strokeColor=#9a9996;fontFamily=Courier New;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="580" y="224.57999999999998" as="sourcePoint" />
<mxPoint x="680" y="224.57999999999998" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="P9rIqunZUvPBB-14v_PH-66" value="" style="endArrow=none;html=1;rounded=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;fillColor=#f5f5f5;strokeColor=#9a9996;fontFamily=Courier New;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="580" y="264.58" as="sourcePoint" />
<mxPoint x="680" y="264.58" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="P9rIqunZUvPBB-14v_PH-67" value="" style="endArrow=none;html=1;rounded=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;fillColor=#f5f5f5;strokeColor=#9a9996;fontFamily=Courier New;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="580" y="304.58" as="sourcePoint" />
<mxPoint x="680" y="304.58" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="P9rIqunZUvPBB-14v_PH-68" value="" style="endArrow=none;html=1;rounded=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;fillColor=#f5f5f5;strokeColor=#9a9996;fontFamily=Courier New;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="580" y="344.58" as="sourcePoint" />
<mxPoint x="680" y="344.58" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="P9rIqunZUvPBB-14v_PH-69" value="" style="endArrow=none;html=1;rounded=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;fillColor=#f5f5f5;strokeColor=#9a9996;fontFamily=Courier New;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="P9rIqunZUvPBB-14v_PH-22" target="P9rIqunZUvPBB-14v_PH-45">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="585" y="384.58" as="sourcePoint" />
<mxPoint x="685" y="384.58" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="P9rIqunZUvPBB-14v_PH-70" value="" style="endArrow=none;html=1;rounded=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;fillColor=#f5f5f5;strokeColor=#9a9996;fontFamily=Courier New;" edge="1" parent="1" source="P9rIqunZUvPBB-14v_PH-49" target="P9rIqunZUvPBB-14v_PH-56">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="590" y="155" as="sourcePoint" />
<mxPoint x="690" y="155" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="P9rIqunZUvPBB-14v_PH-71" value="" style="endArrow=none;html=1;rounded=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;fillColor=#f5f5f5;strokeColor=#9a9996;fontFamily=Courier New;" edge="1" parent="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="760" y="184.57999999999998" as="sourcePoint" />
<mxPoint x="865" y="184.57999999999998" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="P9rIqunZUvPBB-14v_PH-72" value="" style="endArrow=none;html=1;rounded=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;fillColor=#f5f5f5;strokeColor=#9a9996;fontFamily=Courier New;" edge="1" parent="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="760" y="224.57999999999998" as="sourcePoint" />
<mxPoint x="865" y="224.57999999999998" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="P9rIqunZUvPBB-14v_PH-73" value="" style="endArrow=none;html=1;rounded=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;fillColor=#f5f5f5;strokeColor=#9a9996;fontFamily=Courier New;" edge="1" parent="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="760" y="264.58" as="sourcePoint" />
<mxPoint x="865" y="264.58" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="P9rIqunZUvPBB-14v_PH-74" value="" style="endArrow=none;html=1;rounded=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;fillColor=#f5f5f5;strokeColor=#9a9996;fontFamily=Courier New;" edge="1" parent="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="760" y="304.58" as="sourcePoint" />
<mxPoint x="865" y="304.58" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="P9rIqunZUvPBB-14v_PH-75" value="" style="endArrow=none;html=1;rounded=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;fillColor=#f5f5f5;strokeColor=#9a9996;fontFamily=Courier New;" edge="1" parent="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="760" y="344.58" as="sourcePoint" />
<mxPoint x="865" y="344.58" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="P9rIqunZUvPBB-14v_PH-76" value="" style="endArrow=none;html=1;rounded=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;fillColor=#f5f5f5;strokeColor=#9a9996;fontFamily=Courier New;" edge="1" parent="1" source="P9rIqunZUvPBB-14v_PH-45" target="P9rIqunZUvPBB-14v_PH-59">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="760" y="384.58" as="sourcePoint" />
<mxPoint x="865" y="384.58" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="P9rIqunZUvPBB-14v_PH-77" value="" style="endArrow=none;html=1;rounded=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;fillColor=#f8cecc;strokeColor=#e01b24;fontFamily=Courier New;" edge="1" parent="1" source="P9rIqunZUvPBB-14v_PH-51" target="P9rIqunZUvPBB-14v_PH-19">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="490" y="195" as="sourcePoint" />
<mxPoint x="430" y="195" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="P9rIqunZUvPBB-14v_PH-78" value="" style="endArrow=none;html=1;rounded=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;fillColor=#f8cecc;strokeColor=#e01b24;fontFamily=Courier New;" edge="1" parent="1" source="P9rIqunZUvPBB-14v_PH-51" target="P9rIqunZUvPBB-14v_PH-21">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="660" y="175" as="sourcePoint" />
<mxPoint x="590" y="155" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="P9rIqunZUvPBB-14v_PH-79" value="" style="endArrow=none;html=1;rounded=0;strokeColor=#33d17a;entryX=1;entryY=0.5;entryDx=0;entryDy=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;fontFamily=Courier New;" edge="1" parent="1" source="P9rIqunZUvPBB-14v_PH-52" target="P9rIqunZUvPBB-14v_PH-20">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="490" y="275" as="sourcePoint" />
<mxPoint x="430" y="275" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="P9rIqunZUvPBB-14v_PH-80" value="" style="endArrow=none;html=1;rounded=0;strokeColor=#33d17a;entryX=1;entryY=0.5;entryDx=0;entryDy=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;fontFamily=Courier New;" edge="1" parent="1" source="P9rIqunZUvPBB-14v_PH-52" target="P9rIqunZUvPBB-14v_PH-21">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="660" y="215" as="sourcePoint" />
<mxPoint x="590" y="235" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="P9rIqunZUvPBB-14v_PH-81" value="" style="endArrow=none;html=1;rounded=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;strokeColor=#3584e4;fontFamily=Courier New;" edge="1" parent="1" source="P9rIqunZUvPBB-14v_PH-53" target="P9rIqunZUvPBB-14v_PH-22">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="490" y="355" as="sourcePoint" />
<mxPoint x="430" y="355" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="P9rIqunZUvPBB-14v_PH-82" value="" style="endArrow=none;html=1;rounded=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;strokeColor=#3584e4;fontFamily=Courier New;" edge="1" parent="1" source="P9rIqunZUvPBB-14v_PH-53" target="P9rIqunZUvPBB-14v_PH-21">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="660" y="375" as="sourcePoint" />
<mxPoint x="595" y="395" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="P9rIqunZUvPBB-14v_PH-83" value="" style="endArrow=none;html=1;rounded=0;strokeColor=#ff7800;entryX=1;entryY=0.5;entryDx=0;entryDy=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;fontFamily=Courier New;" edge="1" parent="1" source="P9rIqunZUvPBB-14v_PH-54" target="P9rIqunZUvPBB-14v_PH-32">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="660" y="215" as="sourcePoint" />
<mxPoint x="590" y="315" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="P9rIqunZUvPBB-14v_PH-84" value="" style="endArrow=none;html=1;rounded=0;strokeColor=#ff7800;entryX=1;entryY=0.5;entryDx=0;entryDy=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;fontFamily=Courier New;" edge="1" parent="1" source="P9rIqunZUvPBB-14v_PH-54" target="P9rIqunZUvPBB-14v_PH-21">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="660" y="255" as="sourcePoint" />
<mxPoint x="590" y="195" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="P9rIqunZUvPBB-14v_PH-86" value="" style="endArrow=none;html=1;rounded=0;strokeColor=#c061cb;entryX=1;entryY=0.5;entryDx=0;entryDy=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;fontFamily=Courier New;" edge="1" parent="1" source="P9rIqunZUvPBB-14v_PH-55" target="P9rIqunZUvPBB-14v_PH-33">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="660" y="255" as="sourcePoint" />
<mxPoint x="590" y="195" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="P9rIqunZUvPBB-14v_PH-87" value="" style="endArrow=none;html=1;rounded=0;strokeColor=#c061cb;entryX=1;entryY=0.5;entryDx=0;entryDy=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;fontFamily=Courier New;" edge="1" parent="1" source="P9rIqunZUvPBB-14v_PH-55" target="P9rIqunZUvPBB-14v_PH-21">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="660" y="295" as="sourcePoint" />
<mxPoint x="590" y="275" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="P9rIqunZUvPBB-14v_PH-88" value="" style="endArrow=none;html=1;rounded=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;fillColor=#f8cecc;strokeColor=#e01b24;fontFamily=Courier New;" edge="1" parent="1" source="P9rIqunZUvPBB-14v_PH-51" target="P9rIqunZUvPBB-14v_PH-60">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="660" y="175" as="sourcePoint" />
<mxPoint x="590" y="155" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="P9rIqunZUvPBB-14v_PH-89" value="" style="endArrow=none;html=1;rounded=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;fillColor=#f8cecc;strokeColor=#e01b24;fontFamily=Courier New;dashed=1;" edge="1" parent="1" source="P9rIqunZUvPBB-14v_PH-51" target="P9rIqunZUvPBB-14v_PH-56">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="810" y="175" as="sourcePoint" />
<mxPoint x="875" y="195" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="P9rIqunZUvPBB-14v_PH-90" value="" style="endArrow=none;html=1;rounded=0;strokeColor=#33d17a;entryX=0;entryY=0.5;entryDx=0;entryDy=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;fontFamily=Courier New;" edge="1" parent="1" source="P9rIqunZUvPBB-14v_PH-52" target="P9rIqunZUvPBB-14v_PH-61">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="660" y="215" as="sourcePoint" />
<mxPoint x="590" y="315" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="P9rIqunZUvPBB-14v_PH-91" value="" style="endArrow=none;html=1;rounded=0;strokeColor=#33d17a;entryX=0;entryY=0.5;entryDx=0;entryDy=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;fontFamily=Courier New;dashed=1;" edge="1" parent="1" source="P9rIqunZUvPBB-14v_PH-52" target="P9rIqunZUvPBB-14v_PH-57">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="810" y="215" as="sourcePoint" />
<mxPoint x="875" y="275" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="P9rIqunZUvPBB-14v_PH-92" value="" style="endArrow=none;html=1;rounded=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;strokeColor=#3584e4;fontFamily=Courier New;dashed=1;" edge="1" parent="1" source="P9rIqunZUvPBB-14v_PH-53" target="P9rIqunZUvPBB-14v_PH-59">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="660" y="375" as="sourcePoint" />
<mxPoint x="595" y="395" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="P9rIqunZUvPBB-14v_PH-93" value="" style="endArrow=none;html=1;rounded=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;strokeColor=#3584e4;fontFamily=Courier New;dashed=1;" edge="1" parent="1" source="P9rIqunZUvPBB-14v_PH-53" target="P9rIqunZUvPBB-14v_PH-58">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="810" y="375" as="sourcePoint" />
<mxPoint x="870" y="395" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="P9rIqunZUvPBB-14v_PH-94" value="" style="endArrow=none;html=1;rounded=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;strokeColor=#3584e4;fontFamily=Courier New;" edge="1" parent="1" source="P9rIqunZUvPBB-14v_PH-53" target="P9rIqunZUvPBB-14v_PH-62">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="810" y="375" as="sourcePoint" />
<mxPoint x="875" y="315" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="P9rIqunZUvPBB-14v_PH-95" value="" style="endArrow=none;html=1;rounded=0;strokeColor=#ff7800;entryX=0;entryY=0.5;entryDx=0;entryDy=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;fontFamily=Courier New;" edge="1" parent="1" source="P9rIqunZUvPBB-14v_PH-54" target="P9rIqunZUvPBB-14v_PH-56">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="660" y="255" as="sourcePoint" />
<mxPoint x="590" y="195" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="P9rIqunZUvPBB-14v_PH-96" value="" style="endArrow=none;html=1;rounded=0;strokeColor=#ff7800;entryX=0;entryY=0.5;entryDx=0;entryDy=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;fontFamily=Courier New;dashed=1;" edge="1" parent="1" source="P9rIqunZUvPBB-14v_PH-54" target="P9rIqunZUvPBB-14v_PH-60">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="810" y="255" as="sourcePoint" />
<mxPoint x="875" y="155" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="P9rIqunZUvPBB-14v_PH-97" value="" style="endArrow=none;html=1;rounded=0;strokeColor=#c061cb;entryX=0;entryY=0.5;entryDx=0;entryDy=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;fontFamily=Courier New;" edge="1" parent="1" source="P9rIqunZUvPBB-14v_PH-55" target="P9rIqunZUvPBB-14v_PH-57">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="660" y="295" as="sourcePoint" />
<mxPoint x="590" y="315" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="P9rIqunZUvPBB-14v_PH-98" value="" style="endArrow=none;html=1;rounded=0;strokeColor=#c061cb;entryX=0;entryY=0.5;entryDx=0;entryDy=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;fontFamily=Courier New;dashed=1;" edge="1" parent="1" source="P9rIqunZUvPBB-14v_PH-55" target="P9rIqunZUvPBB-14v_PH-61">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="810" y="295" as="sourcePoint" />
<mxPoint x="875" y="235" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="P9rIqunZUvPBB-14v_PH-99" value="&lt;font style=&quot;font-size: 16px;&quot; face=&quot;Times New Roman&quot;&gt;&lt;i&gt;t = 0&lt;/i&gt;&lt;br&gt;&lt;/font&gt;" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="130" y="90" width="60" height="30" as="geometry" />
</mxCell>
<mxCell id="P9rIqunZUvPBB-14v_PH-100" value="&lt;font style=&quot;font-size: 16px;&quot; face=&quot;Times New Roman&quot;&gt;&lt;i&gt;t = 1&lt;br&gt;&lt;/i&gt;&lt;/font&gt;" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="315" y="90" width="60" height="30" as="geometry" />
</mxCell>
<mxCell id="P9rIqunZUvPBB-14v_PH-101" value="&lt;font style=&quot;font-size: 16px;&quot; face=&quot;Times New Roman&quot;&gt;&lt;i&gt;t = 2&lt;br&gt;&lt;/i&gt;&lt;/font&gt;" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="500" y="90" width="60" height="30" as="geometry" />
</mxCell>
<mxCell id="P9rIqunZUvPBB-14v_PH-102" value="&lt;font style=&quot;font-size: 16px;&quot; face=&quot;Times New Roman&quot;&gt;&lt;i&gt;t = 3&lt;br&gt;&lt;/i&gt;&lt;/font&gt;" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="690" y="90" width="60" height="30" as="geometry" />
</mxCell>
<mxCell id="P9rIqunZUvPBB-14v_PH-103" value="&lt;font style=&quot;font-size: 16px;&quot; face=&quot;Times New Roman&quot;&gt;&lt;i&gt;t = 4&lt;br&gt;&lt;/i&gt;&lt;/font&gt;" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="885" y="90" width="60" height="30" as="geometry" />
</mxCell>
</root>
</mxGraphModel>
</diagram>
</mxfile>

View File

@ -40,7 +40,7 @@
\item[Correctness] \marginnote{Correct planner}
The planner always finds a solution that leads from the initial state to the goal.
\item[Completeness] \marginnote{Complete planner}
The planner always finds a plan when it exits (planning is semi-decidable).
The planner always finds a plan when it exists (planning is semi-decidable).
\end{descriptionlist}
\item[Execution] \marginnote{Execution}
@ -777,4 +777,252 @@ The steps the algorithm does are:
\item Checks the pre-conditions and post-conditions of the action it is going to execute.
\item Backtracks the effects of an action in case of a failure.
\item Corrects the plan if external events occur.
\end{itemize}
\end{itemize}
\section{Graphplan}
\marginnote{Graphplan}
Graphplan is an off-line, least-commitment planner (closed-world assumption) that
constructs a partially ordered set of actions through a planning graph based on time steps.
The planner is correct, complete, optimal and computationally efficient.
\begin{description}
\item[Action] \marginnote{Actions}
An action, as in STRIPS, has:
\begin{itemize}
\item Preconditions.
\item Add list.
\item Delete list.
\end{itemize}
\begin{description}
\item[\texttt{NO-OP}]
Action that does not change the state (to solve the frame problem).
Can be seen as an action with the same proposition as precondition and add list.
\end{description}
\item[State] \marginnote{State}
A state is represented by a set of propositions that are true in that time step.
\item[Planning graph] \marginnote{Planning graph}
Directed leveled graph where edges connect nodes of adjacent levels.
There are two possible levels that are alternated during construction:
\begin{descriptionlist}
\item[Proposition level]
Contains propositions that describe the state.
Note that interfering propositions can appear.
\item[Action level]
Contains all the possible actions that have as preconditions the propositions in the previous level.
Note that interfering actions can appear.
\end{descriptionlist}
The first level of the graph is a proposition level containing the initial state.
Edges can be:
\begin{descriptionlist}
\item[Precondition arcs] proposition $\rightarrow$ action.
\item[Add arcs] action $\rightarrow$ proposition.
\item[Delete arcs] action $\rightarrow$ proposition.
\end{descriptionlist}
\item[Inconsistency] \marginnote{Inconsistency}
Actions and propositions can be inconsistent in the same time step.
Possible causes are:
\begin{descriptionlist}
\item[Inconsistent effects] \marginnote{Inconsistent effects}
An action negates the effects of another one.
\item[Interference] \marginnote{Interference}
An action deletes the preconditions of another one.
\item[Competing needs] \marginnote{Competing needs}
Propositions that cannot appear together either
because one negates the other or
because they can be reached only through mutually exclusive paths.
(i.e. two actions have mutually exclusive preconditions).
\item[Domain dependent]
\end{descriptionlist}
\item[Plan extraction] \marginnote{Plan extraction}
Once a proposition level containing the goal as non-mutually exclusive propositions has been reached,
the algorithm can attempt to extract a plan.
A valid plan has the following properties:
\begin{itemize}
\item Actions in the same time step do not interfere and can be executed in any order.
\item Propositions at the same time step are non-mutually exclusive.
\item The last step contains the goal as non-mutually exclusive propositions.
\end{itemize}
Even if the last step is a superset of the goal, planning may still fail.
In this case, the algorithm has to continue generating levels.
% Loop detection can be used to stop when a plan cannot be found.
\item[Memoization] \marginnote{Memoization}
At each step, if the goal is not satisfiable, the result is saved and
when the same state is encountered in the future it will automatically fail.
\end{description}
\begin{theorem}
The following statements hold:
\begin{itemize}
\item If a valid plan exists, it can be found as a subgraph of the planning graph.
\item In a planning graph, two actions in a time step are mutually exclusive
if a valid plan containing both does not exist.
\item In a planning graph, two propositions are mutually exclusive if they are inconsistent.
\end{itemize}
\end{theorem}
\begin{corollary}
Inconsistencies found during the planning graph construction
prune paths in the search tree.
\end{corollary}
\begin{algorithm}[H]
\caption{Graphplan}
\begin{lstlisting}[mathescape=true]
def graphplan(initial_state, actions, goal):
graph = PlanningGraph()
graph.addPropositionLevel(initial_state)
while True:
if (goal in graph.lastPropositionLevel and
not mutexPropositions(goal, graph.lastPropositionLevel)):
plan = extractSolution(graph, goal)
if plan is not FAIL: return plan
graph.addActionLevel( selectActions(graph) )
graph.addPropositionLevel( selectPreconditions(graph, actions) )
def selectActions(graph, actions):
new_action_level = Level()
for action in actions.unify(graph.lastPropositionLevel):
preconds = action.preconditions
if not mutexPropositions(preconds, graph.lastPropositionLevel):
new_action_level.add(preconds, action)
for proposition in graph.lastPropositionLevel:
new_action_level.add(NO_OP(proposition))
new_action_level.findInconsistencies()
return new_action_level
def selectPreconditions(graph):
new_props_level = Level()
for action in graph.lastActionLevel:
for prop in action.add_list:
new_props_level.add(action, prop, "add")
for prop in action.delete_list:
new_props_level.add(action, prop, "delete")
new_props_level.findInconsistencies()
return new_props_level
def extractSolution(graph, goal):
plan = Plan()
actions = graph.lastActionLevel.getActionsWithEffect(goal)
if mutexActions(actions, graph.lastActionLevel): return FAIL
plan.addLevel(actions)
graph = graph.popLastActionLevel()
return plan.merge(extractSolution(graph, actions.preconditions))
\end{lstlisting}
\end{algorithm}
\begin{example}[Moving objects with a cart]
Given the actions:
\begin{descriptionlist}
\item[\texttt{MOVE(R, PosA, PosB)}] \phantom{}
\begin{description}
\item[Preconditions] $\texttt{at(R, PosA)}$, $\texttt{hasFuel(R)}$
\item[Add list] $\texttt{at(R, PosB)}$
\item[Delete list] $\texttt{at(R, PosA)}$, $\texttt{hasFuel(R)}$
\end{description}
\end{descriptionlist}
\begin{minipage}{0.5\textwidth}
\begin{descriptionlist}
\item[\texttt{LOAD(Obj, Pos)}] \phantom{}
\begin{description}
\item[Preconds] $\texttt{at(R, Pos)}$, $\texttt{at(Obj, Pos)}$
\item[Add list] $\texttt{in(R, Obj)}$
\item[Delete list] $\texttt{at(Obj, Pos)}$
\end{description}
\end{descriptionlist}
\end{minipage}
\begin{minipage}{0.5\textwidth}
\begin{descriptionlist}
\item[\texttt{UNLOAD(Obj, Pos)}] \phantom{}
\begin{description}
\item[Preconds] $\texttt{in(R, Obj)}$, $\texttt{at(R, Pos)}$
\item[Add list] $\texttt{at(Obj, Pos)}$
\item[Delete list] $\texttt{in(R, Obj)}$
\end{description}
\end{descriptionlist}
\end{minipage}
Given a scenario where:
\begin{itemize}
\item \texttt{r} is a cart.
\item \texttt{a} and \texttt{b} are objects.
\item \texttt{l} and \texttt{p} are locations.
\end{itemize}
and the initial state is:
\begin{center}
\texttt{at(a, l)} $\cdot$ \texttt{at(b, l)} $\cdot$ \texttt{at(r, l)} $\cdot$ \texttt{hasFuel(r)}
\end{center}
The first four time steps of the planning graph are:
\begin{center}
\includegraphics[width=\textwidth]{img/_graphplan.pdf}
\end{center}
The inconsistencies at $t=1$ are:
\begin{descriptionlist}
\item[Inconsistent effects] \phantom{}\\[0.5em]
$\begin{cases}\texttt{NO-OP} \\ \texttt{LOAD(a, r)}\end{cases} \text{for } \texttt{at(a, l)}$,
$\begin{cases}\texttt{NO-OP} \\ \texttt{LOAD(b, r)}\end{cases} \text{for } \texttt{at(b, l)}$,\\[0.3em]
$\begin{cases}\texttt{NO-OP} \\ \texttt{MOVE(r, l, p)}\end{cases} \text{for } \texttt{at(r, l)}$,
$\begin{cases}\texttt{NO-OP} \\ \texttt{MOVE(r, l, p)}\end{cases} \text{for } \texttt{hasFuel(r)}$
\item[Interference] \phantom{}\\[0.5em]
$\begin{cases}\texttt{MOVE(r, l, p)} \\ \texttt{LOAD(a, r)}\end{cases} \text{for } \texttt{at(r, l)}$,
$\begin{cases}\texttt{MOVE(r, l, p)} \\ \texttt{LOAD(b, r)}\end{cases} \text{for } \texttt{at(r, l)}$
\end{descriptionlist}
The inconsistencies of at $t=2$ are:
\begin{descriptionlist}
\item[Competing needs] \phantom{}\\[0.5em]
Consequence of the add and delete list of each action:\\[0.3em]
$\begin{cases}\texttt{at(a, l)} \\ \texttt{in(r, a)}\end{cases}$,
$\begin{cases}\texttt{at(b, l)} \\ \texttt{in(r, b)}\end{cases}$,
$\begin{cases}\texttt{at(r, l)} \\ \texttt{at(r, p)}\end{cases}$,
$\begin{cases}\texttt{at(r, p)} \\ \texttt{hasFuel(r)}\end{cases}$\\[0.5em]
Consequence of the add list of interfering actions (mutual exclusion):\\[0.3em]
$\begin{cases}\texttt{in(r, a)} \\ \texttt{at(r, p)}\end{cases}$,
$\begin{cases}\texttt{in(r, b)} \\ \texttt{at(r, p)}\end{cases}$
\end{descriptionlist}
Note that because of the mutually exclusive propositions at $t=2$,
at $t=3$ the actions \texttt{UNLOAD($\cdot$, p)} cannot be performed.
\end{example}
\subsection{Fast forward}
\marginnote{Fast forward}
Heuristic planner based on Graphplan, hill climbing and A$^*$.
\begin{description}
\item[Heuristic]
Given a problem $P$, the algorithm considers a relaxation $P^+$
where delete effects are ignored.
$P^+$ is solved using Graphplan and the number of actions required to solve it is used as lower bound heuristic for $P$.
\item[Algorithm] \phantom{}
\begin{enumerate}
\item From a state $S$, examine the successors.
\item If there is a successor $S'$ better than $S$, move into it and return to point 1.
\item Otherwise, run a complete A$^*$ search.
\end{enumerate}
\end{description}