Diag_agent_à_état
Author
Said Benaissa
Last Updated
8 years ago
License
Creative Commons CC BY 4.0
Abstract
Diag_agent_à_état
Diag_agent_à_état
\documentclass[tikz]{standalone}
\usetikzlibrary{shapes.geometric,backgrounds,positioning-plus,node-families,calc}
\tikzset{
basic box/.style={
shape=rectangle, rounded corners, align=center,
draw=#1, fill=#1!25},
header node/.style={
Minimum Width=header nodes,
font=\strut\Large\ttfamily,
text depth=+0pt,
fill=white, draw},
header/.style={%
inner ysep=+1.5em,
append after command={
\pgfextra{\let\TikZlastnode\tikzlastnode}
node [header node] (header-\TikZlastnode) at (\TikZlastnode.north) {#1}
node [span=(\TikZlastnode)(header-\TikZlastnode)] at (fit bounding box) (h-\TikZlastnode) {}
}
},
hv/.style={to path={-|(\tikztotarget)\tikztonodes}},
vh/.style={to path={|-(\tikztotarget)\tikztonodes}},
fat blue line/.style={ultra thick, blue}
}
\begin{document}
\newpage
\begin{tikzpicture}[node distance=2cm, thick, nodes={align=center}, >=latex]
\node[Minimum Width=loop, shape=ellipse, fill=red] (imp-sol){Comment le monde maintenant:\\
\flushbottom
1- \'{E}tat ?\\
2- Comment le monde \'{e}volue ?\\
3- Quel est l'impact de mes actions ?};
\node[Minimum Width=loop, fill=yellow, below=of imp-sol] (rec-box) {Quelle action dois-je faire maintenant};
\node[Minimum Width=loop, shape=ellipse, fill=green,below=of rec-box] (imp-sol1){\'{E}tat (i-1)};
\node[Minimum Width=loop, fill=orange, below=of imp-sol1] (rec-box1) {\'{E}tat (i)};
\node[shift=(left:.3*x_node_dist)] at ($(imp-sol1.west|-imp-sol1.south)!.5!(rec-box1.north west)$) (for-3) {Condition};
\node[shift=(right:.3*x_node_dist)] at ($(imp-sol1.east|-imp-sol1.south)!.5!(rec-box1.north east)$) (for-4) {Action};
\node[shift=(left:.3*x_node_dist)] at ($(imp-sol.west|-imp-sol.south)!.5!(rec-box.north west)$) (for-1) {Condition};
\node[shift=(right:.3*x_node_dist)] at ($(imp-sol.east|-imp-sol.south)!.5!(rec-box.north east)$) (for-2) {Action};
\begin{scope}[on background layer]
\node[fit=(for-1)(for-2)(for-3)(for-4)(imp-sol1)(rec-box1)(imp-sol)(rec-box), basic box=blue, header=Agent] (dmft-l) {};
\end{scope}
\path[very thick, blue, hv] (rec-box) edge[->] (for-1) edge[<-] (for-2)
(imp-sol) edge[->] (for-2) edge[<-] (for-1)
(rec-box1) edge[->] (for-3) edge[<-] (for-4)
(imp-sol1) edge[->] (for-4) edge[<-] (for-3);
\node[east above=of dmft-l, basic box=green, header=Capteurs] (dmft-p)
{Perception d'\'{e}tat d'environnement};
\node[north left=of dmft-l, basic box=green, header= Effecteurs, shift=(down:y_node_dist)] (rho)
{Ex\'{e}xecution d'action};
\node[basic box=blue, header=Environnement, anchor=north] at (dmft-p.north-|rho) (dft)
{Environnement d'agent.};
\node[basic box=green, anchor=north] at ($(dft.north east)!.5!(dmft-p.north west)$) (upd) {Mise-\`{a}-jour};
\path[fat blue line, <-, dashed, vh] (rho) edge ({$(rho.south)!.5!(dmft-l.south)$}-|dmft-l.south west);
\path[fat blue line, ->] ({$(upd.south)!.5!(dmft-p.south)$}-|dmft-p.south west) coordinate (@)
edge[<-, solid] coordinate[pos=.2] (@s) coordinate[pos=.8] (@e) (@-|dft.east)
{[every edge/.append style=dashed, vh] (@s) edge[<-] (upd) (@e) edge (upd)}
(h-rho) edge[dashed] (dft)
($(dmft-p.south)!.5!(dmft-p.south east)$) coordinate (@) edge (@|-dmft-l.north);
\end{tikzpicture}
\newpage
\end{document}