package geniusweb.opponentmodel; import geniusweb.actions.Action; import geniusweb.issuevalue.Bid; import geniusweb.issuevalue.Domain; import geniusweb.profile.Profile; import geniusweb.profile.utilityspace.UtilitySpace; import geniusweb.progress.Progress; /** * An opponentmodel estimates a {@link UtilitySpace} from received opponent * actions. *

Requirement

A OpponentModel must have a constructor that takes the * Domain as argument. unfortunately this can not be enforced in a java * interface * *

* MUST have an empty constructor as these are also used as part of the * BOA framework. * */ public interface OpponentModel extends Profile { /** * Initializes the model. This function must be called first after * constructing an instance. It can also be called later, if there is a * change in the domain or resBid. * * @param domain the domain to work with * @param resBid the reservation bid, or null if no reservationbid is * available. * @return OpponentModel that uses given domain and reservationbid. * */ OpponentModel with(Domain domain, Bid resBid); /** * Update this with a new action that was done by the opponent that this * model is modeling. {@link #with(Domain)} must be called before calling * this. * * @param action the new incoming action. * @param progress the current progress of the negotiation. Calls to this * must be done with increasing progress. * @return the updated {@link OpponentModel} */ OpponentModel with(Action action, Progress progress); }