[Main Page] Main Page | Recent changes | View source | Page history

Printable version | All content dual-licensed under the GNU FDL and the Creative Commons Share-alike Attribution license. | Privacy policy | Latest revision

Not logged in
Log in | Help
 

Swarm: applications

(Difference between revisions)

m (Objective-C or Java?)
 
(10 intermediate revisions by 2 users not shown)
Line 8: Line 8:
  
 
==How to choose and run example applications==
 
==How to choose and run example applications==
 
+
(For a discussion of Java vs. Objective-C, see the FAQ: [[Swarm_FAQ]])
===Objective-C or Java?===
+
You need to decide whether you will write your Swarm programs using Objective-C or Java. Aside from obvious points (such as the fact that you might already be more familiar with one of the languages), here are the pros and cons of the two languages:
+
 
+
*In the world of software development, at least one hundred times as much programming is done in Java as in Objective-C — see http://www.cs.berkeley.edu/~flab/languages.html. So you'll find more people and books that can help you with Java than with Objective-C. You'll also find more third-party libraries so, for example, if your model is three-dimensional, you might choose to abandon Swarm's visual interface (which uses TCL) in favor of Java's Java3D technology.
+
 
+
*Java was created over ten years later than Objective-C, and presumably takes advantage of the advances in language design that occurred after Objective-C was created.
+
 
+
*Probably more Swarm programs have been written in Objective-C than in Java, so there are more Swarm-specific programming models in Objective-C than in Java. On the other hand, given the size of the universe of all individual-based models that anyone might like to program in Swarm, unless you know of a relevant existing model right now, you're not likely to find anything more useful than the standard Swarm demos available in both languages.
+
 
+
*Although expertise in Swarm is rare, and expertise in Objective-C is rare, the latter tends to go with the former. So for the Swarm side of programming, you may find it easier to obtain help in Objective-C, while for the pure model building (programming the behavior of your agents), Java will, as mentioned above, provide more helpful resources.  
+
 
+
*If one language is faster at run time, it's likely to be Objective-C. However, the difference is likely to be slight. You should not accept claims about speed without seeing a relevant benchmark. Try googling ''benchmark java objective-c''.
+
 
