Wednesday, July 15, 2009

Artificial Neural Networks (ANN)

A Neural Network is a massively parallel distributed processor that
has a natural propensity for storing experiential knowledge and
making it available for use
--Haykin

Neural networks are composed of simple elements operating in parallel. These
elements are inspired by biological nervous systems. As in nature, the
connections between elements largely determine the network function. You
can train a neural network to perform a particular function by adjusting the
values of the connections (weights) between elements.
Typically, neural networks are adjusted, or trained, so that a particular input
leads to a specific target output.

Neural networks have been trained to perform complex functions in various
fields, including pattern recognition, identification, classification, speech,
vision, and control systems.
Neural networks can also be trained to solve problems that are difficult for
conventional computers or human beings. The toolbox emphasizes the use of
neural network paradigms that build up to—or are themselves used in—
engineering, financial, and other practical applications.

MADKIT- Getting Started with MADKIT.

1.Download the latest version of Madkit to your computer.

The MadKit home-page is at http://www.madkit.org . It is the place where new software releases, documentation or additional agent packs can be downloaded

2.Multi Agent Development Kit (Madkit) installation.

First install required java version (depending on the Madkit version java version will change). If you do not have java installed on your machine, download java version from http://www.java.sun.com and install it. If you have installed java with your computer and if it does not work please check the "path" environmental variable on your machine.

It is pretty easy to install the madkit on your computer; it is just unzipping the downloaded zip file to requited location.

3.Launching MadKit

