ECJ-INTEREST-L Archives

October 2008

ECJ-INTEREST-L@LISTSERV.GMU.EDU

Options: Use Monospaced Font
Show Text Part by Default
Show All Mail Headers

Message: [<< First] [< Prev] [Next >] [Last >>]
Topic: [<< First] [< Prev] [Next >] [Last >>]
Author: [<< First] [< Prev] [Next >] [Last >>]

Print Reply
Subject:
From:
"José Carlos B. Ribeiro" <[log in to unmask]>
Reply To:
ECJ Evolutionary Computation Toolkit <[log in to unmask]>
Date:
Tue, 14 Oct 2008 15:52:42 +0100
Content-Type:
text/plain
Parts/Attachments:
text/plain (62 lines)
Hi,

I've been using ECJ for performing some experiments with
Strongly-Typed GP (namely, for evolving unit-test cases for Java
programs).

I wanted to perform some experiments that require setting different
probabilities of selecting constraints, and I found out that the PTC1
and PTC2 algorithms allow me to do this. However, I've been having
some problems.

Please consider the parametrization below. Basically, I want
GPNodeConstraint nc1 to be chosen with a probability of 30% and nc2 to
be selected with a probability of 70%.

----- EXAMPLE PARAMETERIZATION -----
gp.type.a.size = 2
gp.type.a.0.name = A
gp.type.a.1.name = B

gp.nc.size = 3
gp.nc.0 = ec.gp.GPNodeConstraints
gp.nc.0.name = nc0
gp.nc.0.returns = B
gp.nc.0.size = 1
gp.nc.0.child.0 = A

gp.nc.1 = ec.gp.GPNodeConstraints
gp.nc.1.name = nc1
gp.nc.1.returns = A
gp.nc.1.size = 0
gp.nc.1.prob = 0.3

gp.nc.2 = ec.gp.GPNodeConstraints
gp.nc.2.name = nc2
gp.nc.2.returns = A
gp.nc.2.size = 0
gp.nc.2.prob = 0.7

gp.fs.0.size = 3
gp.fs.0.func.0 = functionFiles.FFB1
gp.fs.0.func.0.nc = nc0
gp.fs.0.func.1 = functionFiles.FFA1
gp.fs.0.func.1.nc = nc1
gp.fs.0.func.2 = functionFiles.FFA2
gp.fs.0.func.2.nc = nc2
-----

When I tried this out I got the following error message:
"java.lang.ArithmeticException: Distribution has no elements". I guess
that the problem here is that I didn't define any non-terminals for
the atomic type A, and no terminals for B. Everything works fine if
both A and B have terminals and non-terminals.

The problem is that my problem requires me to define some types that
only have terminal nodes (like A). Is there any way for me to get
around this? Or am I missing something?

Thanks, in advance, for your help,

Josť

ATOM RSS1 RSS2