2017-07-24 84 views
1

我需要編寫一些代碼,可以計算出一個變量,顯示消費者爲他的筆記本電腦購買組件的偏好。偏好通過稅收(T)以及價格對人們購買的重要性(PriceI)進行更改。我需要包括TPriceI以查找該人購買筆記本電腦的意願(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使得無論PPTT零,而他們應該是一個小的值,如0.15!發現W的邏輯是否合理? 謝謝,

+0

由於使用的NetLogo浮點所有數值和計算,我不看你怎麼可以從獲得零'((PriceI/9)* 2'除非'PriceI'確實爲零。你檢查過嗎? – Charles

+0

正如您所討論的那樣,問題不在於netlogo處理數字的方式。這些變量也是在程序中給出的值。我已經定義了一個程序'setup-WCalculator',而在另一個程序中,我使用'W'。看起來它不是這樣工作的,因爲它不能進入​​該過程,所以默認零使它們爲零。我所做的工作就是我在使用'W'的其他程序之前調用了'setup-WCalculator'。它現在似乎在工作。我沒有注意到這種正常化你提到的方式,並使用它,使結果得到改善。謝謝。 – user710

回答

3

規範化通常與式進行,例如

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

HTH之間

+0

你的回答是這個問題是錯誤的,他不能得到零?在回答之前,評論確認這可能是個好主意。 – Patrick87

+0

是的。這應該是一個評論和正常化的答案。我已經編輯了相應的迴應。謝謝。 – Charles

相關問題