Beispiel #1
0
    def update(self):
        self.CurrentStep = self.frame.step
        if not self.mybusiness:
            a = self.frame.get(EmptyBusiness)
            if len(a) > 0:
                pn = PrimeNode()
                pn.ID = a[0].ID
                pn.Name = "Amazon"
                pn.PeakCustomerCount = 0
                pn.Rezcap = a[0].Rezcap
                self.frame.add(pn)
                self.mybusiness = pn
                self.frame.disable_subset(EmptyBusiness)

        if self.CurrentStep in self.schedule_deliveries:
            for c in self.schedule_deliveries[self.CurrentStep]:
                if hasattr(c.LivesAt, "Rezcap"):
                    v = Vehicle()
                    v.Name = "AmazonTo%s_%s" % (c.Name, randint(0, 100))
                    v.Type = c.Vehicle.VehicleType
                    v.Route = self.mybusiness.Rezcap.DestinationName
                    v.Target = c.LivesAt.Rezcap.SourceName
                    self.frame.add(v)
                    self.__Logger.info("starting amazon delivery to %s", c.Name)
                else:
                    self.__Logger.debug("User %s is homeless (%s)", c.Name, c.LivesAt)
            del self.schedule_deliveries[self.CurrentStep]

        if self.mybusiness and len(self.schedule_deliveries) == 0:
            self.add_deliveries()
Beispiel #2
0
    def update(self):
        self.CurrentStep = self.frame.step
        if self.CurrentStep % 4 == 0 :
            if not self.mybusiness:
                a = self.frame.get(EmptyBusiness)
                if len(a) > 0:
                    pn = PrimeNode()
                    pn.ID = a[0].ID
                    pn.Name = "Amazon"
                    pn.PeakCustomerCount = 0
                    pn.Rezcap = a[0].Rezcap
                    self.frame.add(pn)
                    self.mybusiness = pn
                    self.frame.disable_subset(EmptyBusiness)

        if self.mybusiness and not self.mybusiness.Customers:
            ppl = self.frame.get(Person)
            if len(ppl) > 40:
                customers = random.sample(ppl, 10)
                # Synchronized attribute
                self.mybusiness.Customers = [p.Name for p in customers]
                self.mybusiness.CustomerObjects = {}
                # Non-synchronized attribute
                for c in customers:
                    self.mybusiness.CustomerObjects[c.Name] = c
                    starttime = random.randint(50, 100)
                    if starttime not in self.schedule_deliveries:
                        self.schedule_deliveries[starttime] = []
                    self.schedule_deliveries[starttime].append(c)
                self.__Logger.info("Delivery schedule: %s", self.schedule_deliveries.keys())

        if self.CurrentStep in self.schedule_deliveries:
            print self.schedule_deliveries[self.CurrentStep]
            for c in self.schedule_deliveries[self.CurrentStep]:
                if hasattr(c.LivesAt, "Rezcap"):
                    v = Vehicle()
                    v.Name = "AmazonTo%s" % c.Name
                    v.Type = c.Vehicle.VehicleType
                    v.Route = self.mybusiness.Rezcap.DestinationName
                    v.Target = c.LivesAt.Rezcap.SourceName
                    self.frame.add(v)
                    self.__Logger.info("starting amazon delivery to %s", c.Name)
                else:
                    print c.LivesAt
Beispiel #3
0
    def GenerateAddVehicleEvent(self, trip):
        """
        GenerateAddVehicleEvent -- generate an AddVehicle event to start
        a new trip

        trip -- Trip object initialized with traveler, vehicle and destination information
        """

        #vname = str(trip.VehicleName)
        #vtype = str(trip.VehicleType)
        #rname = str(trip.Source.Capsule.DestinationName)
        #tname = str(trip.Destination.Capsule.SourceName)
        v = Vehicle()
        v.Name = trip.VehicleName
        v.Type = trip.VehicleType
        v.Route = trip.Source.Capsule.DestinationName
        v.Target = trip.Destination.Capsule.SourceName
        self.frame.add(v)

        self.__Logger.debug('add vehicle %s of type %s from %s to %s', v.Name,
                            v.Type, v.Route, v.Target)

        # save the trip so that when the vehicle arrives we can get the trip
        # that caused the car to be created
        self.TripCallbackMap[v.Name] = trip