+
*Java's treatment of floating-point arithmetic is not a full implementation of the IEEE 754 standard, in that you cannot check whether floating-point errors have occurred or change the rounding direction. In Objective-C this is not a limitation so long as your platform supplies C libraries to access the floating point unit (e.g. fpgetsticky() and fpgsetround()). This is a key advantage of Swarm over other pure-Java libraries. For more on this issue, there's a [http://dx.doi.org/10.1016/j.envsoft.2004.10.011 general paper] on how floating-point arithmetic issues are relevant to agent-based models, and [http://jasss.soc.surrey.ac.uk/8/1/5.html another] showing how these issues affected two specific published models. You may also wish to [http://www.macaulay.ac.uk/fearlus/floating-point/javabugs.html vote for] some requests for enhancements to Java logged with the Sun website (in particular bug IDs [http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=5095286 5095286] and [http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=5095600 5095600]).
+
 
+
*Since the Java interface to the Swarm engine is generated automatically, identical functionality is available in both languages. Thus functionality would never be a reason for choosing one language over the other.
+
  
 
===Objective-C applications===
 
===Objective-C applications===
Line 31: Line 15:
  
 
*Download and un-zip the archive. The archives are usually in TAR GZIP format (e.g., HeatBugs.tar.gz), which you can unzip (in a Linux terminal window or, if using Windows, in Cygwin) by typing "tar xzvf HeatBugs.tar.gz".
 
*Download and un-zip the archive. The archives are usually in TAR GZIP format (e.g., HeatBugs.tar.gz), which you can unzip (in a Linux terminal window or, if using Windows, in Cygwin) by typing "tar xzvf HeatBugs.tar.gz".
*Change directories into the newly unzipped directory of source code.  
+
*Change directories into the newly unzipped directory of source code (in a Linux terminal window or, if using Windows, in Cygwin).  
*If your Swarm installation is set up correctly, you can then compile the application by simply typing "make".  
+
*If your Swarm installation is set up correctly, you can then compile the application by simply typing "make". (If you get a message something like "Makefile: ... /Makefile.appl: No such file or directory..." then you do not have the environment variable SWARMHOME set correctly. Keep reading...)
 
*If compilation is successful, you will have a new executable file (e.g., "heatbugs.exe" in Windows; "heatbugs" in Linux). Then you can start the model by typing "./heatbugs.exe" (or, in Linux, "./heatbugs").
 
*If compilation is successful, you will have a new executable file (e.g., "heatbugs.exe" in Windows; "heatbugs" in Linux). Then you can start the model by typing "./heatbugs.exe" (or, in Linux, "./heatbugs").
 
*A common problem is not having your system's SWARMHOME environment variable correctly pointed to the location of your Swarm installation. SWARMHOME should typically be /usr/local/ or /usr/ if you've installed it from a binary package on a GNU/Linux system. For Windows, see [[Windows_binary_notes]]
 
*A common problem is not having your system's SWARMHOME environment variable correctly pointed to the location of your Swarm installation. SWARMHOME should typically be /usr/local/ or /usr/ if you've installed it from a binary package on a GNU/Linux system. For Windows, see [[Windows_binary_notes]]
Line 68: Line 52:
 
*Keep your eye on the [[ABM_Resources|Agent-based modeling community pages]] for projects using Swarm.
 
*Keep your eye on the [[ABM_Resources|Agent-based modeling community pages]] for projects using Swarm.
 
*See the [[ABM_Resources#Software_Resources|software resources at the ABM Resources area of the wiki]] for a series of template models in Java and Objective-C Swarm, and for guidance on using Swarm with integrated development environments.
 
*See the [[ABM_Resources#Software_Resources|software resources at the ABM Resources area of the wiki]] for a series of template models in Java and Objective-C Swarm, and for guidance on using Swarm with integrated development environments.
 +
 +
----

Latest revision as of 05:57, 16 August 2011

Wiki main page
Swarm main page
Software main page
Stable release
Development snapshot
License
Platforms
Prior releases
Documentation main page
Doc set & reference guide
User guide
FAQ
User support email list
Applications & contrib code
Applications
User-contributed code
Release Management
Checklist
Swarm-logo.jpg

We make a wide variety of Swarm models available. These illustrate the many different kinds of research questions addressed using agent-based models, and provide example ideas and software for other modelers.


Contents

[edit] Demo page

For newcomers, here is a peek at a couple of classic Swarm applications.

[edit] How to choose and run example applications

(For a discussion of Java vs. Objective-C, see the FAQ: Swarm_FAQ)

[edit] Objective-C applications

Listed below are sites where you can download Objective-C Swarm models. To run them:

  • Download and un-zip the archive. The archives are usually in TAR GZIP format (e.g., HeatBugs.tar.gz), which you can unzip (in a Linux terminal window or, if using Windows, in Cygwin) by typing "tar xzvf HeatBugs.tar.gz".
  • Change directories into the newly unzipped directory of source code (in a Linux terminal window or, if using Windows, in Cygwin).
  • If your Swarm installation is set up correctly, you can then compile the application by simply typing "make". (If you get a message something like "Makefile: ... /Makefile.appl: No such file or directory..." then you do not have the environment variable SWARMHOME set correctly. Keep reading...)
  • If compilation is successful, you will have a new executable file (e.g., "heatbugs.exe" in Windows; "heatbugs" in Linux). Then you can start the model by typing "./heatbugs.exe" (or, in Linux, "./heatbugs").
  • A common problem is not having your system's SWARMHOME environment variable correctly pointed to the location of your Swarm installation. SWARMHOME should typically be /usr/local/ or /usr/ if you've installed it from a binary package on a GNU/Linux system. For Windows, see Windows_binary_notes

[edit] Java applications

We provide step-by-step instructions for compiling and running the Java program Jheatbugs-3.0 on Windows XP using Swarm 2.2. Our demo covers interactive (visual) mode as well as batch mode (multiple runs with output to files).

Other Java Swarm models are listed below.

[edit] Official applications archive

Our official archive of Swarm applications is at http://ftp.swarm.org/pub/swarm/apps/. Even though these models are generally old, many of them still work in Swarm 2.2. There are far more Objective-C than Java applications in the archive.

The archive includes Java versions of the Swarm classics heatbugs and mousetrap. The versions that worked with Swarm-2.1.1 and Swarm-2.2 are currently available in the testing subdirectory of the ftp archive. Look for jheatbugs-2001-03-28.tar.gz and jmousetrap-2001-09-13.tar.gz.

We strongly encourage people to contribute new applications! The site includes a form for describing contributions.


[edit] Paul Johnson's package of Objective-C applications

Paul Johnson has generously assembled a new package of applications for Swarm-2.2. This is a revised version, correcting a couple of glitches in saving of screen snapshots. It is available from Paul's web site: http://www.ku.edu/~pauljohn/Swarm/swarmapps-objc-2.2-2.tar.gz and also at the Swarm download site: http://ftp.swarm.org/pub/swarm/apps/objc/sdg/swarmapps-objc-2.2-2.tar.gz. Please keep testing and let Paul know how it works.

The package contains classic example Swarm applications, including:

  • The Swarm tutorial (discussed in the Swarm User Guide)
  • Heatbugs
  • Mousetrap
  • ArborgamesII (a simulation of forests used in publications by M. Savage et al.)
  • SchellingII (Schelling's neighborhood segregation model)
  • Conway (the Game of Life)
  • sss (Swarm Sugar Scape).

We are soliciting volunteers who want to maintain some 'orphaned' applications from swarmapps-2.1.1. These apps that need love and attention are market, template, and hello-world. If you are interested in taking on one of those applications, or offering up other applications, contact PJ.

[edit] Additional links