Including a Netlogo source file into another

2019-02-13 13:57发布

How can I include the procedures from one Netlogo file into another? Basically, I want to separate the code of a genetic algorithm from my (quite complicated) fitness function, but, obviously, I want the fitness reporter, which will reside in "fitness.nlogo", to be available in the genetic algorithm code, probably "genetic.nlogo".

If it can be done, how are the procedures imported, and the code executed? Is it like Python, where importing a module pretty much executes everything in the module, or like C/C++, where the file is blindly "joined"?

This may be a stupid question, but I couldn't find anything on Google. The Netlogo documentation says something about __includes, an experimental keyword that may do the trick, but there's not much explained there. No example either.

Any hints? Should I go with __includes? How does it work?

2条回答
唯我独甜
2楼-- · 2019-02-13 14:05

You can create a file libfile.nls and in the same folder create your main model model.nlogo.

After that, go to your model.nlogo and write:

__includes["libfile.nls"]  

This file contains your reporters and procedures that you can call in your model.

查看更多
唯我独甜
3楼-- · 2019-02-13 14:12

To include a file you use

__includes["libfile.nls"]

After adding this and pressing the “Check” button, a new button will appear next to the Procedures drop-down menu. There you can create and manage multiple source files.

The libfile.nls is just a text file that contains NetLogo code. It is not a netlogo model, which always end in .nlogo, as a NetLogo model contains a lot of other information besides the NetLogo code.

Including a file is the equivalent of just inserting all its contents at that point. In order to make it work in a way like reusable library files, one should create procedures which use agentsets and parameters as input variables to be independent of global definitions or interface settings.

The feature is documented in the NetLogo User Manual at http://ccl.northwestern.edu/netlogo/docs/programming.html#includes.

查看更多
登录 后发表回答