寻找将分数保持在一定范围内的逻辑

Looking for a logic to keep a fraction in a range

我需要编写一些代码来计算一个变量,该变量显示消费者为其笔记本电脑购买组件的偏好。偏好随税收 (T) 和价格对人们购买的重要性 (PriceI) 而变化。我需要同时包含 TPriceI 才能找到此人购买笔记本电脑的意愿 (W)。从 50 Cent</code> 的滑块中的税收变化。我想将变量 <code>W 保持在 1 to 2 的范围内,其中 1 是税收处于默认状态时的最小值,即 50 cent

所以有2 variablesW有影响:

50<T<600
0.6 < PriceI < 9

因为我想要 1<W<2,我认为如果我首先通过将所有数据除以它们的最大值来归一化它应该可行,然后为了找到一个介于 1 和 2 之间的分数,我做了分子小于4,分母小于2,希望结果在1到2之间:

    to setup-WCalculator
ask consumers [
 set PP ((PriceI / 9) * 2)
  set TT ((T / 600) * 4) 
  set W TT / PP 
]

end

然而,Netlogo 使 PPTT 都为零,而它们应该是像 0.15 这样的小值!寻找 W 的逻辑是否有意义? 谢谢,

标准化通常使用

等公式完成
TT  = (T - Tmin) / (Tmax - Tmin)

或此处

TT = (T - 50) / (600 - 50)

这给出了一个介于 0 和 1 之间的归一化值,因为 T 的范围介于 50 和 600 之间。如果您希望 TTT 的范围介于 1 和 x 之间,其中 x > 1,那么您可以设置

TTT = 1.0 + TT * (x - 1.0)

所以

TTT = 1.0 + TT * (4.0 - 1.0) = 1.0 + TT * 3.0

会给你一个介于 1 和 4 之间的值。