\chapter{Agentní systémy}
\section{Inteligentní agent}
Pokud mluvíme o~agentních systémech, je nutné předem si vyjasnit základní pojem agent. Bohužel neexistuje přesná obecně přijímaná definice. Pro účely této práce můžeme použít například tu, kterou používá Michael Wooldrige v~\cite[kap. 1]{weiss}:  „\emph{Agent} je počítačový program, který je \emph{umístěn} v~nějakém \emph{prostředí} a~který je schopen \emph{autonomního jednání} v~tomto prostředí za účelem dosažení určených cílů.“ Autonomií se zde myslí schopnost samostatného jednání bez zásahu člověka nebo jiných programů. Tato definice se zatím vyhýbá pojmu \emph{inteligentní}, tomu se budeme věnovat později.

Agent z~definice má tedy určitý druh čidel, kterými může získat některé údaje o~svém okolí, omezený seznam akcí, které může provádět a~jistý algoritmus, který určuje jakou z~akcí (pokud vůbec nějakou) v~aktuálním čase provést.

Komplexnost rozhodovacího procesu závisí mimo jiné i~na prostředí. To můžeme klasifikovat z~mnoha pohledů. Zda lze či nelze získat úplné informace o~jeho současném stavu, jestli je deterministické nebo nedeterministické, tedy jestli stejná akce povede vždy ke stejnému konečnému stavu. Dále je možné rozlišit mezi statickým a~dynamickým prostředí. Ve statickém prostředí jsou veškeré změny stavu dílem pouze agenta, zatímco dynamické okolí se mění ať agent jedná nebo ne. Podobných rozdělení existuje mnoho, ale toto pro představu postačí. Nejlépe řiditelné je samozřejmě prostředí, které je plně popsatelné, deterministické a~statické, bohužel řízení dopravy je případem přesně opačným.

Naprosto typickým příkladem jednoduchého agenta umístěného v prostředí je termostat ovládající topení za účelem udržení stále teploty v~místnosti. Tento agent má jedno čidlo, kterým určuje jestli je teplota nižší než nastavená požadovaná, a~dvě možné akce: zapnutí a~vypnutí vytápění. Rozhodovací proces se pak skládá ze dvou pravidel:
%\begin{equation*}
\begin{align*}
\text{nízká teplota} & \longrightarrow \text{zapnout vytápění} \\
\text{správná teplota} & \longrightarrow \text{vypnout vytápění}
\end{align*}
%\end{equation*}

Takto postavený program se dá považovat za agenta, ale pravděpodobně jen málokdo by ho označil za agenta inteligentního. Problém je už samotná definice inteligence. Proto se omezíme na to, že inteligentní agent je takový, který dokáže flexibilně reagovat. Flexibilita znamená tři vlastnosti:
\begin{description}
	\item[reaktivita] -- inteligentní agent vnímá své okolí a~dle takto získaných údajů reaguje na jeho změny tak, aby splnil své nastavené cíle;
	\item[proaktivita] -- inteligentní agent je schopný předvídat chování systému a~na základě těchto předpovědí aktivně jednat tak, aby splnil své nastavené cíle;
	\item[sociální schopnosti] -- inteligentní agenti na sebe mohou vzájemně působit tak, aby splnili své nastavené cíle.
\end{description}

Požadavky na vysokou reaktivitu a proaktivitu jdou proti sobě. Je třeba najít vyvážený poměr mezi oběma. Extrémně reaktivní agent totiž na základě neustále přijímaných podmětů stále koná nějakou akci. Ovšem tímto způsobem se může dostat do stavu, kdy podměty způsobují zaměření agenta na různé cíle, kterou nejsou slučitelné a tím pádem ani jeden z cílů nemůže být nikdy uskutečněn. Na druhou stranu příliš proaktivní agent se zaměří na jeden cíl a kvůli tomu ignoruje, že počáteční podmínky, které ho k plnění cíle dovedly, už nejsou platné. Najít proto tu správnou míru je obtížná úloha.

Mezi sociální schopnosti nepatří jen rutinní výměna informací, kterou dnešní počítače provádějí prakticky neustále, ale především schopnost vyjednávat a spolupracovat při plnění společných nebo individuálních cílů. Mezi běžné akce tak patří navrhování změn spolu s přínosem, které by tato změna přinesla, jejich zvažování a následné přijetí, odmítnutí či protinávrh vedoucí ke kompromisu.

(...pokračování...)