This project implements a multi-agent system (MAS) in JADE to simulate an English auction scenario involving a single seller and multiple buyers. The aim is to model autonomous agents that negotiate through message exchange and dynamic decision-making to bid for a product.
The English auction, also known as an open ascending-price auction, is a widely used mechanism where the price increases progressively as buyers submit higher bids. Our implementation captures the essential dynamics of this process, including:
- Seller initialization of the auction by announcing an item for sale with a starting price.
- Buyers evaluate whether they are willing to bid higher based on their private valuations (maximum price thresholds).
- The auction progresses in iterative rounds where the seller shares the current best offer, and buyers respond accordingly.
- The process continues until no better offer is received within a fixed number of idle rounds or the auction duration elapses.
- Finally, the product is sold if the best offer meets or exceeds the seller’s hidden reserve price.
The system consists of two primary agent types: Seller and Buyer agents. Each agent performs specific behaviors and communicates using ACL (Agent Communication Language) messages.
Figure 1.1: Multi-Agent System ArchitectureThe auction process follows a structured lifecycle managed by the Seller Agent:
- Initiation: The Seller Agent starts the auction by broadcasting a Call for Proposal (CFP) to all registered Buyer Agents, including item description and starting price.
- Bidding Rounds: The auction proceeds in discrete rounds. Buyers evaluate the CFP and respond with Propose messages containing bid offers. This ensures structured competition.
- Termination: The auction ends if:
- A predefined number of consecutive idle rounds occur (no new proposals).
- The total auction time exceeds a specified limit.
- All agents are notified of the outcome. If the best offer meets the reserve price, the item is sold; otherwise, the auction fails.
The Seller Agent orchestrates the auction through coordinated behaviors:
Figure 1.2: General outline of the Seller Agent’s behaviours- ManageSubscriptions: A CyclicBehaviour executed before the auction begins. Registers Buyer Agents that subscribe to the auction. If at least two buyers register, the auction is initiated.
- ManageAuction: A ParallelBehaviour composed of four sub-behaviours:
- InitiateAuction: Launches the auction and broadcasts the initial CFP.
- ReceiveOffers: Collects replies to the CFP during the current round, stores valid offers, and discards stale offers.
- ProcessOffers: Periodically evaluates received offers, updates the highest bid, issues new CFPs, and monitors idle rounds.
- CloseAuction: Terminates the auction after the duration is exceeded.
Buyer Agents evaluate auction proposals and place bids according to their strategy:
- Upon initialization, each Buyer Agent registers for the auction by sending a SUBSCRIBE message to the Seller Agent.
- NegotiationBehaviour: Handles all auction-related messages. When a CFP is received, the buyer evaluates the price against its maximum. If acceptable, it replies with a PROPOSE message; otherwise, it refuses to bid. It also handles outcomes such as ACCEPT PROPOSAL, REJECT PROPOSAL, and FAILURE, terminating when appropriate.
src/
part1/
Main.java
agents/
BuyerAgent.java
SellerAgent.java
behaviours/
buyer/
seller/
ManageAuction.java
ManageSubscriptions.java
utils/
Auction.java
- Main.java: Entry point for launching the agents and initializing the JADE platform.
- agents/: Contains agent implementations for buyers and the seller.
- behaviours/: Defines agent behaviours for managing auctions and subscriptions.
- utils/Auction.java: Utility class for auction logic and data.
- Java 8+
- JADE agent framework
- Clone the repository.
- Make sure JADE libraries are included in your classpath.
- Compile the project:
javac -cp "path/to/jade.jar" src/part1/**/*.java
- Run the main class:
java -cp "path/to/jade.jar:src" part1.Main

