我需要编写一些代码来计算一个变量,该变量显示消费者为笔记本电脑购买组件的偏好。偏好会随着税收(T
(和价格对人们购买的重要性(PriceI
(而改变。我需要包括T
和PriceI
,以找到该人购买笔记本电脑的意愿(W
(。滑块中的税收变化范围从50 Cent
到$6
。我想将变量W
保持在1 to 2
的范围内,其中1
是当税收处于默认值时,最小值为50 cent
.
所以有2 variables
对W
有影响:
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使PP
和TT
都为零,而它们应该是一个较小的值,例如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 之间的值。