2016-07-21 15 views
0

對於我的畢業設計項目,我正在調查辦公室建築物內居住者的用電量。乘客抵達辦公室時可以離開辦公桌進行其他活動(例如午餐,會議,洗手間)。每個人在上班和回家時都有自己的時間。 我想要的是,居住者確定他們什麼時候離開工作臺隨機分配在上班和回家之間。Netlogo隨機值列表,以數值爲界

to go 
if time = 0 [start-day] 

ask occupants [ 
    let $currenttime hour-of-day 
    ifelse (go-to-office-today AND (workDays = "M-F" AND (Day >= 0) AND (Day   
    <= 4) AND ($currenttime * 100 >= workStartHour) AND ($currenttime * 100 
    <= workEndHour - 100))) 
     [if (not atWork?) [GoWork] ] 
     [if (atWork?)  [GoHome] ] 

if go-to-office-today and workschedule-next < length workschedule [ 
    let workschedule-item item workschedule-next workschedule 
]] 
tick 

to start-day 
    ask occupants [ set schedule-next 0 
        set go-to-office-today false 
] 

let $Occupancy-Percentage (50 + random 0) 
ask n-of(int ($Occupancy-Percentage/100 * count occupants)) occupants [ 
    set go-to-office-today true 
    set workschedule [ ] 
] 
DetermineWorkSchedule 
setMeetingSchedule 
end 

現在我只有一個固定值的列表。但我想幾個正態分佈(10和90只蜱之間例如)workstarthour和workendhour之間

去廁所frequencie將4次,然後我想要列表是workschedule [15 28 51 73]

to DetermineWorkSchedule 
    ask occupants [ 
    let lunchtime [ ] 
    set lunchtime lput precision (random-normal 12 1) 0 lunchtime 
    set workschedule lput one-of lunchtime workschedule 

    let toilettime [] 
    set toilettime lput precision (random-normal 15 2) 0 toilettime 
    set workschedule lput one-of toilettime workschedule 
end 
+0

問題是什麼?你是要求完成任務還是調試你的代碼?指定難度本身會更好,而不是要求做它而不是你 – avtomaton

+0

我不知道如何製作一個以兩個值爲界的列表。例如,乘員在一個補丁上到達嘀嗒10,並將補丁打到90.在10到90之間,他可以移動到通常由隨機正常功能分配的其他補丁。 – Christus

+0

正態分佈沒有限制,所以你不能確切地知道你在問什麼。另外,也許你需要10到90之間的4個隨機整數值,但這看起來也不錯。這不是真的應該是隨機的數字,而是它們之間的間隔。試着準確地說出你想要的。 – Alan

回答

1

既然你現在說你只是想在兩個端點之間沒有任何分配約束n隨機值,你可以這樣做:

to-report transition-times [#n #start #end] 
    let _possible n-values (#end - #start + 1) [#start + ?] 
    report sort n-of #n _possible 
end 

這會給你的價值觀[#開頭,#結束] - 這是包括#start和#end。 (根據口味調整)。值被限制爲唯一。