首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在NetLogo中将数据作为每个刻度的参数导入?

如何在NetLogo中将数据作为每个刻度的参数导入?
EN

Stack Overflow用户
提问于 2015-05-27 03:58:12
回答 1查看 253关注 0票数 1

我有一个每天股票价格和买入信号的文本数据集(1表示买入,-1表示卖出,0表示不做任何事情)。我如何将数据导入到NetLogo中,以便tick 1将是第一天,所有信息都在第一行,并且对于每个tick,我可以根据数据获得不同的价格和信号?

我拥有的数据格式如下:

滴答价格signal1 signal2 signal3

1 5.795 0 0 0

2 5.805 0 0 0

3 5.815 0 0 0

4 5.8 0 0 0

5 5.8 0 0 0

6 5.81 0 0 0

7 5.845 0 0 0

8 5.855 0 0 0

9 5.85 0 0 0

10 5.87 0 0 0

11 5.885 0 0 0

12 5.865 0 0 0

13 5.855 0 0 0

14 5.835 0 0 0

15 5.84 -1 0 1

代码语言:javascript
复制
globals [
  global-counter
  global-price
  global-signal1
  global-signal2
  global-signal3
]

turtles-own [
  cash
  stock
  total-asset
  w1
  w2
  w3
  w
]

to setup
  clear-all
  reset-ticks
  create-turtle
  stock-import
end

to create-turtle
  create-turtles 100
  ask turtles [ 
    set shape "person"
    setxy random-xcor random-ycor
    set cash 1000
    set stock 0
    set w1 random-float 1
    set w2 random-float ( 1 - w1 )
    set w3 1 - w1 - w2
  ]
end

to stock-import
  file-open "data.txt"
  while [ not file-at-end? ]
  [ 
    set global-counter [ ]
    set global-price [ ]
    set global-signal1 [ ]
    set global-signal2 [ ]
    set global-signal3 [ ]


    let counter file-read
    let price file-read
    let signal1 file-read
    let signal2 file-read
    let signal3 file-read

    set global-counter lput counter global-counter
    set global-price lput price global-price
    set global-signal1 lput signal1 global-signal1
    set global-signal2 lput signal2 global-signal2
    set global-signal3 lput signal3 global-signal3
  ]
  file-close
end

to make-one-trade
  ask turtles [ set w ( w1 * global-signal1 + w2 * global-signal2 + w3 * global-signal3 )
    set cash ( cash - w * global-price )
    set stock ( stock + w1 + w2 + w3 )
    set total-asset ( cash + stock * global-price )
  ]
end

to go
  make-one-trade
  tick
end
EN

回答 1

Stack Overflow用户

发布于 2015-05-27 05:09:42

如果您的数据文件确实使用单个空格来分隔数据,则可以使用csv模块并指定一个分隔符:

代码语言:javascript
复制
extensions [csv]
to setup
  ca
end

to go
  file-open "c:/temp/temp.csv"
  if file-at-end? [ stop ]  ;; protect against end of file
  ;;read a single line (specifying delimiter)
  let _line (csv:from-row file-read-line " ")
  print _line  ;;or do what you want
end

OT:为什么你的数据空间是有分界的?csv格式(即comma分隔值)是一个已建立的国际数据交换标准:http://www.digitalpreservation.gov/formats/fdd/fdd000323.shtml

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30467762

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档