--Thought some more about the distance factor I incorporated yesterday.
I realized that by using a physical measurement in meters, my score value is no longer dimensionless (for left-of, right-of, in-front-of, and behind), and these prepositions can get a score > 1 (and thus always beat between, which is still dimensionless) when the distance to the obstacle is < 1m.
Since my thought on using a distance factor with between (i.e., the ratio of the distances to the two obstacles) will still leave the between score dimensionless, I think it makes sense to make the other prepositions dimensionless as well.
I'm having a hard time thinking of ways to do this though--the first thing that comes to mind is to divide the distance by the corner-to-corner distance of the field (i.e., the longest possible distance between two points), but I think this would require a priori information that would be hard or impossible to gather in a less-constrained environment.
For example, given our bounded rectangular field, the robot could use sensor data to determine the corner points and their locations by simply putting special objects at the corners and then finding those objects during the initial scan it would have to do to determine obstacle locations.
However, I don't think there would be a way to scale that kind of a measurement to any type of unbounded environment, which is a long-term goal.
--For between, try using average distance so that it is in units of 1/m like the others.