Click here to Skip to main content
13,550,883 members
Click here to Skip to main content
Add your own
alternative version

Tagged as


36 bookmarked
Posted 14 Feb 2004

Intro to Intelligent Agents

, 14 Feb 2004
Rate this:
Please Sign up or sign in to vote.
Basic concepts in Intelligent Agent programming.


CodeProject has loads of great new .NET code and other great stuff, but when it comes to AI topics, it could use some more, in my opinion. So, I thought I would share some concepts covered in Stuart Russell and Peter Norvig's Artificial Intelligence: A Modern Approach. My intention is to educate, not to plagiarize, so I will not be covering everything in the chapter and paraphrase as much as possible. Below, I will attempt to answer an exercise question in the back of chapter 2, Intelligent Agents, in hopes for me to remember these concepts and also to share these concepts with everyone. I am not sure how this article will be received, but hey it's only the scrapbook which is kind of fitting really, but I am willing to take constructive criticism or positive feedback as to whether I should share more articles like this one in the future. I think I am becoming more of an architectural programmer than any thing else lately. Of course, this is all basic stuff and maybe boring for some AI gurus, but I would have loved an article like this when I was first getting serious about AI programming and browsing CodeProject.

What is the difference between a performance measure and a utility function?

What is an Agent?

An agent is anything that can be viewed as perceiving its environment through sensors and acting upon that environment through effectors.1 Effectors for humans are our ears, eyes, legs etc. For robotic agents, these can be motors and cameras etc.

What is a Rational Agent?

A rational agent performs an action correctly, but doing the correct thing doesn't always mean it is the most successful action to take. In order to evaluate what would be the most successful action for the agent to make, one must decide how and when to evaluate the agent's success. The criteria that determines how successful an agent is, is termed a performance measure.2 Each performance measure is normally unique to the agent because there is not a fixed measure appropriate for all agents, of course. Measuring performance over a long amount of time or a lifetime is ideal for satisfying the when measurement.

A very interesting topic that I have found while studying AI is knowing the difference between rationality and omniscience. An omniscience agent knows the actual outcome of its actions, and can act accordingly; but omniscience is impossible in reality.3 Take for example a person that has just bought some beautiful land in the mountains and constructs a large home to retire in. After it is completed, a large meteor plummets directly onto the house. Was it irrational to build the house where it was built? Rationality is only concerned with expected success given what has been perceived. So, the agent's personal perceptions are only one of the four important dependencies of rationality (the other three are listed in Chapter 2 and not really relevant to answer the question) at any given time. Everything that an agent has perceived so far is called a percept sequence.4 These percept sequences can be mapped to actions one by one or by more abstract and more effective methods.

Autonomy is the last thing we need to cover when defining a rational agent. It's when an agent relies not only on "built-in knowledge" by the designer. I like to think of this as an agent's innate programming, but more on its own perceptual data gathered from its environment.

What are Utility-based Agents?

Utility-based agents try and maximize their own perceived success by preferring one state over another. If one state is preferred over another then it is said to have a higher utility for the agent. A utility is therefore a function that maps a state (or a sequence of states, if we are measuring the utility of an agent over the long run) onto a real number, which describes the associated degree of happiness [perceived success].5 There are many different types of agents. The most basic are Reflex-based agents which respond directly from percepts and Goal-based agents which act just to achieve their goal. Each of these two agents are normally not as efficient as a utility-based agent.


A Performance Measure are how and when decisive factors that are needed to be known for an agent to make successful decisions. For example, if you wanted a plausible performance measure for a juggling robot, you would perhaps monitor how many bowling pins it is juggling successfully and for a certain time span. Juggling 2 bowling pins would certainly be different than juggling 3 and thus different performance measures would be created on each separate action.

While, a Utility Function is a performance measure method which analyzes an agent's own perceived performance measurements so to better choose a successful action. For example, if our juggling robot is tasked to juggle successfully for us, but we leave the decision on how many bowling pins it should juggle up to the robot (in this example, 2 or 3), while in its utility function, it will realize it doesn't perform well when juggling 3 bowling pins as it does when it juggles 2 bowling pins, unless of course, it does juggle 3 bowling pins better than juggling 2. However, from my own personal experience with juggling, I certainly juggle 2 bowling pins better than 3. :-D


  • 1 Stuart Russell, Peter Norvig (1995) Artificial Intelligence: A Modern Approach. Intelligent Agents (p. 31)
  • 2 Stuart Russell, Peter Norvig (1995) Artificial Intelligence: A Modern Approach. Intelligent Agents (p. 32)
  • 3 Stuart Russell, Peter Norvig (1995) Artificial Intelligence: A Modern Approach. Intelligent Agents (p. 32)
  • 4 Stuart Russell, Peter Norvig (1995) Artificial Intelligence: A Modern Approach. Intelligent Agents (p. 33)
  • 5 Stuart Russell, Peter Norvig (1995) Artificial Intelligence: A Modern Approach. Intelligent Agents (p. 44)


This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.

A list of licenses authors might use can be found here


About the Author

Network Administrator
United States United States
Born in Pennsylvania (USA), just north of Philadelphia. Joe has been programming since he was ten[now much older]. He is entirely self-taught programmer, and he is currently working as an IT Manager in Seattle WA. He was previously U.S. Navy Active Reservist for (SPAWAR)
In '98 was honorably discharged from the USN. He served onboard the USS Carl Vinson (94-98) He was lucky enough to drink President Clinton's leftover wine, promoted by his Captain, and flew in a plane off the flightdeck but not all at the same time. His interests, when time allows, are developing
misc apps and Artificial Intelligence proof-of-concept demos that specifically exhibits human behavior. He is a true sports-a-holic, needs plenty of caffeine, and a coding junkie. He also enjoys alternative music and a big Pearl Jam, Nirvana, new alternative music fan, and the Chainsmokers.

Joe is an INTP[^] personality type. Joe "sees everything in terms of how it could be improved, or what it could be turned into. INTP's live primarily inside their own minds." INTPs also can have the "greatest precision in thought and language. Can readily discern contradictions and inconsistencies. The world exists primarily to be understood. 1% of the total population" [

You may also be interested in...

Comments and Discussions

General[Message Deleted] Pin
Danny Rodriguez27-Jan-08 9:16
memberDanny Rodriguez27-Jan-08 9:16 
GeneralDo it in .net.... Pin
Michael Schwab1-Nov-04 9:50
memberMichael Schwab1-Nov-04 9:50 
GeneralRe: Do it in .net.... Pin
JoeSox1-Nov-04 12:36
memberJoeSox1-Nov-04 12:36 
Generalrubbish Pin
Anonymous20-Oct-04 19:55
sussAnonymous20-Oct-04 19:55 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

Permalink | Advertise | Privacy | Terms of Use | Mobile
Web03 | 2.8.180515.1 | Last Updated 15 Feb 2004
Article Copyright 2004 by JoeSox
Everything else Copyright © CodeProject, 1999-2018
Layout: fixed | fluid