Sender: |
|
Date: |
Tue, 14 Oct 2008 12:57:04 -0400 |
MIME-version: |
1.0 |
Reply-To: |
|
Content-type: |
text/plain; charset=ISO-8859-1; format=flowed |
Subject: |
|
From: |
|
In-Reply-To: |
|
Content-transfer-encoding: |
8BIT |
Comments: |
|
Parts/Attachments: |
|
|
A few months back I made modifications to PTC1 and PTC2 to make them
more robust for exactly your purposes. I don't know if those versions
are on the current ECJ snapshot yet -- they're definitely on CVS.
Before we go further here, let's make sure that you've got the most
recent versions and things are still having problems.
Sean
José Carlos B. Ribeiro wrote:
> 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é
|
|
|