/* * (c) 1999 The Brookings Institution All Rights Reserved * * Permission to use this software and its documentation for non-commercial * purposes and without fee is hereby granted, provided this copyright statement * is included. Please contact us for permission for redistribution and other uses. *  * BROOKINGS MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF * THE SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED * TO THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE,  * OR NON-INFRINGEMENT. BROOKINGS SHALL NOT BE LIABLE FOR ANY DAMAGES SUFFERED BY * LICENSEE AS A RESULT OF USING THIS SOFTWARE OR ITS DERIVATIVES. * * _Sugarscape_ * See _Growing Artificial Societies: Social Science from the Ground Up_ * Brookings Institution Press, The MIT Press * Joshua Epstein * jepstein@brook.edu * Robert Axtell * raxtell@brook.edu * * Miles Parker * mparker@brook.edu * http://www.brook.edu/es/dynamics/models/ascape * The Brookings Institution * Washington, D.C. *  * Alan Lockard * alockard@gmu.edu */package edu.brook.sugarscape;import java.lang.*;import edu.brook.ascape.model.*;import edu.brook.ascape.rule.*;import edu.brook.ascape.util.*;/** * This trade rule orders neighbors randomly, and trades once * with each of the neighbors. Methods for making * and accepting offers are attributes of the trading agents, themselves. * * @author Alan Lockard * @version 1.0 */ public class TradeT2 extends TradeT {    Exchange2 exchange;    public void execute(Agent agent) {        Cell[] neighbors = ((CellOccupant) agent).getNeighborsOnHost();        //pick a random series from the set of series that match the number of neighbors        //(Assumes von Neumann neighborhood, otherwise creates error)        int[] series = Utility.uniqueSeries[neighbors.length][randomToLimit(Utility.uniqueSeries[neighbors.length].length)];        for (int i = 0; i < series.length; i++) { 	    exchange = new Exchange2(((SpiceAgent) agent), ((SpiceAgent) neighbors[i]));	    if (((SpiceAgent) neighbors[i]).acceptOffer ((Exchange) exchange)) {		executeTrade((Exchange) exchange);            }        }    }}
