2016-07-21 3 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 

ここでは、リストの固定値は1つだけです。しかし、私はいくつかの通常

、私はリストをworkscheduleになりたい、その後4倍になりますfrequencieをトイレに行くために(10と90ティックの間など)workstarthourとworkendhourの間に分布したい[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

2つの値で囲まれたリストを作る方法はわかりません。例えば、乗員はパッチでティック10に到着し、ティック90でパッチを離れる.10と90の間で、彼は通常のランダム関数によって正規分布した他のパッチに移動することができる。 – Christus

+0

正規分布は限定されていないので、求めるものを正確に求めることはできません。さらに、10と90の間の4つのランダムな整数値が欲しいかもしれませんが、これは正しいとは言えません。それは実際にランダムでなければならない数字ではなく、それらの間隔です。あなたが望むものを正確に言うようにしてください。 – Alan

答えて

1

あなたは今、あなたはただの分布制約のない2つのエンドポイント間のn確率的値をしたい、あなたがこれを行うことが言うので:

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

これは、[#開始、#エンド]であなたに値を与えるだろう - それはあります#startを含むそして終わり。 (好みに合わせて調整します。)値は一意に制限されています。

関連する問題