- labels: 100100 -->
- milestone: 100100 -->
- priority: 5 --> 3
- status: open --> open-out-of-date
Okay, so I know 1.5.2 is old as dirt, but the most current version of Debian--unstable--still ships with 1.5.2 instead of 1.6. The shelve fcn seems to be broken...not your bug, I know, but you may want to put a note somewhere about it.
here's the error:
Traceback (innermost last):
File "./gapoly.py", line 318, in ?
main()
File "./gapoly.py", line 41, in main
logfilename = "test.log" # log file name
File "/home/bcollar/programs/cas/Gatspy/population.py", line 128, in __init__
self.initPopulation()
File "/home/bcollar/programs/cas/Gatspy/population.py", line 141, in initPopulation
self.insertMember( Member(self) )
File "/home/bcollar/programs/cas/Gatspy/population.py", line 164, in insertMember
self.log.logMember(member)
File "/home/bcollar/programs/cas/Gatspy/poplog.py", line 70, in logMember
self.log[ str(id(member)) ] = str(member)
File "/usr/lib/python1.5/shelve.py", line 71, in __setitem__
self.dict[key] = f.getvalue()
bsddb.error: (1, 'Operation not permitted')
here's the evaluate:
def evaluate(self, member):
sum_below_zero = 0
# set the equation list you are interested in running
# here
for eq in equations3:
poly = apply(eq, self._vals(member.gene))
if poly < 0:
sum_below_zero = sum_below_zero + poly
assert sum_below_zero <= 0, "fitness should be negative"
fitness = sum_below_zero * -1
return fitness
and here's the population:
def main():
import random
# set the variables here. note the membersize and schemalocs
# variables depend on which equation set you use, and
# how many coefficients that set expects.
pe = PolyEvolver(
crossrate = .32, # crossover rate
mutrate = .08, # mutation rate
fitgoal = 0, # fitness goal
membersize = 3*17, # the length of a member
valmin = 0, # minimum value of int in gene
valmax = 1, # maximum value of int in gene
schemalocs = range(3,3*17,3), # keeps blocks of values together
alienrate = 0.15, # likelihood of adding aliens per gen
seed = random.randint(random.randint(1,9), random.randint(10,20)),
littersize = 2,
logflag = 1,
logfilename = "test.log"
)
Ben