2017-12-07 1 views
1

(프랜차이즈) 슈퍼마켓에 위치를 지정하려고 할 때 문제가 있습니다. 저는 슈퍼마켓 브랜드가 주어진 도시에서 가지고있는 소매점의 수만큼 반복되는 도시를 가진 슈퍼마켓 브랜드 당 목록을 가지고 있습니다.Netlogo : 기존 (문자열) 목록에서 변수에 값을 할당하는 방법

그러나 사용하고있는 코드를 사용하면 목록에있는 도시의 정확한 양을 할당 할 수 없으며 매번 무작위로 변경됩니다. 나는 위의 목록을 일단, 나는 다음을 시도

;to create coop franchisees 
    create-Fs 32 [ 
    set HQ-brand "Coop" 
    set fcoop-location-outlet ["Zuidlaren" "Zuidlaren" "Nijmegen" "Nijmegen" "Nijmegen" "Nijmegen" "Nijmegen" "Nijmegen" "Nijmegen" "Nijmegen" "Nijmegen" "Nijmegen" "Ba neveld" "Barneveld" "Doetinchem" "Doetinchem" "Doetinchem" "Zutphen" "Huissen" "Amstelveen" "Amstelveen" "Amstelveen" "Zwolle" "Zwolle" "Rotterdam" "Rotterdam" "Rotterdam" "Rotterdam" "Rotterdam" "Rotterdam" "Rotterdam" "Rotterdam"] 
] 

,

시험 1

ask Fs with [(HQ-brand = "Coop") and (location-outlet = 0)] [ set location-outlet one-of fcoop-location-outlet ] 

시험 2

(브랜드 별) 각 가맹점에 도시 콘센트를 할당
ask Fs with [(HQ-brand = "Coop") and (location-outlet = 0)] [ foreach fcoop-location-outlet [set location-outlet one-of fcoop-location-outlet] ] 

시험 3

ask Fs with [(HQ-brand = "Coop") and (location-outlet = 0)] [ set location-outlet n-of 32 fcoop-location-outlet ] 

저는 1 인당 Coop 위치 목록의 한 항목을 32 Coop 콘센트 중 하나에 할당 하겠지만 임의적이라고 생각했습니다. 그것의 n과 함께 작동하지 않았고 아마도 foreach가 작동 할 것이라고 생각했지만 그것은 내가 코딩하는 방식과 동일합니다.

Coop 매장 중 하나에 할당 된 도시 목록의 모든 항목을 갖게 될 때마다 어떻게 코드를 작성할 수 있습니까? 이 작업을 수행하는 간단한 방법이 있어야하지만, 나는 인터넷 검색을 수행하고 있으며이를 파악할 수 없습니다.

(저는 8 개의 다른 슈퍼마켓에서이 작업을하고 있습니다).

+0

나는 무엇을 하려는지 명확하지 않습니다. 32 개 매장과 32 개 매장이 있으며 페어를 할당하려고합니까? 당신의 출구 가능성이 목록에 있습니다, 당신의 위치 가능성도 목록에 있습니까? – JenB

+0

예,이 경우 32 개의 매장을 32 개의 매장에 할당해야합니다. 아울렛은 나의 에이전트 (Fs)이며, 내가 갖고있는 32 개 위치가 모두 하나의 콘센트에 지정되도록하고 싶습니다. 내 콘센트는 에이전트이므로 목록에 없습니다.내 위치가 목록 (fcoop-location-outlet)에 있고 해당 목록에서 위치 콘센트라는 변수 (내 콘센트 중 하나)에 추가 할 위치를 하나 선택하려는 경우 – Cristina

답변

1

나는 길을 찾았습니다!

fcoop-location-outlet 

대신 각 콘센트의 변수의 세계를 만들 수있다 : 친구가, 그래서이

와 콘센트의 모든 위치가 먼저 목록을 도와주었습니다.

그런 다음 코드는 다음과 같아야합니다

ask Fs with [(HQ-brand = "Coop") and (location-outlet = 0)] [ 
set location-outlet item 0 fcoop-location-outlet 
set fcoop-location-outlet remove-item 0 fcoop-location-outlet 
] 

을 이런 식으로는하지 않도록, 위치 콘센트 변수에 추가되는 항목 (위치), 메인 목록에서 삭제됩니다 되풀이된다.

1

실제로 작동하는 코드를 작성하는 데 필요한 코드가 충분하지 않습니다. 필자는 목록을 수정하고 싶지 않았기 때문에 반복자를 만들었습니다. 이런 식으로하면 효과가 있습니다. ask은 무작위 순서로되어 있으므로 목록 순서를 임의로 지정할 필요가 없습니다. -1부터 시작하여 할당하기 전에 증가시킬 수 있습니다 (마지막 거북이 목록의 끝에서 벗어나지 않도록).

to assign-locations 
    let iterator -1 
    ask turtles 
    [ set iterator iterator + 1 
    set my-location item iterator fcoop-location-outlet 
    ] 
end 
+0

도움을 주셔서 감사합니다! 나는 방금 다른 방법을 찾았고 방금 게시했습니다. 코드를 작성해야하는 다음 부분에 도움이된다고 말하는 것 또한 가능하다고 생각합니다. – Cristina

관련 문제