
-------------
version 1.3
-------------

API changes
- J-MADeM release adapted to the API changes in Jason 1.4.0a.

Bugs fixed
- Bug fixed when not specifying utility weights.


-------------
version 1.2
-------------

API changes
- J-MADeM release adapted to the API changes in Jason 1.3.8.

Examples
- A new example has been incorporated to the examples folder:
	* urbanmob-0.7.2: Urban mobility simulation framework allows to model the mobility within a metropolitan area.  

Bugs fixed
- Some minor bugs fixed in "jmadem.asl".


-------------
version 1.1
-------------

New features
- A new belief can be added to set the type of multimodality used in the winner determination problem:
     +jmadem_multimodality(competitive) : The utility functions are supplementary 
     +jmadem_multimodality(aggregate)   : The utility functions are complementary

- New AgentSpeak plans to launch MADeM and get the social welfare along with 
  the winner allocations through the belief addition:
  	 +jmadem_result(DecisionId, WinnerAllocations, SocialWelfare)
  The names of the new plans are:	
     +!jmadem_launch_decision_welfare(AgentNames, Allocations, UtilityNames, DecisionId)
     +!jmadem_launch_decision1_welfare(AgentNames, Allocations, UtilityNames, DecisionId)
     +!jmadem_launch_specific_decision_welfare(AgentNames, Allocations, UtilityNames, PersonalWeights,
								               UtilityWeights, Welfare, Multimodality, Timeout, DecisionId)
     +!jmadem_launch_specific_decision1_welfare(AgentNames, Allocations, UtilityNames, PersonalWeights,
								               UtilityWeights, Welfare, Multimodality, Timeout, DecisionId)

- New beliefs to register Java-based utility functions and filtering functions:
	 Use: * Add the belief jmadem_utility_function(UFName, UFClass)
		    with UFName being the name of the utility function (Atom format)
		    and UFClass the fully qualified name of the utility function Java class (String format)
		  * Add the belief jmadem_filter_function(FName, FClass)
		    with FName being the name of the filtering function (Atom format)
		    and FClass the fully qualified name of the filtering function Java class (String format)
	 Examples of use (from the 'test-api' example):
	 	  +jmadem_utility_function(minimumUtilityFunction, "fran.MinimumUtilityFunction");
	 	  +jmadem_filter_function(carFilter, "habitant.CarFilter");

API changes
- Changes in AgentSpeak plans launching specific MADeM decisions to include the type of multimodality
  used in the winner determination problem. The new plans are:
     +!jmadem_launch_specific_decision(AgentNames, Allocations, UtilityNames, PersonalWeights,
								       UtilityWeights, Welfare, Multimodality, Timeout, DecisionId)
     +!jmadem_launch_specific_decision_welfare(AgentNames, Allocations, UtilityNames, PersonalWeights,
								               UtilityWeights, Welfare, Multimodality, Timeout, DecisionId)
     +!jmadem_launch_specific_decision1(AgentNames, Allocations, UtilityNames, PersonalWeights,
								        UtilityWeights, Welfare, Multimodality, Timeout, DecisionId)
     +!jmadem_launch_specific_decision1_welfare(AgentNames, Allocations, UtilityNames, PersonalWeights,
								               UtilityWeights, Welfare, Multimodality, Timeout, DecisionId)

- Add prefix 'jmadem_' to the name of the rules/plans used to define filtering allocations: 
	 Examples of use (from the 'test-api' example): 
	 jmadem_filter(skipDoug, use(_, doug)).
	 +!jmadem_filter(skipDoug, use(_, doug)).

- Add prefix 'jmadem_' to the name of the rules/plans used to define utility functions: 
	 Example (from the 'test-api' example): 
	 jmadem_utility(minimumUtilityFunction,_, Allocation, 0.2) 
       :- .my_name(AgName) & Allocation = use(_,AgName).
    
Documentation
- A new paper dealing with the J-MADeM v.1.1 library has been included in './doc/publications'.
  
Examples
- Two new examples have been incorporated to the examples folder:
	* test-simple-api: A simple J-MADeM test example using the AgentSpeak(L) features of J-MADeM v.1.1	
	* preference-meetings: an implementation of the MSP problem, a well known scheduling problem 
	  to ﬁnd the best allocation for a meeting within an organization.