Go to the bin directory ( For example if our unzipped location is D:\Agent\madkit4.2.0, then go to that folder and it will contain several folder such as "bin"," cache", "lib", etc. Then go the bin directory and double click the madkit.exe file.

4.Now we are ready with our Madkit agent development platform to start our first "Agent".

Multi Agent system tools

Tool 2: Java based tool - MADKIT (part 01)

MadKit (http://www.madkit.org/) is a modular and scalable multi agent platform written in java and it is a free software based on the GPL/LGPL license. With MadKit we can define "Agents" and club agent to the "Groups" and assign "Roles" for a group. Agent and group communication based on peer to peer.

Madkit, which is written in Java, works in a distributed way accross machines (with different OS) without needing a central server. Communications and groups can be freely distributed and the distribution is performed transparently at the application level. Agents can be programmed in multiple language. For the moment Java, Scheme (Kawa) and Jess (a rule based language written in Java and based on the Clips system) are the first available programming languages. Other languages will be available in the future.

The madkit architecture is totally modular. The micro-kernel (less than 60k of compiled Java code) is extended by a set of various libraries of messages, probes and agents. System services and debugging tools are themselves provided as agents, making system extensions easy and simple to implement.The reduced size of the micro-kernel, combined with the principle of modular services managed by agents enable a range of multiple, scalable platforms and construction of libraries of specialized agent models.

As an example of its modularity, Madkit comes with tools for building simulations and artificial life applications using a specialized synchronous engine which allows for thousands of agents to work together on a single machine.

MadKit comes with an easy to use graphic box but, as agents are decoupled from their interface, it is easy to embed MadKit agents into a specific application.

Multi Agent system tools - Voyager

Tool 1: Java based tool -Voyager

Voyager is a 100% Java agent-enhanced Object Request Broker (ORB). It combines the power of mobile autonomous agents and remote method invocation with complete CORBA support and comes complete with distributed services such as directory, persistence, and publish subscribe multicast. Voyager allows Java programmers to quickly and easily create sophisticated network applications using both traditional and agent-enhanced distributed programming techniques.

Voyager uses regular Java message syntax to construct remote objects, send them messages,and move them between applications. Voyager allows agents (i.e, autonomous objects) to move themselves and continue executing as they move. In this way, agents can act independently on the behalf of a client, even if the client is disconnected or unavailable. This approach is particularly valuable in any type of workflow or resource automation.

1. Download Evaluation version from the Voyager site.

2. Install java and verify the installation

The Voyager installer requires Java 1.4 or higher to be installed on the target system.

To verify that you have a supported version of Java installed, open a command window and enter the following

command:

>java -version

If the version information printed shows you do not have a 1.4 or better version of Java,

or you get a “command not found” error, download Java from the Sun website at http://java.sun.com and install.

If you already install, check the path/java_home environment variables.

3. Install Voyager

After verifying you have a supported version of Java installed, install Voyager using the installer downloaded

4. Install Voyager License

You will receive an email containing license information in addition to the email containing the link to the Voyager evaluation download.

Follow the steps in this email to create a license file.

5. Verify Correct Installation

After creating the license file verify Voyager has been correctly installed by opening a

command window and entering the following command from the Voyager bin directory:

Windows users: >voyager //localhost:8000

Linux users : >voyager //localhost:8000

You should see Voyager successfully start.

6. The next step is to learn how to use Voyager in your development environment. If you

are a Java developer, begin with the Eclipse Getting Started Guide. If you are a .NET

developer, begin with the Visual Studio Getting Started Guide. (These files are located in

the doc/ directory of your Voyager installation directory.) These guides will take you

through the process of integrating Voyager into your development environment and

setting up the examples.

Once you have set up your development environment, it’s time to run a few examples to

give you a basic idea of what Voyager can do and to familiarize yourself with the basics

of a Voyager application. We recommend the following examples:

1. Basics1 and Basics2

2. Naming1 and Naming2

3. Message1, Message2, and Message3


Sunday, July 12, 2009

Genetic Algorithm and Genetic Algorithm Simulator

If someone ask from you “how AI solve problems in real life” the answer would be “ it is same as how animal(people ) solve that problem in real life”. All the problem solving strategies or methodologies based on some natural phenomena. People developed problem solving methodologies by examine the evolution in the natural world. It displays a remarkable problem solving ability. It would therefore not be unreasonable to deduce that a problem solving strategy, inspired by the mechanics of natural selection and genetics, may prove highly effective in solving certain classes of problems.


Genetic algorithms emulate the mechanics of natural selection by a process of randomized data exchange. In this way they are able to solve of range of difficult problems which cannot be tackled by other approaches. Because genetic algorithms were inspired by the behavior of natural systems, the terminology used to describe them is a mix from both biological and computer fields.

Genetic algorithms were developed after original work by Holland. GA solves problem, which a closed-form solution is unknown, or impossible to obtain with classical methods.


Genetic algorithm Sample Simulator

http://www.rennard.org/alife/english/gavintrgb.html#rTit01

Artificial Intelligence: Making manager smarter

I prepared this article for a paper (several month back). For your convenient I have included the the references (not posted in the paper ) also.

AI
started to dominate in various industries after 1980s.[1] From that day onwards research experts carried out researches on improving the capabilities of AI based systems and methods of using them in different industries in order to increase the accuracy of decision support, process efficiency and accuracy. [2] Present day AI based systems are capable of simulating some of the aspects of human intelligence. The application domain of AI based systems spread across many industries where there are expert systems which are capable of capturing all the knowledge accumulated by humans who has achieved mastery in those industry domains, and those systems will apply that knowledge to given situations in similar ways as the human expert does.

[2] Emerging trends of AI includes integrating it with traditional software systems such as CRM, Business Intelligence etc Objectives of a CRM tool is to provide better customer management and improved cross-selling of products. Reports generated from these tools will provide more flexible and timely decision support for top level management in any industry. AI based CRM solutions enable product and service oriented organizations to meet the increasing customer service demand and provide the benefit of low operation cost effectively. These systems provide enterprise contact management solutions with speech recognition, automatic help desk, case-based reasoning which provide contact center staff with the necessary information for handling customer queries in real time more accurately. [3] In future, it is quite likely that intelligent agents will replace human contact center staff by attending instant messaging or voice based responses. For an example, there are interactive chat bots available in the internet such as ‘George’ which relies entirely on feedback, and uses contextual learning techniques to improve conversation. ‘George’ is constantly learning from every conversation he has. By remembering what humans have said to him he is essentially borrowing their intellect, allowing him to find the most appropriate thing to say by matching a user’s input to patterns stored in his database. The commercial interest for chat bots such as ‘George’ points to a very promising future for the AI involvement in cutting edge contact center technology. So one day in future when you seek helps with your broadband connection, the ‘‘person’’ that you’re speaking with may be George.

[4] Since the dawn of the digital economy, one of the important areas of Information Technology has been decision support. Today this area is more important than ever. Working in rapidly changing environments, modern day managers are responsible for an assortment of far-reaching decisions: Should the company increase or decrease its workforce? Enter new markets? Develop new products? Invest in research and development? The list continues. All these decisions can be breakdown into two fundamental questions: What is likely to happen in the future?, What is the best decision right now?

These two questions pass through our day-to-day lives both on a personal or professional level. For instance, when driving to work we have to make traffic predictions before selecting the quickest driving route. At work we need to predict the demand for our products before we can decide how much to produce. Also before investing in a foreign market we have to predict future exchange rates and economic variables. It seems like the prediction of what likely to happen in future and making the best decision based on that is essential. This fundamental process supports the basic principle of Adaptive Business Intelligence. It involves combining of prediction, optimization, and adaptability into a system capable of answering those two fundamental questions. Today we can apply adaptive business intelligence to many real world business problems, such as demand forecasting and scheduling, churn management to fraud detection and investigation strategies etc. [5] Adaptive Business Intelligence requires adaptive data mining models in order to extract hidden predictive information from large volumes of data. These tools execute on top of a data warehouse which is responsible for gathering and organizing historical information resulted from processing of transactions in large-scale client/server-based applications. When it comes to these transaction data there are hidden trends which are important for organizations to effectively make decisions.

It is impractical to expect a data mining technique to handle all kinds of data and to perform different goals of data mining effectively. In general, a specific system is built for mining knowledge from a specific kind of data. Bellow table summarizes some data mining functionalities, techniques, and applications.

Building data mining models bring up various challenges in real world. As pointed earlier adaptive data mining models will thrive upon others due to its ability of predicting the future. [6] From early day’s industries involving in manufacturing used software systems to support various manufacturing processes. Flexible manufacturing systems (FMS) are able to manufacture products in small quantities with efficiency comparable with that of high volume production. Traditionally, manufacturing systems are commonly established with centralized hierarchical control software, which require tight working relationship between its components. Therefore this kind of software is generally difficult to develop and implement for advanced manufacturing systems such as an FMS. It is also not flexible enough to cope with the dynamic changes of manufacturing processes. This is due to the lack of a dynamic model to deal with the real time product and process changes.

In recent years, researchers have attempted to apply agent technology to manufacturing enterprise integration, supply chain management, manufacturing planning, scheduling and control, materials handling etc. For applications in decentralized manufacturing control, agents communicate and negotiate with one another to perform the operations based on the available local information. The overall performance of a decentralized manufacturing system depends on the negotiations among the agents and the quality of the data used to make these decisions.
For FMS design, researchers have recognized the importance of establishing an intelligent and distributed framework in the development of the control system. The application of agents has received much attention due to the benefits of using agents in solving various complex manufacturing problems.

As a summary, there’s a rapid use of Artificial Intelligence in various industry domains as new trends or as improvements for existing software systems.
Selected Topics

References
[1] Artificial Intelligence, A Modern Approach - 2nd Edition
[2] Artificial Intelligence -- Emerging Trends and Applications : 2004 web reference : http://www.mindbranch.com/Artificial-Intelligence-Emerging-R152-139/
[3] The dawn of artificial intelligence? Prize-winning George : STRATEGIC DIRECTION j VOL. 23 NO. 2 2007, pp. 34-36, Q Emerald Group Publishing Limited, ISSN 0258-0543
[4] Adaptive Business Intelligence : Zbigniew Michalewicz, Martin Schmidt, Matthew Michalewicz, Constantin Chiriac
[5] A review of data mining techniques : Lee S.J.; Siau K. :2001
[4] Adaptive Business Intelligence : Zbigniew Michalewicz, Martin Schmidt, Matthew Michalewicz, Constantin Chiriac
[5] A review of data mining techniques : Lee S.J.; Siau K. :2001
[6] Agent-based architecture for manufacturing system control, C.K. Fan, T.N. Wong : 2003

Saturday, November 8, 2008

Prolog

Befor start our prolog lesson, lets consider about Logics.

In this tutorial let's quickly go through the propositional logic and Predicate logics.

Prepositional Logic:
statemet ro an expression either true or fale can be describe as a proposition.

example1:
3<5>
so this can be consider as a preposition.

example2:
today is 8th of November 2008. This is also a preposition.

Connectives:
we can use the connectives to combine the propositions to form compound/ complex propositoins.

Compound Prepositions.

p q p and q p or q p implise q p if and only if q
T T T T T T
T F F T F F
F T F T T F
F F F F T T

Totalogy: if a statement is always true, then we can consider it as a totalogy.
Contradictory: if a statement is always false, then it is known as a contradictory.
Logical Iquivlant: