Protocol Requirements for Self-organizing Artifacts: Towards an Ambient Intelligence

Extracted source text ยท arXiv nlin/0404004

\documentclass[twoside]{book}
\usepackage{graphicx}
\input ICCSsty.tex


%---------------------------------------------------------
% Give data to appear in the title section

\shtitle{Protocol Requirements for Self-organizing Artifacts}
\title{Protocol Requirements for Self-organizing Artifacts: Towards 
an Ambient Intelligence}
\author{Carlos Gershenson and Francis Heylighen \affil{Centrum Leo 
Apostel, Vrije Universiteit Brussel, Belgium \\ 
\{cgershen,fheyligh\}@vub.ac.be}}
\abstract{We discuss which properties common-use artifacts should 
have to collaborate without human intervention. We conceive how 
devices, such as mobile phones, PDAs, and home appliances, could be 
seamlessly integrated to provide an ``ambient intelligence" that 
responds to the user's desires without requiring explicit programming 
or commands. While the hardware and software technology to build such 
systems already exists, as yet there is no standard protocol that can 
learn new meanings. We propose the first steps in the development of 
such a protocol, which would need to be adaptive, extensible, and 
open to the community, while promoting self-organization. We argue 
that devices, interacting through ``game-like'' moves, can learn to 
agree about how to communicate, with whom to cooperate, and how to 
delegate and coordinate specialized tasks. Thus, they may evolve a 
distributed cognition or collective intelligence capable of tackling 
complex tasks.}

\begin{document}
\maketitle

\section{A Scenario}

