Example #1
0
    def make_planting_decision(self, activities, farm):
        all_activities = dict(self.eutopia.latest_activity_count)
        total_activities = float(sum(all_activities.values()))
        if total_activities > 0:
            for k, v in all_activities.items():
                all_activities[k] /= total_activities

        if self.preferences.get('follow_local', 0) != 0:
            local_activities = self.eutopia.get_activity_count(farm.neighbours)
            total_activities = float(sum(local_activities.values()))
            if total_activities > 0:
                for k, v in local_activities.items():
                    local_activities[k] /= total_activities

        best = None
        for activity in activities:
            total = 0
            for pref, weight in self.preferences.items():
                if pref == 'follow_society':
                    total += all_activities.get(activity.name, 0) * weight
                elif pref == 'follow_local':
                    if weight != 0:
                        total += local_activities.get(activity.name,
                                                      0) * weight
                else:
                    total += activity.get_product(pref, farm) * weight
                # TODO: improve choice algorithm
                #    - maybe by allowing different sensitivities to risk
                #      on different income dimensions

            if best is None or total > best_total:
                best = activity
                best_total = total

        return best
Example #2
0
 def step(self):
     for farm in self.farms:
         activity = self.make_planting_decision(eutopia.activities.activities, farm)
         
         money = activity.get_product('money', farm)
         self.bank_balance += money
         
         farm.last_activity = activity
Example #3
0
    def step(self):
        for farm in self.farms:
            # changed to self.eutopia to make it work with the sim version that is passed to Family21
            activity = self.make_planting_decision(self.eutopia.activities.activities, farm)

            money = activity.get_product('money', farm)
            self.bank_balance += money

            farm.last_activity = activity
Example #4
0
 def step(self):
     for farm in self.farms:
         # changed to self.eutopia to make it work with the sim version that is passed to Family21
         activity = self.make_planting_decision(self.eutopia.activities.activities, farm)
         
         money = activity.get_product('money', farm)
         self.bank_balance += money
         
         farm.last_activity = activity
Example #5
0
 def make_planting_decision(self, activities, farm):    
     best = None
     for activity in activities:
         total = 0
         for pref, weight in self.preferences.items():
             total += activity.get_product(pref, farm) * weight
             # TODO: improve choice algorithm
             #    - maybe by allowing different sensitivities to risk
             #      on different income dimensions
             
         if best is None or total > best_total:
             best = activity
             best_total = total
     
     return best        
Example #6
0
    def make_planting_decision(self, activities, farm):
        all_activities = dict(self.eutopia.latest_activity_count)
        total_activities = float(sum(all_activities.values()))
        if total_activities > 0:
            for k,v in all_activities.items():
                all_activities[k]/=total_activities

        if self.preferences.get('follow_local', 0) != 0:
            local_activities = self.eutopia.get_activity_count(farm.neighbours)
            total_activities = float(sum(local_activities.values()))
            if total_activities > 0:
                for k,v in local_activities.items():
                    local_activities[k]/=total_activities


        


        best = None
        for activity in activities:
            total = 0
            for pref, weight in self.preferences.items():
                if pref=='follow_society':
                    total += all_activities.get(activity.name,0) * weight
                elif pref=='follow_local':
                    if weight != 0:
                        total += local_activities.get(activity.name,0) * weight
                else:
                    total += activity.get_product(pref, farm) * weight
                # TODO: improve choice algorithm
                #    - maybe by allowing different sensitivities to risk
                #      on different income dimensions

            
            if best is None or total > best_total:
                best = activity
                best_total = total

        return best