2013-12-18 1 views
2

나는 탈세 모델을 연구 중입니다.Netlogo 여러 라운드의 결과 저장

나는 가장 싼 거래자에서 거래를하기로 결정하는 고정 거래자와 이동 고객이 있습니다. 결과는 회전율이라는 상인 변수로 저장됩니다. 1000 틱이나 세금 기간이 지나면 상인이 세금을 납부합니다. 이 계산은 다음과 같은 여러 요소를 기반으로합니다.

to pay-taxes 
set rep-turnover (turnover) * (1 - evasion-level) ;Evasion level is set by a slider 
set cost-of-goods ((rep-turnover/100) * 25) ;assumes cost-of-goods to be 30 per cent of reported turnover 
set rep-wage-expences ((rep-turnover/100) * 35);assumes wage expences to be 30 per cent of reported turnover 
set general-cost 20000 ; 20 000 in general costs assumed (rent, power, etc) 
set workers-tax (rep-wage-expences/100) * workers-tax-level ; calculates the workers-tax, workers-tax-level based on slider 
set rep-net-result rep-turnover - workers-tax - rep-wage-expences - cost-of-goods - general-cost; calculates the net-result 
set hidden-economy turnover - rep-turnover;calculates how much hidden income the trader has 
end 

모든 것이 지금까지 제대로 작동합니다. 그러나이 기간이 지나면 회전율 카운터 등을 재설정하여 다음 과세 기간이 이번 새 소득에 기초 할 수 있도록합니다.

그래서 내가보고 싶은 것은 소득 등이 시간이 지남에 따라 어떻게 변하는지를 알 수 있도록 회전율 등의 역사를 갖는 것입니다.

하나의 해결 방법은 1000, 2000, 3000 ticks 등의 코드를 작성하고 turnover1, turnover2, turnover3 등의 변수가 있어야합니다. 그러나 코드가 길고별로 우아하지는 않습니다. 이 결과를 저장하는 또 다른 방법이 있습니까? 엑셀 파일처럼?

당신은 NetLogo 모델 라이브러리의 코드 예제 섹션에서 파일 출력 예를 참조 등 엑셀, R에서 읽을 수있는 (아마도 CSV 형식) 텍스트 파일을 생성하는 file-openfile-print (및 기타 file-* 프리미티브를) 사용할 수

답변

3

.

그리고/또는 데이터를 lput을 사용하여 목록에 메모리에 누적하여 마지막에 항목을 추가 할 수 있습니다. http://ccl.northwestern.edu/netlogo/docs/programming.html#lists을 참조하십시오. 다음은 방문한 패치를 기억하는 거북이를 보여주는 예입니다.

turtles-own [history] 

to setup 
    clear-all 
    create-turtles 1 [ set history [] ] 
    reset-ticks 
end 

to go 
    ask turtles [ 
    fd 1 
    set history lput patch-here history 
    ] 
    tick 
end 

observer> setup 
observer> repeat 5 [ go ] 
turtles> foreach history print 
(patch 0 -1) 
(patch 0 -2) 
(patch 0 -3) 
(patch 1 -4) 
(patch 1 -5)