119 lines
4.7 KiB
TeX
119 lines
4.7 KiB
TeX
% Spatiotemporal conflict and its resolution by spatial decoupling.
|
|
% (a)(c) coupled single-channel paths -> the empty truck must wait;
|
|
% (b)(d) decoupled dual-channel paths -> both maneuvers proceed in parallel.
|
|
\documentclass[border=1pt]{standalone}
|
|
\input{figstyle}
|
|
\begin{document}
|
|
\begin{tikzpicture}[scale=0.0872]
|
|
|
|
% ======================================================================
|
|
% geometry shared by the two spatial panels
|
|
% ======================================================================
|
|
\def\sitebnd{
|
|
(2,6) -- (14,3.5) -- (30,3) -- (40,6) -- (45,13) -- (41,22)
|
|
-- (28,25) -- (14,22) -- (2,17)
|
|
}
|
|
% channel spine from the entrance to the loading bay
|
|
\def\spine{(2,11.5) .. controls (14,10.5) and (24,11.5) .. (34,15.5)}
|
|
|
|
% ---------------------------------------------------------------- panel a
|
|
\begin{scope}[shift={(0,0)}]
|
|
\fill[fillc, opacity=0.55] \sitebnd -- cycle;
|
|
\fill[white] \sitebnd -- cycle;
|
|
\draw[siteline] \sitebnd;
|
|
|
|
% conflict zone: both paths occupy the same channel
|
|
\fill[confc, opacity=0.16]
|
|
(4,8.6) .. controls (14,7.6) and (24,8.6) .. (33,12.6)
|
|
-- (35,18.4) .. controls (24,14.4) and (14,13.4) .. (4,14.4) -- cycle;
|
|
|
|
% the two paths coincide on the spine
|
|
\draw[parkpath] \spine;
|
|
\draw[exitpath, dash pattern=on 2.4pt off 1.6pt]
|
|
(34,15.5) .. controls (24,11.5) and (14,10.5) .. (2,11.5);
|
|
|
|
% loading pose
|
|
\fill[sitec] (34,15.5) circle (0.7);
|
|
\node[annt, sitec, above right] at (34.2,15.9) {$\boldsymbol{\eta}_\text{load}$};
|
|
|
|
\node[annt, confc] at (18,17.4) {conflict zone};
|
|
\node[panel] at (23.5,-1.8) {(a) coupled};
|
|
\end{scope}
|
|
|
|
% ---------------------------------------------------------------- panel b
|
|
\begin{scope}[shift={(52,0)}]
|
|
\fill[fillc, opacity=0.55] \sitebnd -- cycle;
|
|
\fill[white] \sitebnd -- cycle;
|
|
\draw[siteline] \sitebnd;
|
|
|
|
% virtual centerline and the two offset guidance lines
|
|
\draw[ctrline] \spine;
|
|
\draw[parkpath] (2,8.6) .. controls (14,7.6) and (24,8.6) .. (33.4,13.0);
|
|
\draw[exitpath] (34.6,18.0) .. controls (24,14.4) and (14,13.4) .. (2,14.4);
|
|
|
|
% channel width W between the two guidance lines
|
|
\draw[dimline] (16,8.0) -- (16,13.8);
|
|
\node[annt, fill=white, inner sep=0.3pt] at (16,10.9) {$W$};
|
|
|
|
\fill[sitec] (34,15.5) circle (0.7);
|
|
\node[annt, sitec, above right] at (34.2,15.9) {$\boldsymbol{\eta}_\text{load}$};
|
|
\node[annt, centc] at (7.5,19.3) {$\varLambda_\text{center}$};
|
|
\node[panel] at (23.5,-1.8) {(b) decoupled};
|
|
\end{scope}
|
|
|
|
% ======================================================================
|
|
% time-line panels
|
|
% ======================================================================
|
|
\def\tlen{40}
|
|
|
|
% ---------------------------------------------------------------- panel c
|
|
\begin{scope}[shift={(0,-24)}]
|
|
\draw[->, thin@] (2,0) -- (2+\tlen+3,0) node[annt, right] {$t$};
|
|
\draw[thin@] (2,0) -- (2,10.5);
|
|
|
|
% loaded truck leaves
|
|
\fill[exitc, opacity=0.75] (4,6.2) rectangle (18,8.6);
|
|
\node[annt, white] at (11,7.4) {outbound};
|
|
% empty truck waits, then parks
|
|
\fill[sitec, opacity=0.28] (4,2.6) rectangle (18,5.0);
|
|
\node[annt, sitec] at (11,3.8) {waiting};
|
|
\fill[parkc, opacity=0.75] (18,2.6) rectangle (32,5.0);
|
|
\node[annt, white] at (25,3.8) {inbound};
|
|
|
|
% excavator idle window
|
|
\draw[decorate, decoration={brace, amplitude=1.6pt, raise=0.6pt},
|
|
line width=0.4pt, confc] (18,1.9) -- (4,1.9);
|
|
\node[annt, confc] at (11,-1.2) {$T_\text{wait}>0$};
|
|
|
|
\node[annt, exitc, left] at (3.6,7.4) {L};
|
|
\node[annt, parkc, left] at (3.6,3.8) {E};
|
|
\node[panel] at (23.5,-5.4) {(c) coupled timing};
|
|
\end{scope}
|
|
|
|
% ---------------------------------------------------------------- panel d
|
|
\begin{scope}[shift={(52,-24)}]
|
|
\draw[->, thin@] (2,0) -- (2+\tlen+3,0) node[annt, right] {$t$};
|
|
\draw[thin@] (2,0) -- (2,10.5);
|
|
|
|
\fill[exitc, opacity=0.75] (4,6.2) rectangle (18,8.6);
|
|
\node[annt, white] at (11,7.4) {outbound};
|
|
\fill[parkc, opacity=0.75] (4,2.6) rectangle (18,5.0);
|
|
\node[annt, white] at (11,3.8) {inbound};
|
|
|
|
\draw[decorate, decoration={brace, amplitude=1.6pt, raise=0.6pt},
|
|
line width=0.4pt, corrc] (18,1.9) -- (4,1.9);
|
|
\node[annt, corrc] at (11,-1.2) {in parallel};
|
|
|
|
% the cycle ends earlier by the eliminated waiting time
|
|
\draw[thin@, sitec, dash pattern=on 1.4pt off 1.2pt] (32,1.9) -- (32,9.4);
|
|
\draw[dimline, confc] (18,9.8) -- (32,9.8);
|
|
\node[annt, confc, fill=white, inner sep=0.3pt] at (25,9.8) {saved};
|
|
|
|
\node[annt, exitc, left] at (3.6,7.4) {L};
|
|
\node[annt, parkc, left] at (3.6,3.8) {E};
|
|
\node[panel] at (23.5,-5.4) {(d) decoupled timing};
|
|
\end{scope}
|
|
|
|
\end{tikzpicture}
|
|
\end{document}
|