[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
- please advise....,
Ginger Booth <=