This project is to be done individually. Do not
show your code to any other student and do not look at any other student's
code. Do not put your code in a public directory or otherwise make it public.
You are encouraged to use the WebCT Discussions page to post problems so
that other students can also answer and see the answers.
The goal of this assignment is to practice concurrent and distributed
programming using the SALSA
Part 1 - An Online Market
An online market
is a peer-to-peer connected collection of auction
and buyer agents.
Each auction store contains a list of items
on sale. For each
item, the store keeps a description, an available quantity, a minimum per-item
selling price, an initial minimum bidding price, a minimum bid increment,
and auction duration and frequency times.
Each buyer agent contains a shopping list
, a budget
, and a
time to return to its buyer site.
Each item in the agent's shopping
list contains a description, a desired quantity, and a maximum price to pay
for each item.
The goal of each auction store is to sell as many items as possible for as
much as possible. The goal of each buyer agent is to buy as many items
in its shopping list as possible within the given budget and time constraints.
Your goal is to write the programs that simulate an online market, following
a few rules:
- To prevent latency and bandwidth limitations from outbidding opponents,
buyer agents migrate to auction stores when they want to join an auction;
however, they can leave at any time if they are not the current best bidders
for any of its ongoing auctions.
- Buyer agents may query auction stores for the next auction time-frame
for a particular item/quantity to construct a shopping itinerary,
a list of auctions to attend (auction store and time). A buyer agent
may also query an auction store for all its neighbour stores.
- Buyers may query their agents at any time to evaluate shopping progress.
- Sellers can also query auction stores to evaluate selling progress.
- Auction stores can join the market at any time by contacting a list
of existing peer stores. The new store becomes a neighbour of all the
contacted stores. All buyer agents in the store get notified about
the new store, and may therefore choose to revise their itinerary.
Part 2 - A Flea Online Market
The goal of the second part is to deal with potential computational resource
Because online markets may be restricted to certain times for operation (e.g.
from 2-6 am local time, when nobody else is using the computational resources)
and because participating sites may become overloaded and request auction
stores to move elsewhere, you are to endow the auction stores with the ability
to dynamically migrate to other sites (perhaps with a different time zone
or resource availability).
Migrating an auction store requires migrating all its auctions and buyer
agents in a coordinated fashion, so that operations resume consistently in
the new auction store site.
You are to write a program that enables dynamically migrating auction stores
without disrupting online auctions, buyer agent itineraries, or interaction
with human buyer and sellers.
Extra Credit - Site Failures
The extra-credit part of the assignment deals with failures. Sites
can be sent soft-failures
. You will need
a manager for each site to receive these failure messages. The following
pseudo-code provides potential algorithms to model failures:
Don't allow any other auction store to enter the site.
For each auction store s in the site
Tell s to leave.
After all have left, allow auction stores to enter again.
Don't allow any other auction stores to enter the lounge.
For each auction store s in the site
The sellers and buyers should then check periodically if all stores and
agents are still alive (using a heart-beating protocol). If not, they should
generate new stores and agents to re-establish the online market.
You may also want to give a time argument to these failures, so that the
failure (or time-bomb) does not happen until that time has elapsed.
Other Possible Extensions
- Add a time zone to each online market site, so that you can restrict
auctions to happen only during a given time-frame. Sites may themselves
organize in a peer-to-peer fashion to help auction stores decide where to
- Do automatic load balancing by profiling resource usage on sites and
let auction stores migrate autonomously (triggered by sites, not by humans).
The due date for this project is April 5th, 2004, 11:55pm EST. You should
use the assignments drop-off box located at the course's WebCT page. Upload
a ZIP file containing all the relevant documented SALSA files, along
with a README file describing the project and its usage. 24-hour late
submissions will receive a 10% grade penalty, 3-day late submissions will
receive a 25% penalty. Assignments will not be received after April