我需要编写一些代码来计算一个变量,该变量显示消费者为其笔记本电脑购买组件的偏好。偏好会因税收 (
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)
当 T 范围在 50 到 600 之间时,这给出了 0 到 1 之间的归一化值。如果您希望 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 之间的值。