Code: Create an agent

import org.JIFSA.*;
import org.JIFSA.reasoning.*;
import org.JIFSA.reasoning.actionselection.*;
import org.JIFSA.reasoning.actionselection.actionestimation.*;
import org.JIFSA.reasoning.casebasesearch.*;
import org.JIFSA.reasoning.distance.*;
import org.JIFSA.reasoning.distance.globaldistance.OrderIndexMatchingAlgorithm;
import org.JIFSA.reasoning.distance.penalty.*;
import org.JIFSA.reasoning.distance.spatial2D.*;
import org.JIFSA.sensoryItems.*;

public class SampleAgent {

	public static void main(String[] args) {	
		//we load a casebase that we have previously created
		CaseBase casebase = CaseBaseIO.loadCaseBase("myCaseBase.cb");
		//we create a 1-Nearest Neighbour Search
		CaseBaseSearch cbSearch = new NearestNeighbourSearch(1);
		//set the default distance calculation between SensoryItems to just
		//  test to see if they are equal (EqualityDistanceAlgorithm)
		SensoryItem.setDistanceCalculation(new EqualityDistanceAlgorithm());
		//set the penalty for unmatched SensoryItems to be a constant - 100
		SensoryItem.setPenaltyDistanceCalculation(new ConstantPenalty(100));
		//set SensoryItems of the Spatial2DObject type to use the PolarDistanceAlgorithm
		Spatial2DObject.setDistanceCalculation(new PolarDistanceAlgorithm());
		//create the weights so that unspecified SensoryItems have a default value of 1.0
		Weights w = new Weights(1.0f);
		//we set the distance measure between Cases to be OrderIndexMatching
		GlobalDistanceMeasure gd = new OrderIndexMatchingAlgorithm(w);

		//We set how actions are selected, based on the results from the NN search
		ActionEstimation ae = new LastActionEstimate();
		ActionSelection actionSelection = new ClosestNeighbourSelection(ae); 
		//now we put together what we have created and make an Agent
		Agent ag = new Agent(casebase,cbSearch,actionSelection);
		//the agent is now ready to go into action
		AgentInputs newInputs = new AgentInputs();
		AgentAction act = ag.senseEnvironment(newInputs);
		System.out.println("My Agent performed the action: " + act.getActionName());