Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

226
Views
Problem of memory when reading csv tables Netlogo

I am working on a Netlogo code that represents hundreds of turtles. Each turtle is characterized by a set of parameters and state variables that are stocked in csv tables (created before running the Netlogo code). Tables are stage-specific, i.e., if a turtle reaches a certain age and changes life stage (e.g., juvenile --> adult), it has to read another table that is specific for the new life stage. Moreover, each table is named with a number (e.g.,"juvenile_file_1.csv","adult_file_1.csv",...,"adult_file_8.csv", etc.), and each turtle chooses randomly among these tables. Here is an example:

set ran.num 50 ; there are 50 tables for juveniles 
 ask turtles[
    let num.file random (ran.num) + 1
    set unique.num.file num.file ; I added this line so that turtles keep the same table number among stages. 
                                 ; I tried this to gain on speed and memory, but it did not change so much
    let file.name (word "juvenile_file_" num.file ".csv")
    if( file-exists? file.name = FALSE )
        [ user-message "Warning: input file  with num does not exist in the current directory!" ]
    set juvenile.input csv:from-file file.name
    set index 1 ; to read the firs row of the table. index in increased at each time step.
[other code lines]
    set sex item 16 item index juvenile.input ; read column 17, first numerical row of the table (very first row has headings)
    set stage item 17 item index juvenile.input
    set exposure.surv item 18 item index juvenile.input
    set reproduction-period item 19 item index juvenile.input
  ]

[other code lines]

  if Length >= 0.95 * L-max and stage = "juvenile"
  [
    set stage "adult" 
    set juvenile.input 0
    let file.name (word "adult_" choice.GUTS "_file_" unique.num.file ".csv")
    if( file-exists? file.name = FALSE )
    [ user-message "Warning: input file  with num does not exist in the current directory!" ]
    set adult.input csv:from-file file.name
]

Because asking the turtles to read the tables when they change life stage is too demanding, I thought that it would have been better to read all the tables in the setup procedure, and then just chose one of them later when needed. However, how can I read all the tables in an automated way in the setup procedure? Just writing dozen of names (e.g., adult.input.1, adult.input.2, juvenile.input.1, juvenile.input.2, etc.) seems pretty time-consuming to me. I hope this is clear. Thanks for your help!

over 4 years ago · Santiago Trujillo
1 answers
Answer question

0

I would consider the Table extension. Put all the adult parameters in one file, with rows that start with the parameter set number (1-8, etc.) and then contain all the parameter values as columns.

Then you could read all the parameters into a table (using csv:from-file and table:from-list.

Then your agents can pick a random parameter set number and get their list of parameter values from the table using table:get.

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!