update the self rating based on the parameters.
        If min max is a range (ie not equal) then add fixed value
        to rating depending if current value is in range, otherwise
        compare distance away from min/max (same value)

def _update_pref(self, lmin, lmax, cur):
        """
        update the self rating based on the parameters.
        If min max is a range (ie not equal) then add fixed value
        to rating depending if current value is in range, otherwise
        compare distance away from min/max (same value)
        """
        rate_of_change_positive = 10
        rate_of_change_negative = 2
        add_positive = 10
        add_negative = 2
        if lmin == lmax:
            self.rating -= int(abs(lmin - cur)*100) / 10
        else:
            if lmin <= cur:
                self.rating += (int(abs(lmin - cur)*rate_of_change_positive)) + add_positive
            else:
                self.rating -= (int(abs(lmin - cur)*rate_of_change_negative)) + add_negative
            if lmax >= cur:
                self.rating += (int(abs(lmax - cur)*rate_of_change_positive)) + add_positive
            else:
                self.rating -= (int(abs(lmax - cur)*rate_of_change_negative)) + add_negative