swarm-support
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

please advise....


From: Ginger Booth
Subject: please advise....
Date: Thu, 30 May 96 15:42:40 EDT

Hi, gang,
    This is a long email asking for advice - feel free to discard now.
    
    OK.  I'm looking for design advice.  I know you've gone to a lot of
trouble building Swarm in such a way that there are a lot of tools at my
disposal....  Since y'all know those tools intimately, maybe you could
sketch for me how you'd proceed?

    Evaluating my user interface needs, I have a core:  my experimental
protocol.  Basically, it's my parameter list.  It is, of course, not a 
simple list, nor of predetermined length.  Content-wise, this looks something 
like (discussion to follow):

    # Lots of comments, who/what/why/when, simulator version, etc.
    Protocol:
        # these are named parameters, named because I'll need to refer
        # to them in another file...somehow.  Maybe not by name, but see
        # how they're used to see why I tentatively used a name....

        randomseed    = -1 # gimme new one.
        endoftime     = 3000
        gopperbday    = 200
        spiderbday    = 291
        normalminsize = 3.0
        plantchild    = 2.95
        gopperchild   = 3.2
        ...etc...
        droughtcycle  = 650
        droughtlen    = 50
        normalrain    = 1.0
        droughtrain   = 0.8
        ...etc...
        
        makeResources 4 {
            sunwater
            carbos
            proteins
            cproteins
        }
        
        # create a landscape
        makeSite Ground0 {
            color = 17 # or some way to say "brown"....
            graphcolor = 17 # color on white, aot color on black....
            xmin  = 0.0
            ymin  = 0.0
            prodfunc = { normalrain, 0, 0, 0 }
            ...etc...
        }
        makeSpecies Critter Plant1 {
            ...etc...
        }
        
        at 0 introduce 50 Plant1 over Ground0
        at 0 introduce 50 Plant2 over Ground0
        at 0 introduce 50 Plant3 over Ground0
        at gopperbday introduce 15 Gopper over Ground0
        at spiderbday introduce  5 Spider over Ground0
        for (i=droughtcycle; i < endoftime; i+= droughtcycle) {
            at i change Ground0.prodfunc = droughtrain
            at i+droughtlen change Ground0.prodfunc = normalrain
        }
        run until endoftime
        
-----------------------------------------------------------------------------
Discussion:
-----------------------------------------------------------------------------

    It would be easier to simply code this, and that is, of course,
what I've been doing all along.  But that's not archive, and an experiment needs
to be rerunnable from archive.  The parameters (whatever syntax is found 
convenient) are unbounded - no fixed number of sites, resources, species, 
weird events to schedule, number of oddball parameters....  Via some mechanism,
I have to refer to each member of this (unbounded) collection of parameters by 
name, because I have a meta-run to find a solution
meeting criterion (something) by varying (arbitrary list of parameters, of
mixed integers and doubles).  All output files include rerunnable protocol.

    There are two other control files - runcontrol (specifying sundry
statistics with GUI on or off, output file seed name, etc.), and searchcontrol 
(specifying the parameters of the search algorithm as well as referring to 
which protocol to start from and which parameters of the protocol to vary).
For obvious reasons, 'twould be nice if the three files were stylistically
consistent.  The world would not end if the three became one.  Popup menus
and suchlike are frosting - the true user interface is how the experimenter
defines his protocol.  In practice, I imagine all protocols will be either
hand-edited or auto-generated child-of-protocol-0.  Popup menus are pretty
much irrelevant, since I need the file whether popups popped or not.

    So the important thing is the (unbounded) protocol.  Would you do this
as an executable tcl script?  How would that look?  Or dynamically linked 
Obj-C module? Or build an interpreter?

    Any advice/insight appreciated.  My apologies for being a pest yet again.
It matters rather a lot that I find a *good* way to do this.  Preferably
elegant.
    
Best regards,
    Ginger
    


reply via email to

[Prev in Thread] Current Thread [Next in Thread]