-------------
version 1.0
-------------

New features
- Addition of the J-MADeM Plan Library (./asl/jmadem.asl):
     This file contains a set of plans that are useful for invoking the MADeM 
     decision making from your AgentSpeak code without paying much attention to 
     the implementation details of the J-MADeM Internal Actions Library.

- New AgentSpeak plan to ease the construction of allocations.
	 Example of use: 
	 !jmadem_construct_allocations(use(coffeeMachine, Agent), 
                                   agent(Agent),
   								   [use(cofeeMachine, doug), use(cofeeMachine, norman)] )
      provided that the belief base contains the literals agent(doug) and agent(norman)
	
- New plans for filtering allocations.
	 Example of use:
	 !jmadem_filter_allocations(skipDoug,
                                [use(cofeeMachine, doug), use(cofeeMachine, norman)],
                                [use(cofeeMachine, norman)] ).
     !jmadem_filter_allocations([skipDoug, skipNorman],
                                [use(cofeeMachine, doug), use(cofeeMachine, norman)],
                                [] ).
     provided that the filtering function skipDoug is defined either by means of the rules:
        filter(skipDoug, use(_, doug)).
        or filter(skipDoug, use(_, Agent)) :- Agent == doug.
     or through the plans:
        +!filter(skipDoug, use(_, doug)).
        or +!filter(skipDoug, use(_, Agent)) : Agent == doug.
        or +!filter(skipDoug, use(_, Agent)) <- Agent == doug.

- Possibility to define utility functions as AgentSpeak plans or rules (as well as the more efficient
  Java-based utility functions allowed by previous versions).
     Examples of use:
     utility(minimumUtilityFunction,_, Allocation, 0.2) 
       :- .my_name(AgName) & Allocation = use(_,AgName).
     utility(minimumUtilityFunction,_, Allocation, 1)   
       :- .my_name(MyName) & Allocation = use(_,AgName) & MyName \== AgName.
     +!utility(minimumUtilityFunction, Auctioneer, Allocation, 0.2) 
       : .my_name(AgName) & Allocation = use(_,AgName).
     +!utility(minimumUtilityFunction, Auctioneer, Allocation, 1) 
       : .my_name(MyName) & Allocation = use(_,AgName) & MyName \== AgName.

- Utility functions can now evaluate allocations using any range within the real numbers.
     Additionally, the utility can be set to 'none' in order to skip bidding for a certain allocation
     Examples of use:
     +!utility(goldDistance,_,gold(X,Y,MinerName), none) 
       : (.my_name(MyName) & MyName \== MinerName) 
         | not (free & not carrying_gold & not allocated(gold(X,Y,_))).

- New J-MADeM launcher plans: !jmadem_launch_decision1 and !jmadem_launch_specific_decision1
     It must be noticed that, if there are several winner allocations, these plans will just return one 
     of them randomly chosen.
 	
API changes
- Older J-MADeM launcher plans: !jmadem_launch_decision and !jmadem_launch_specific_decision
     Now, if there are several winner allocations, these plans will return all of them.

- The result of the J-MADeM process is now received as: +jmadem_result(DecisionId, WinnerAllocations)

- Small changes in the interface UtilityFunctionInt to ease the definition of Java-based utility functions.
  see API doc for further details.

- J-MADeM release adapted to the API changes in Jason 1.3.3 and Java 1.6

Documentation
- New papers dealing with the J-MADeM library have been included in './doc/publications'.
  
Examples
- All the examples have been reviewed so that they use the new features.

Bugs fixed
- Some minor bugs fixed.

-------------
version 0.1.2
-------------

New features
- J-MADeM release adapted to the API changes in Jason 1.2.

New demo
- gold-miners-structured: the gold-miners example using a structure 
  of miners and bosses to adapt better to nonuniform gold distributions. 

API changes
- the classes to deal with utility functions start now in uppercase. 
  Thus, the names of the new classes are:
      UtilityFunctionInt.java
      UtilityFunctionException.java  
  see API doc for further details.

-----------
version 0.1
-----------

The very first release of J-MADeM!
