lib/picky/internals/query/weights.rb in picky-2.0.0 vs lib/picky/internals/query/weights.rb in picky-2.1.0
- old
+ new
@@ -1,23 +1,23 @@
module Query
# Calculates weights for certain combinations.
#
class Weights # :nodoc:all
-
+
#
#
def initialize weights = {}
@weights = weights
end
-
+
# Get the weight of an allocation.
#
def weight_for clustered
@weights[clustered] || 0
end
-
+
# Returns an energy term E for allocation. this turns into a probability
# by P(allocation) = 1/Z * exp (-1/T * E(allocation)),
# where Z is the normalizing partition function
# sum_allocations exp(-1/T *E(allocation)), and T is a temperature constant.
# If T is high the distribution will be close to equally distributed.
@@ -29,26 +29,28 @@
# Just kidding. It's far more complicated than that. Ha ha ha ha ;)
#
# Note: Cache this if more complicated weighings become necessary.
#
def score combinations
- # TODO Or hide: combinations#to_weights_key
+ # TODO Or hide: combinations#to_weights_key (but it's an array, so…)
#
# TODO combinations could cluster uniq as combinations are added (since combinations don't change).
#
+ # TODO Or it could use actual combinations? Could it? Or make combinations comparable to Symbols.
+ #
weight_for combinations.map(&:category_name).clustered_uniq_fast
end
-
+
# Are there any weights defined?
#
def empty?
@weights.empty?
end
-
+
# Prints out a nice representation of the configured weights.
#
def to_s
@weights.to_s
end
-
+
end
end
\ No newline at end of file