Beispiel #4
0
    def update(self):
        self.CurrentStep = self.frame.step
        if not self.mybusiness:
            a = self.frame.get(EmptyBusiness)
            if len(a) > 0:
                pn = PrimeNode()
                pn.ID = a[0].ID
                pn.Name = "Amazon"
                pn.PeakCustomerCount = 0
                pn.Rezcap = a[0].Rezcap
                self.frame.add(pn)
                self.mybusiness = pn
                self.frame.disable_subset(EmptyBusiness)

        if self.CurrentStep in self.schedule_deliveries:
            for c in self.schedule_deliveries[self.CurrentStep]:
                if hasattr(c.LivesAt, "Rezcap"):
                    v = Vehicle()
                    v.Name = "AmazonTo%s_%s" % (c.Name, randint(0, 100))
                    v.Type = c.Vehicle.VehicleType
                    v.Route = self.mybusiness.Rezcap.DestinationName
                    v.Target = c.LivesAt.Rezcap.SourceName
                    self.frame.add(v)
                    self.__Logger.info("starting amazon delivery to %s",
                                       c.Name)
                else:
                    self.__Logger.debug("User %s is homeless (%s)", c.Name,
                                        c.LivesAt)
            del self.schedule_deliveries[self.CurrentStep]

        if self.mybusiness and len(self.schedule_deliveries) == 0:
            self.add_deliveries()
Beispiel #5
0
    def GenerateAddVehicleEvent(self, trip) :
        """
        GenerateAddVehicleEvent -- generate an AddVehicle event to start
        a new trip

        trip -- Trip object initialized with traveler, vehicle and destination information
        """

        #vname = str(trip.VehicleName)
        #vtype = str(trip.VehicleType)
        #rname = str(trip.Source.Capsule.DestinationName)
        #tname = str(trip.Destination.Capsule.SourceName)
        v = Vehicle()
        v.Name = trip.VehicleName
        v.Type = trip.VehicleType
        v.Route = trip.Source.Capsule.DestinationName
        v.Target = trip.Destination.Capsule.SourceName
        self.frame.add(v)

        self.__Logger.debug('add vehicle %s of type %s from %s to %s',v.Name, v.Type, v.Route, v.Target)

        # save the trip so that when the vehicle arrives we can get the trip
        # that caused the car to be created
        self.TripCallbackMap[v.Name] = trip
Beispiel #6
0
    def update(self):
        self.CurrentStep = self.frame.step
        if self.CurrentStep % 4 == 0:
            if not self.mybusiness:
                a = self.frame.get(EmptyBusiness)
                if len(a) > 0:
                    pn = PrimeNode()
                    pn.ID = a[0].ID
                    pn.Name = "Amazon"
                    pn.PeakCustomerCount = 0
                    pn.Rezcap = a[0].Rezcap
                    self.frame.add(pn)
                    self.mybusiness = pn
                    self.frame.disable_subset(EmptyBusiness)

        if self.mybusiness and not self.mybusiness.Customers:
            ppl = self.frame.get(Person)
            if len(ppl) > 40:
                customers = random.sample(ppl, 10)
                # Synchronized attribute
                self.mybusiness.Customers = [p.Name for p in customers]
                self.mybusiness.CustomerObjects = {}
                # Non-synchronized attribute
                for c in customers:
                    self.mybusiness.CustomerObjects[c.Name] = c
                    starttime = random.randint(50, 100)
                    if starttime not in self.schedule_deliveries:
                        self.schedule_deliveries[starttime] = []
                    self.schedule_deliveries[starttime].append(c)
                self.__Logger.info("Delivery schedule: %s",
                                   self.schedule_deliveries.keys())

        if self.CurrentStep in self.schedule_deliveries:
            print self.schedule_deliveries[self.CurrentStep]
            for c in self.schedule_deliveries[self.CurrentStep]:
                if hasattr(c.LivesAt, "Rezcap"):
                    v = Vehicle()
                    v.Name = "AmazonTo%s" % c.Name
                    v.Type = c.Vehicle.VehicleType
                    v.Route = self.mybusiness.Rezcap.DestinationName
                    v.Target = c.LivesAt.Rezcap.SourceName
                    self.frame.add(v)
                    self.__Logger.info("starting amazon delivery to %s",
                                       c.Name)
                else:
                    print c.LivesAt