寻找一个逻辑来将分数保持在某个范围内



我需要编写一些代码来计算一个变量,该变量显示消费者为笔记本电脑购买组件的偏好。偏好会随着税收(T(和价格对人们购买的重要性(PriceI(而改变。我需要包括TPriceI,以找到该人购买笔记本电脑的意愿(W(。滑块中的税收变化范围从50 Cent$6。我想将变量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 之间的值。

最新更新