2017-01-29 10 views
0

다른 질문도 읽을 수 있지만 제 모델에 대해서는 어떻게해야할지 모르겠습니다. 설명해 드리겠습니다. 나는 두 종류가있다.Netlogo에서 한 품종의 품종을 다른 품종으로 설정하십시오

breed [distributers distributer] 
breed [suppliers supplier] 
distributers-own [dproductASales] 
suppliers-own [sproductASales] 

분배 자의 변수를 공급 업체에 지정해야하지만 오류가 있습니다.

to sales-decision 
set sproductASales dproductASales 

어떻게하면됩니까? 감사합니다.

답변

1

sales-decision의 컨텍스트를 원하십니까? set sProductASales라고 말하면 supplier 컨텍스트를 선택했습니다. 좋습니다, 그러면 공급자에게이 변수를 설정하도록 요청할 것입니다 ... 뭐라 구요? 은 글로벌 변수 또는 공급 업체 속성이 아니기 때문에 말할 수 없습니다. 디스트리뷰터의 dproductASales을 참조하려면 of을 입력하고 (하나만있는 경우에도) 어느 것을 지정해야합니다. 예를 들어 당신이 (값이 대리점에 따라 다를하지 않으면 갈 날 것으로 보인다있는 방법을) 전역을 사용하지 않으려면

breed [distributers distributer] 
breed [suppliers supplier] 
distributers-own [dproductASales] 
suppliers-own [sproductASales] 

to sales-decision ;supplier procedure 
    set sproductASales [dproductASales] of one-of distributers 
end 

to test 
    ca 
    create-distributers 2 [ 
    set dproductASales one-of [2 4] 
    ] 
    create-suppliers 10 [ 
    sales-decision 
    ] 
end 
+0

감사합니다. 실제로 "dproductASales"는 모든 배포자에게 동일합니다. 매년 매출액을 분석 할 가치가 있으며 공급 업체에게이를 알리고 싶어합니다. 공급 업체는이 번호를 알고 일부 계산에서이 번호를 사용해야합니다. 초기 값은 600 만입니다. 매년 업데이트됩니다. 내가 세계화라고 정의해야한다는 말인가? 그러나 분배 자에게만 해당됩니다. – Naha

+1

클래스 변수를 원하지만 NetLogo에는 그러한 개념이 없습니다. 그러니 어떻게 처리할지 결정해야합니다. NetLogo 프로그래밍에서 가장 일반적으로 사용되는 방법은 전역 변수를 사용하는 것입니다. 글로벌 변수를 사용하는 것을 이해한다면, 대안을 논의 할 수 있습니다. 그러나 단계에서 당신은 내가 그렇다고 말할 것입니다. 대신 글로벌 변수를 사용하십시오. – Alan

0

또 다른 옵션은, 패치 소유해야하는 것

ask patches with [count distributors-here > 0] 
    [ 
    ask one-of distributors-here 
     [set PdAs dproductASales] 
    ] 
    ask suppliers 
    [ 
    set sproductASales PdAs 
    ] 

에이전트는 공급 업체가 전역 변수 인 것처럼 직접 조회 할 수 있지만, 그래서 당신이 가면 당신이 공간적으로 명시 적으로 만드는 옵션이 패치 변수에 액세스 할 수 있습니다 "PDA를"과 같은 변수 경로 (미래에 유통 업체 제품 판매 가치가 다르고 공급 업체가 지역 가치에 액세스 할 수있는 능력이 필요한 경우).

+0

감사합니다. 처음에 당신의 진술에 대한 질문을 해봅시다. "나는 값이 분배 자에 의해 변하지 않으면 나에게 갈 길이 멀다"라고 생각합니다. dproductASales 전역을 정의한 다음 프로 시저에서 숫자를 곱하여 업데이트합니다. 그들은 전 세계에 있기 때문에 "나는 sproductAsales dproductASales"를 설정할 수 있습니다. 나는 sproductASales가 업데이트되기를 기대한다. 그렇지 않습니까? – Naha

+0

전역 변수를 사용하는 경우 모든 에이전트와 직접 쿼리하여 원하는 시점에 에이전트 값을 설정할 수 있습니다. 저는 여러분이 전역을 사용하기를 원하지 않을 것 같았습니다. 그런 다음 그것이 내 대답이 나오는 곳이었습니다. 글로벌을 사용하지 않는 이점은 공간적으로 명시 적으로 값을 변경할 수 있다는 것입니다. 그 능력이 필요 없다면 불필요한 복잡성이 추가됩니다. "모든 것이 가능한 한 간단해야하지만 단순하지 않아야합니다."~ Einstein – Jesse001

+0

sproductASales가 업데이트되면 질문에 대한 추가 답변이 필요할 수 있습니다. 승수를 dproductASales에 적용하면 sproductASales dproductASales yes를 설정하면 보드 전체에서 동일한 값으로 업데이트됩니다. 공급자와 다를 경우 설정 후에 배율을 적용하는 것이 좋습니다. 질문을 현재 코드로 업데이트하려면 어디로 갈지 도와주세요. – Jesse001