The diversity and capabilities of devices we use at home, school, or 
work, are increasing constantly. The functions of different devices 
often overlap (e.g. a portable computer and a mobile phone have 
agendas; a radio-clock and a PDA have alarms), but most often we 
cannot combine their capabilities automatically (e.g. the PDA cannot 
tell the radio to set its alarm for the early Tuesday's appointment), 
and users need to repeat the same tasks for different devices (e.g. 
setting up an address book in different devices). Moreover, using the 
functionality of some devices in combination with others would be 
convenient (e.g. if my computer has an Intelligent User Interface, I 
would like to use it to ask for coffee, without the need of having 
speech recognition in the coffee machine: The computer should be able 
to ask the coffee machine for  cappuccino).

	Could we build devices so that they would \emph{automatically 
coordinate}, combining their functions, and possibly producing new, 
``emergent" ones? The technology to achieve this is already at hand. 
What we lack is a proper design methodology, able to tackle the 
problems posed by autonomously communicating artifacts in a 
constantly changing technosphere. In this paper we try to delineate 
the requirements that such a design paradigm should fulfill. The 
scenario we imagine considers a nearby future where technological 
artifacts \emph{self-organize}, in the sense that they are able to 
communicate and perform desirable tasks with minimal human 
intervention.

	This vision is closely related to the concept of ``Ambient 
Intelligence" (AmI)\cite{ISTAG2001}, which envisages a future where 
people are surrounded by ``smart" and ``sensitive" devices. AmI would 
be the result of the integration of three technologies: Ubiquitous 
Computing \cite{Weiser1993}, Ubiquitous Communication, and 
Intelligent User Friendly Interfaces. The first one conceives of a 
seamless integration of computation processes taking place in the 
variety of artifacts that surround us, being part of ``The Grid", the 
network that would allow anyone anywhere to access the required 
computing power. The present paper focuses on the aspect of 
Ubiquitous Communication that attempts to obtain seamless information 
exchange between devices. Intelligent User Friendly Interfaces should 
enable an intuitive, effortless interaction between users and devices.

	With current approaches, this scenario would be possible, 
since we have the technology, but extremely expensive, since people 
would need to buy from the same producer all of their devices. We can 
see a similar casein the area of Home Automation: the technology is 
available on the market, but it is not possible to buy today 
ventilation for a house, and in five years integrate the system with 
a new fire detector. An engineer needs to integrate them manually, so 
that the ventilation system could be activated if smoke is detected, 
simply because the ventilation system was not designed to receive 
such signals. These limitations increase the price and restrict the 
market of devices for Home Automation, since complete solutions 
should be bought in order to have full coordination and functionality 
between devices. People would be more willing to invest in Home 
Automation if they could have the possibility of acquiring it 
progressively.


\section{Requirements for self-organizing artifacts}

	We see self-organization as a paradigm for designing, 
controlling, and understanding systems 
\cite{GershensonHeylighen2003a}. A key characteristic of a 
self-organizing system is that structure and function of the system 
``emerge" from interactions between the elements. The purpose should 
not be explicitly designed, programmed, or controlled. The components 
should \emph{interact} freely with each other and with the 
environment, mutually adapting to reach an intrinsically 
``preferable" or ``fit" configuration (attractor), thus defining an 
emergent purpose for the system \cite{HeylighenGershenson2003}. By 
``self-organizing artifacts" we mean a setup where different devices, 
with different fabrications and functionalities, and moving in and 
out of different configurations, can communicate and integrate 
information to produce novel functionalities that the devices by 
themselves could not achieve.

	A first requirement for such communication is cross-platform 
compatibility. This is already achieved for programming with Java, 
and for documents with XML. Another requirement is wireless 
communication, which is offered by technologies such as IR, Bluetooth 
and WiFi. Near Field Communications (NFC) is a newly envisioned 
standard, proposed by a consortium headed by Sony, Nokia, and 
Philips, which would allow information to be transmitted between 
devices that come in close spatial proximity (``touching").

	Even with such a standard, the problem remains that the user 
generally would need to specifically request such communication 
between devices (e.g. ``transfer this file from here to there"). 
Ideally, the devices would \emph{know} what we want them to do and 
how to do it. User Interfaces already help us to tell them our 
wishes. Still, one device cannot tell \emph{another} device what we 
want, especially if they are produced by different manufacturers. 
This is a general problem of communication between artifacts: they 
can recognize standard messages, but they do not ``know" what the 
messages \emph{mean}. To avoid endless debates, we can say that the 
meaning of a message is determined by its \emph{use} 
\cite{Wittgenstein1999}: if a device has received a message, and does 
``the right thing" (for the user), then it has ``understood" the 
meaning of the message. Thus, the user's satisfaction is the ultimate 
measure of the effectiveness of the artifacts' performance.

	Another issue is how to deal with changes in technology. We 
do not want to reconfigure every artifact each time a new device 
arrives. Moreover, we want the old devices to be able at least to 
cope with the functionality of new ones. New devices should configure 
themselves as automatically as possible. Older ones may require user 
intervention at first (as they cannot know beforehand which functions 
will be required), but they should be able to cope with new 
technology being added to the network. The overall system must be 
\emph{adaptive}, \emph{extensible}, and \emph{open}.

	An adaptive system can cope with unexpected changes in its 
environment, as exemplified by the constantly changing technology. 
Having flexibility built into our systems is desirable: they should 
at least be able to tolerate events they were not designed for 
without breaking down, but preferably try to find adapted solutions, 
or at least ask assistance from the user. For example, home 
appliances have a limited set of functions. To have them 
self-organize (e.g. the alarm clock coordinating with the microwave 
oven, and the oven with the kettle), their functions could be easily 
programmed to respond to unknown messages. If a new device arrives, 
and an old one does not know what to do when it receives a message, 
it can check what the user wants, thus learning how to respond 
appropriately. The possibility to add more devices to an existing 
configuration may be called \emph{extensibility}.

	Suppose that a company develops adaptable and extensible 
devices that interact seamlessly with each other. This would still 
leave the problem that customers cannot add devices from other 
companies, as these would follow their own standards, thus creating 
compatibility problems. We believe that the solution is to have 
\emph{open} technologies, in the spirit of GNU. Open means that 
everyone has free access to their specifications. The advantage is 
that they can develop much faster, meeting the requirements of more 
people, because they are developed by a global community that can try 
out many more approaches than any single company. Still, a company 
can benefit in promoting an open technology, since this would provide 
them with free publicity while everyone is using their protocol (e.g. 
Sun's Java).

	Open technology can respond to the needs of the largest 
variety of people, while allowing problems and errors to be detected 
and corrected more easily. Another advantage is that it allows people 
to get updates developed by other users for free. For example, if I 
program my ``old" toaster to integrate with my new mobile phone, it 
costs me nothing to make the program available on the Internet to 
anyone else who might need it. Thus, updates, extensions, and 
specialized applications can flow much more quickly from a global 
community than from a private company. Still, companies would benefit 
from this approach, since people would be more willing to buy new 
devices as integrating them into their existing, open setup, will be 
easier.

\section{Achieving self-organization}

We can divide the problem of self-organizing integration into three 
subproblems: 1) devices should learn to \emph{communicate} with each 
other, even when they have no a priori shared understanding of what a 
particular message or function means; 2) devices should learn which 
other devices they can trust to \emph{cooperate}, avoiding the 
others; 3) devices should develop an efficient \emph{division of 
labour} and workflow, so that each performs that part of the overall 
task that it is most competent at, at the right moment, while 
delegating the remaining functions to the others.

	These issues are all part of \emph{collective intelligence} 
\cite{Heylighen1999} or \emph{distributed cognition} 
\cite{Hutchins1995}: a complex problem cannot be tackled by a single 
device or agent, but must be solved by them working together, in an 
efficiently coordinated, yet spatially distributed, system, where 
information flows from the one agent to the other according to 
well-adapted rules. Until now, distributed cognition has been studied 
mostly in existing systems, such as human organizations 
\cite{Hutchins1995} or animal ``swarms" \cite{BonabeauEtAl1998}, that 
have evolved over many generations to develop workable rules. Having 
the rules self-organize from scratch is a much bigger challenge, 
which has been addressed to some degree in distributed AI and 
multi-agent simulations of social systems. Inspired by these first 
explorations, we will propose a number of general mechanisms that 
could probably tackle the three subproblems. However, extensive 
simulation will clearly be needed to test and elaborate these 
mechanisms.

\section{Learning to communicate}

To communicate effectively, different agents must use the same 
concepts or categories. To achieve effective coordination, agents 
must reach a shared understanding of a concept, so that they agree 
about which situations and actions belong to that category, and which 
do not. A group of agents negotiating such a consensus may 
self-organize, so that a globally shared categorisation emerges out 
of local interactions between agents.

	Such self-organization has been shown in different 
simulations of the evolution of language 
\cite{Steels1998,HutchinsHazelhurst1995}. Here, interacting software 
agents or robots try to develop a shared lexicon, so that they 
interpret the same expressions, symbols, or ``words" in the same way. 
In these simulations agents interact according to a protocol called a 
``language \emph{game}". There are many varieties of such games, but 
the general principle is that two agents ``meet" in virtual space, 
which means that through their sensors they experience the same 
situation at the same time. Then they try to achieve a consensus on 
how to designate one of the components of their shared experience by 
each in turn performing elementary \emph{moves}.

	In a typical move, the first agent produces an ``utterance" 
referring to a phenomenon that belongs to one of its inbuilt or 
previously learned categories, and the second one finds the best 
fitting category for that phenomenon in its knowledge base. The 
second agent then indicates a phenomenon belonging to that same 
category. If this phenomenon also belongs to the same category for 
the first agent, both categorisations are reinforced, otherwise they 
are reduced in strength. In the next move of the ``game", another 
phenomenon is indicated, which may or may not belong to the category. 
The corresponding categorisation is strengthened or weakened 
depending on the degree of agreement. After a number of moves the 
game is stopped, each agent maintaining the mutually adjusted 
categories. Each agent in turn is coupled to another agent in the 
system, to play a new game using different phenomena. After some 
games a stable and coherent system of categories shared by all agents 
is likely to emerge through self-organization. A good example of such 
a set-up can be found in Belpaeme's \cite{Belpaeme2001}  simulation 
of the origin of shared colour categories.

	If for some reason devices are not able to communicate, they 
should be able to notify the user, and ask for the correct 
interpretation of the message. This is easy, since devices have a 
limited functionality. It would be possible to ``teach" a device what 
to do if it receives a particular message, and the device should 
``learn" the meaning of the message.

	Research has been done in multi-agent systems where agents 
negotiate their protocols \cite{ReedEtAl2001, DastaniEtAl2001}, which 
could be extended for a setup of self-organizing artifacts. However, 
agent communication standards, such as FIPA, still do not contemplate 
adaptation to new meanings. Nevertheless, there is promising research 
going on in this direction.


\section{Learning to cooperate}

Integrated devices should not only communicate, but cooperate. 
Cooperation may seem self-evident in preprogramed systems, where the 
components are explicitly designed to respond appropriately to 
requests made by other components. However, this is no longer the 
case in open, extensible configurations.

	For example, a person at the airport would like her PDA to 
collaborate with the devices present at the airport, so that it can 
automatically warn her when and where she has to go, or tell her 
which facilities are available in the airport lounge. Yet not all 
devices at the airport may be ready to help a PDA, e.g. because of 
security restrictions, because they are proprietary and reserved for 
paying customers, or because they simply do not care about personal 
wishes. Moreover, devices may be ready to share certain types of 
services but not others, e.g. telling users when the flight is 
scheduled to depart, but not how many passengers will be on it. As 
another example, devices may not only be uncooperative, but 
malevolent, in the sense that they try to manipulate other devices in 
a way detrimental to their user. Such devices may be programmed, e.g. 
by fraudsters, spies, or terrorists.

	There exists an extensive literature on the evolution of cooperation 
between initially ``selfish" agents, inspired by the seminal work of 
Axelrod \cite{Axelrod1984} that compared different strategies for 
playing a repeated ``Prisoners' Dilemma" game. However, this game 
does not seem directly applicable to information exchanging devices. 
Moreover, the chief result, while sensible, may seem trivial: the 
most effective strategy to achieve robust cooperation appears to be 
\emph{tit for tat}, i.e. cooperate with agents that reciprocate the 
cooperation, stop cooperating with those that do not. More recent, 
tag-based models (e.g. \cite{RioloEtAl2001, HalesEdmonds2003} start 
from a simpler situation than the Prisoners' Dilemma, in which one 
agent ``donates" a service to another one, at a small cost to the 
donor but a larger benefit to the recipient. The main idea is that 
agents are identified by ``tags", and that they cooperate with those 
agents whose tags are similar to their own. The rationale is that 
agents with the same type of tag belong to the same group, ``family" 
or ``culture", following the same rules, so that they can be trusted 
to reciprocate.

	For artifacts, a tag may include such markers as brand, 
model, and protocols understood. This would show that a device is 
capable and willing to lend particular services to another one, thus 
obviating the need for a repeated, ``tit-for-tat-like" interaction 
probing the willingness to reciprocate. Yet extensible environments 
should allow the addition of very dissimilar devices, made by 
different companies using different standards and functionalities. 
Therefore, we propose a different approach, combining some advantages 
of tags and tit-for-tat strategies.

	Consider a game with the following moves: an agent makes a 
request and the other agent either cooperates (donates) or 
``defects". Agents learn from these interactions in the following 
manner: if the result is positive (cooperation), the agent will get 
more ``trust" in the other agent's cooperativeness. Thus, the 
probability increases that it will make further requests to that 
agent in the future, or react positively to the other's requests. 
Vice-versa, a negative result will lead to more ``distrust" and a 
reduced probability to make or accept requests to/from this agent. 
Still, to recognise this agent, it has to take its clue from the tag, 
which is usually not unique to that agent. This means that a later 
interaction may be initiated with a different agent that carries a 
similar tag, but that is not necessarily willing to cooperate to the 
same extent. We may assume that if the first few interactions with 
agents having similar tags all generate positive (negative) results, 
the agent will develop a default propensity to react positively 
(negatively) always to agents characterised by that type of markers.

	We expect that in this way the initially undirected 
interactions will produce a differentiation in clusters of similarly 
marked agents that cooperate with each other (e.g. all devices 
belonging to the same user or organization), but that are reluctant 
to interact with members of other groups (e.g. devices belonging to 
rival organizations). The tags and their association thus develop the 
function of a mediator \cite{Heylighen2003} that increases the 
probability of positive interactions by creating a division between 
``friends" (in-group) and ``strangers" or ``foes" (out-group). Note, 
however, that there is no assumption that an agent only cooperates 
with agents bearing the same tag as itself: by default it cooperates 
with anyone having a tag similar to the one of agents that were 
cooperative in the past. This means that there can be groups with 
which everyone cooperates (e.g. ``public" devices), but also that 
specific types of ``symbiosis" can develop in which one group 
systematically seeks out members of a different group to cooperate 
with because of their complementary capabilities. This brings us to 
the more complex issue of the division of labour.


\section{Learning to coordinate}

	After having ascertained that our devices can communicate and 
cooperate, we still need to make sure that the functions they perform 
satisfy the user. This desired functionality can be viewed as a 
complex of tasks that need to be executed. The tasks are mutually 
dependent in the sense that a certain task (e.g. locating a file) has 
to be accomplished before subsequent tasks (e.g. downloading and 
playing the file) can be initiated. Each agent can either execute a 
task itself, or delegate it to another agent. Initially, we may 
assume that all agents that have a certain functionality built in 
(e.g. playing a sound file) are equally competent at performing that 
type of task. However, in practice the satisfaction of the user can 
vary. For example, a recording is likely to be played with a higher 
sound quality by a music installation than by a PDA or television. By 
default, devices can use certain preprogramed rules-of-thumb to 
decide who takes precedence (e.g. newer or more specialized devices 
are preferred to older, less specialized ones). Yet in an open 
environment there is no guarantee that such simple heuristics will 
produce the best result. Again, we may tackle this problem through 
individual learning coupled with collective self-organization.

	Assume that the user regularly expresses his/her overall 
satisfaction with the ambient intelligence environment (e.g. 
explicitly by clicking on a scale from one to ten, or implicitly by 
facial or physiological cues that express happiness/unhappiness). 
This score can be used as a feedback signal to the network of 
devices, allowing it to reinforce the more successful rules, while 
weakening the less effective ones. We will assume that the agent who 
delegated a task will increase its trust in the competence of the 
agent that performed that task, and thus increase its probability to 
delegate a similar task to the same agent in the future. Otherwise, 
it will reduce its trust. As demonstrated by the simulation of Gaines 
\cite{Gaines1994}, this assumption is sufficient to evolve a 
self-reinforcing division of labour where tasks are delegated to the 
most ``expert" agents.

	However, when the tasks are mutually dependent, selecting the 
right specialist to carry out a task is not sufficient: First the 
preparatory tasks have to be done by the right agents, in the right 
order. When the agents do not know a priori what the right order is, 
they can randomly attempt to execute or delegate a task, and, if this 
fails, pick out another task. Eventually they will find a task they 
can execute, either because it requires no preparation, or because a 
preparatory task has already been accomplished by another agent. Each 
completed task enables the accomplishment of a series of directly 
dependent tasks. In this way the overall problem will eventually be 
solved. In each problem cycle, agents will learn better when to take 
on which task by themselves, or when to delegate it to a specific 
other agent.

We expect that this learned organisation will eventually stabilise 
into a system of efficient, coordinated actions, adapted to the task 
structure. When new devices are added to the system, system and 
device should mutually adapt, producing a new organization. While no 
single agent knows how to tackle the entire problem, the knowledge 
has been ``distributed" across the system. The ``tags" that identify 
agents, and the learned associations between a tag and the competence 
for a particular task, play the role of a mediator 
\cite{Heylighen2003}, delegating tasks to the right agents and 
coordinating their interactions so that the problem is tackled as 
efficiently as possible.


\section{Conclusions}

We cannot keep on adding functions to personal computers. They serve 
as text editors, game consoles, televisions, home cinemas, radios, 
agendas, music players, gateway to the Internet, etc. Such general 
devices will never produce the same quality as specialized 
appliances. Our PCs are like ducks: they can swim, but not as well as 
fish; fly, but not as well as hawks; and walk, but not as well as 
cats. Rather than integrate so many functions in a single device, it 
seems preferable to entrust them to an ever expanding network of 
specialized devices that is kept coordinated through an ongoing 
process of self-organization. We have described a number of general 
requirements and approaches that may enable our artifacts to learn 
the most effective way of cooperation.

In our overall scenario, we have assumed that standard functions and 
interaction rules are preprogrammed by a global community to handle 
the most common, default situations, but that the system is moreover 
ready to extend its own capabilities, adapting to newly encountered 
tasks, situations, or devices. This ability to adapt should be 
already present in the interaction rules. The adaptation may be 
achieved through the self-organization of the system of agents, using 
recurrent, ``game-like" interactions, in which the agents learn what 
messages mean and who they can trust to perform which task. Most of 
this can happen outside of, or in parallel with, their normal 
``work", using idle processing power to explore many different 
communication and collaboration configurations. Thus, we can imagine 
that our future, intelligent devices, like young animals or children, 
will learn to become more skilful by exploring, ``playing games" with 
each other, and practising uncommon routines, so as to be prepared 
whenever the need for this kind of coordinated action appears.

\section{Acknowledgements}

We thank Peter McBurney for useful comments. C. G. was supported in 
part by CONACyT of Mexico.

\bibliographystyle{ICCS}
\bibliography{carlos,sos}

\end{document}
% tt 4-30-98 -*- Mode:TeX -*-
% ICCSsty.tex (LATEX style for International Conference on Complex Systems); LaTeX2e only!
% revised to fit given Word format
% Copyright (c) Tommaso Toffoli 1998

%---------------- OVERALL GEOMETRY ----------------

 \pagestyle{headings}	%
% \headheight	.15in	%
% \headsep	.28in	%
 \footskip	0in
 \textheight	7.55in
 \footskip	0in
 \textwidth	 4.8in
 \oddsidemargin  .85in
 \evensidemargin .85in
 \sloppy

 \makeatletter
%---------------- TITLE SECTION ----------------
\ifx\UNDEF\mail\def\mail{ }\else\fi
\ifx\UNDEF\prange\def\prange{0 0}\else\fi

\gdef\@empty{}
\def\Mail#1 #2 {\gdef\thecontact{#1}\gdef\theaddr{#2}}
\def\Range#1 #2 {\gdef\thefirstpage{#1}\gdef\thelastpage{#2}}
{\let\'\mail \expandafter\Mail\' }	% do not remove space between ' and }
{\let\'\prange \expandafter\Range\' }	% do not remove space between ' and }
% \setcounter{page}{\thefirstpage}
 \gdef\@shtitle{\relax}
 \long\def\shtitle#1{\gdef\@shtitle{#1}}
% \gdef\@shauthor{\relax}
% \long\def\shauthor#1{\gdef\@shauthor{#1}}
 \long\def\author#1{\gdef\@author{#1}}
 \def\affil#1{\par\noindent{\rm#1\par}}
 \gdef\@abstract{}
 \long\def\abstract#1{\gdef\@abstract{#1}}

 \renewcommand{\@evenhead}{\thepage\qquad\qquad\@shtitle\hfil}
 \renewcommand{\@oddhead}{\hfil\@shtitle\qquad\qquad\thepage}

 \def\maketitle{\thispagestyle{empty}\chapter{\@title}}
 \renewcommand\chapter{\if@openright\cleardoublepage\else\clearpage\fi
                    \thispagestyle{empty}%
                    \global\@topnum\z@
                    \@afterindentfalse
                    \secdef\@chapter\@schapter}
 \def\@makechapterhead#1{%
  \vspace*{50\p@}%
  {\parindent \z@ \raggedleft \normalfont
    \ifnum \c@secnumdepth >\m@ne
      \if@mainmatter
        \huge \@chapapp{} \thechapter
        \par\nobreak
        \vskip 20\p@
      \fi
    \fi
    \interlinepenalty\@M
    \Huge \bfseries #1\par\nobreak
    \vskip.25in
    \large\bfseries\@author\par\nobreak
    \vskip 40\p@}
    \ifx\@abstract\@empty\else{\small\@abstract\par\vskip20\p@}\fi
  }

 %---------------- EMPHASIS ----------------
 %% Use boldface for terms being defined
 \let\tdf\textbf
 \let\df\bf

 %% Use slanted rather than italic for emphasis
\DeclareRobustCommand\em
        {\@nomath\em \ifdim \fontdimen\@ne\font >\z@
                       \upshape \else \slshape \fi}
\let\tem\emph

 %%	use \sl rather than \it in theorems [to be upgraded]
\def\@begintheorem#1#2{\sl \trivlist \item[\hskip \labelsep{\bf #1\ #2}]}
\def\@opargbegintheorem#1#2#3{\sl \trivlist
     \item[\hskip \labelsep{\bf #1\ #2\ (#3)}]}

 %======================== CROSS-REFERENCING ==================
 \newcommand{\sect}[1]{\S\ref{sect:#1}}      % Ref. to section or subsection
                                        %   to appear as, say, $2.37
 \newcommand{\baresect}[1]{\ref{sect:#1}}      % Ref. to one more section or
                                 %    subsection to appear as, say, 2.37
 \newcommand{\eq}[1]{(\ref{eq:#1})}	% Ref. to equation
                                        %   to appear as, say, (2.37)
 \newcommand{\foot}[1]{footnote \ref{foot:#1}} % Ref. to footnote
                                        %   to appear as, say, `footnote 7'.
 \newcommand{\fig}[1]{Fig.~\ref{fig:#1}}

 \newcommand{\sectlabel}[1]{\label{sect:#1}}
 \newcommand{\eqlabel}[1]{\label{eq:#1}}
 \newcommand{\figlabel}[1]{\label{fig:#1}}

 %======================== SECTIONING ========================
 %% Small sections
% \newcommand{\smallsection}[1]{\par\medskip\noindent{\em#1}\par\smallskip}
 \let\smallsection\subsubsection \setcounter{secnumdepth}{2}
 \newcommand{\parhead}[1]{\tsl{#1}.\quad} % Distinguished paragraph
		% heading; slanted, followed by \quad

 %% allow printing 0 as a section (or subsection, item, etc.) number
% \def\@arabic#1{\ifnum #1>0 \number #1\fi} % original definition
  \def\@arabic#1{\number #1} % my redefinition

 %======================== FIGURES ========================
 %% change captions from \normalsize to \small
\long\def\@makecaption#1#2{
	\vskip\abovecaptionskip
	\sbox\@tempboxa{{\small {\bf #1}: #2}}%
	\ifdim\wd\@tempboxa>\hsize
	    {\small {\bf #1}: #2\par}
	\else
	   \global\@minipagefalse
	   \hbox to\hsize{\hfil\box\@tempboxa\hfil}
	\fi
	\vskip \belowcaptionskip}

\def\figstrut#1{\hbox to\linewidth{\vrule height#1\hfill}}

%%%% Single-column figure
\newcommand{\Fig}[4][!htb]{% [position] label, picture, caption
\begin{figure}[#1]
 \centering\leavevmode#3%
 \caption{#4}
 \figlabel{#2}
\end{figure}                 }
 \let\figonecol\Fig

%%%% Two-column figure
 \newcommand{\Figwide}[4][!t]{% [position] label, picture, caption
 \begin{figure*}[#1]
  \centering\leavevmode#3%
  \caption{#4}
 \figlabel{#2}
 \end{figure*}                 }
 \let\figtwocol\Figwide

%%%% Float-page figure
 \newcommand{\Figpage}[3]{% label, picture, caption
 \begin{figure*}[p] 
  \centering\leavevmode#2%
  \caption{#3}
 \figlabel{#1}
 \end{figure*}                 }
 \let\figpage\Figpage

\renewenvironment{thebibliography}[1]
     {\section*{\bibname
        \@mkboth{\MakeUppercase\bibname}{\MakeUppercase\bibname}}%
      \list{\@biblabel{\@arabic\c@enumiv}}%
           {\settowidth\labelwidth{\@biblabel{#1}}%
            \leftmargin\labelwidth
            \advance\leftmargin\labelsep
            \@openbib@code
            \usecounter{enumiv}%
            \let\p@enumiv\@empty
            \renewcommand\theenumiv{\@arabic\c@enumiv}}%
      \sloppy
      \clubpenalty4000
      \@clubpenalty \clubpenalty
      \widowpenalty4000%
      \sfcode`\.\@m}
     {\def\@noitemerr
       {\@latex@warning{Empty `thebibliography' environment}}%
      \endlist}
\makeatother

\bibliographystyle{ICCS}

\endinput

 \def\maketitle{%
  \thispagestyle{empty}
    \raggedleft
    \noindent\@author\par
    \medskip
    \noindent\hrule
    \smallskip
    \noindent{\Huge\sf\@title\par}
    \vfil\vfil\vfil\vfil
    {\narrower\narrower\noindent\@abstract\par}\newpage}

\begin{thebibliography}{10}

\bibitem{Axelrod1984}
{\sc Axelrod{\rm , R.~M.}},
\newblock {\em The Evolution of Cooperation},
\newblock Basic Books New York (1984).

\bibitem{Belpaeme2001}
{\sc Belpaeme{\rm , Tony}},
\newblock ``Reaching coherent colour categories through communication'',
\newblock {\em Proc. 13th Belgium-Netherlands Conference on {AI}\/} ({\sc B.~K.
  et~Al.} ed.),
\newblock (2001),
\newblock 41--48.

\bibitem{BonabeauEtAl1998}
{\sc Bonabeau{\rm , E}, {\rm M.~}Dorigo, {\rm and} {\rm G.~}Theraulaz},
\newblock {\em Swarm Intelligence},
\newblock Oxford University Press (1998).

\bibitem{DastaniEtAl2001}
{\sc Dastani{\rm , Mehdi}, {\rm Joris }Hulstijn, {\rm and} {\rm Leendert~Van
  der }Torre},
\newblock ``Negotiation protocols and dialogue games'',
\newblock {\em International Conference on Autonomous Agents\/},
\newblock ACM (2001),
\newblock 180 -- 181.

\bibitem{Gaines1994}
{\sc Gaines{\rm , B.~R.}},
\newblock ``The collective stance in modeling expertise in individuals and
  organizations'',
\newblock {\em Int. J. Expert Systems {\bf71}\/} (1994),
\newblock 22--51.

\bibitem{GershensonHeylighen2003a}
{\sc Gershenson{\rm , Carlos}, {\rm and} {\rm Francis }Heylighen},
\newblock ``When can we call a system self-organizing?'',
\newblock {\em Advances in Artificial Life, 7th European Conference, {ECAL}
  2003 {LNAI} 2801\/} ({\sc W.~Banzhaf, T.~Christaller, P.~Dittrich, J.~T. Kim,
  and J.~Ziegler} eds.),
\newblock Springer-Verlag (2003),
\newblock 606--614.

\bibitem{HalesEdmonds2003}
{\sc Hales{\rm , D.}, {\rm and} {\rm B.~}Edmonds},
\newblock ``Evolving social rationality for {MAS} using "tags"'',
\newblock {\em Proceedings of the 2nd International Conference on Autonomous
  Agents and Multiagent Systems\/} ({\sc J.~S.~R. et~Al.} ed.),
\newblock ACM Press (2003),
\newblock 497--503.

\bibitem{Heylighen1999}
{\sc Heylighen{\rm , Francis}},
\newblock ``Collective intelligence and its implementation on the web'',
\newblock {\em Computational and Mathematical Theory of Organizations {\bf5}\/}
  (1999),
\newblock 253--280.

\bibitem{Heylighen2003}
{\sc Heylighen{\rm , Francis}},
\newblock ``Mediator evolution'',
\newblock {\em Tech. Rep. no.},
\newblock Principia Cybernetica,
\newblock (2003).

\bibitem{HeylighenGershenson2003}
{\sc Heylighen{\rm , Francis}, {\rm and} {\rm Carlos }Gershenson},
\newblock ``The meaning of self-organization in computing'',
\newblock {\em IEEE Intelligent Systems\/} (July/August 2003),
\newblock 72--75.

\bibitem{Hutchins1995}
{\sc Hutchins{\rm , E}},
\newblock {\em Cognition in the Wild},
\newblock MIT Press (1995).

\bibitem{HutchinsHazelhurst1995}
{\sc Hutchins{\rm , E.}, {\rm and} {\rm B.~}Hazelhurst},
\newblock ``How to invent a lexicon: The development of shared symbols in
  interaction'',
\newblock {\em Artificial Societies\/} ({\sc N.~Gilbert and R.~Conte} eds.),
\newblock UCL Press (1995).

\bibitem{ISTAG2001}
{\sc ISTAG{\rm }},
\newblock ``Scenarios for ambient intelligence in 2010'',
\newblock {\em Tech. Rep. no.},
\newblock ISTAG,
\newblock (2001).

\bibitem{ReedEtAl2001}
{\sc Reed{\rm , C.}, {\rm T.~J. }Norman, {\rm and} {\rm N.~R. }Jennings},
\newblock ``Negotiating the semantics of agent communication languages'',
\newblock {\em Computational Intelligence {\bf18}}, 2 (2001),
\newblock 229--252.

\bibitem{RioloEtAl2001}
{\sc Riolo{\rm , R.}, {\rm M.~D. }Cohen, {\rm and} {\rm R.~M. }Axelrod},
\newblock ``Evolution of cooperation without reciprocity'',
\newblock {\em Nature {\bf414}\/} (2001),
\newblock 441--443.

\bibitem{Steels1998}
{\sc Steels{\rm , Luc}},
\newblock ``Synthesising the origins of language and meaning using
  co-evolution, self-organisation and level formation'',
\newblock {\em Approaches to the Evolution of Language\/} ({\sc J.~R. Hurford,
  M.~Studdert-Kennedy, and C.~Knight} eds.),
\newblock Cambridge University Press (1998),
\newblock 384--404.

\bibitem{Weiser1993}
{\sc Weiser{\rm , M.}},
\newblock ``Some computer science problems in ubiquitous computing'',
\newblock {\em Communications of the ACM\/} (July 1997).

\bibitem{Wittgenstein1999}
{\sc Wittgenstein{\rm , Ludwig}},
\newblock {\em Philosophical Investigations} 3rd~ed.,
\newblock Prentice Hall (1999).

\end{thebibliography}