Title: Software for Individualbased Models
1Software for Individual-based Models
- Problems
- Solutions
- Software Platforms
- Testing Methods
2What Software Challenges Do IBMs Present?
3Why is Software So Important for IBMs? (1)
- Even simple IBMs can be complex
- Many kinds of entities
- Virtually infinite model states and execution
pathways - Software design becomes important
4Why is Software So Important for IBMs? (2)
- Software is just another implementation of a
model - NOT TRUE - Software must allow us to
- Observe the model from many perspectives
- Understand what happened and why
5Why is Software So Important for IBMs? (3)
- Quality control is a serious job
- Errors are inevitable yet rarely obvious
6Why is Software So Important for IBMs? (4)
- Standardization and Communication
- The more we use the same software tools, the
easier it is to describe models completely and
accurately
7Software Engineering(vs. programming)
- Selecting an appropriate platform
- Designing the softwares organization
- Providing observer capabilities
- Conducting a quality control program
- Conducting software maintenance
- ...
8Dealing with Software Challenges
- Select an appropriate, widely used platform
- Collaborate with software professionals
- Provide observation and analysis tools early
- Conduct a pervasive testing process
9Software Platforms
Repast
10Software Platforms
- Reduce effort
- Reduce errors
- Provide tools
- Observation
- Automatic experiments
- Standardize models enhance communication
- Provide a community
11Software Testing
- Bugs in IBMs are
- inevitable
- not obvious
- found only by looking hard
- (if not found) extremely expensive and
embarrassing
12Software Testing Methods (1) Code Reviews
- Catch many typos and logical errors
- Encourage well-organized code
- software should be written for people, not
machines
13Software Testing Methods (2) Spot Pattern Tests
- Catch widespread errors
- Are powerful with graphical output
14Visual Pattern Tests
15 migrantLocX migrantPrevLocX (timeStepSize
(habVelX migrantRandomVelX) ) migrantLocY
migrantPrevLocY (timeStepSize (habVelY
migrantRandomVelY) )
16Testing Methods (3) Second Implementation
- The only (reasonably) reliable way to catch
errors that happen only some of the time or to
some individuals - (which are very common!)
17Second Implementation of Submodels is Not Hard
Written formulation
Submodelprototype
18Second Implementation of Submodels is Not Hard
Written formulation
Complete software
Submodelprototype
19Second Implementation Example
20Software What We Can Do
- Plan and budget
- Share, develop, and support common tools