You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@commons.apache.org by Phil Steitz <ph...@steitz.com> on 2008/06/14 20:33:38 UTC
[math] Re: Commons-Math UnivariateStatistic implementations have
no copy ability - Copy Constructor Proposed
Jason C. HandUber wrote:
> Hello,
>
> I'm writing an evolutionary algorithm in which each individual
> contains StandardDeviations and Means. From time to time I need a deep
> copy / clone of an individual. Thus far I've actually had to keep a
> list of all data and, when cloning, generate a new statistic and
> increment it with all that data. Now that I'm moving to production
> level, turns out I'm running out of memory (no huge surprise). I'm
> going to extend Mean, Variance, StandardDeviation, FirstMoment, and
> SecondMoment for my application to provide a copy constructor (which,
> according to Item 10, page 51 of Bloch's effective java, beats out
> clone, and I buy that) for each. Anyway, I think that addition would
> be easy and general enough to introduce into the trunk. Any thoughts?
+1 on this enhancement, also for SummaryStatistics, implemented as you
describe.
Please follow instructions here
<http://commons.apache.org/math/developers.html> to create a patch
against either trunk or the 2.0 development branch (/branches/MATH_2_0)
and attach it to a JIRA ticket.
Thanks!
Phil
---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@commons.apache.org
For additional commands, e-mail: user-help@commons.apache.org
Re: [math] Re: Commons-Math UnivariateStatistic implementations have
no copy ability - Copy Constructor Proposed
Posted by "Jason C. HandUber" <wh...@gmail.com>.
Phil,
Well, that was easy in some cases and I'm not sure how it went in others
and could use help. I had issue with creating a copy constructor for
GeometricMean and SummaryStatistic. Both of these classes allow the user
to, via the API, set a StorelessUnivariateStatistic as the
implementation. For instance take the following method in Geometric mean:
public void setSumLogImpl(
StorelessUnivariateStatistic sumLogImpl) {
checkEmpty();
this.sumOfLogs = sumLogImpl;
}
There is no way to create a true deep copy of sumLogImpl, as we only
know it to be an instance of StorelessUnivariateStatistic. I think the
solution is to allow the copy constructors for the below classes into
the baseline, but not provide a copy constructor for GeometricMean or
SummaryStatistic unless you want to (1) deprecate the implementation
business or (2) create a abstract copy method in
StorelessUnivariateStatistic forcing all implementations to be 'copyable'.
The following classes were able to be given copy constructors without issue:
Max
SumOfSquares
Sum
Product
FirstMoment
SecondMoment
ThirdMoment
FourthMoment
Median
Min
SumOfLogs
Percentile
Skewness
Variance
Mean
Kurtois
StandardDeviation
Phil Steitz wrote:
> Jason C. HandUber wrote:
>> Hello,
>>
>> I'm writing an evolutionary algorithm in which each individual
>> contains StandardDeviations and Means. From time to time I need a
>> deep copy / clone of an individual. Thus far I've actually had to
>> keep a list of all data and, when cloning, generate a new statistic
>> and increment it with all that data. Now that I'm moving to
>> production level, turns out I'm running out of memory (no huge
>> surprise). I'm going to extend Mean, Variance, StandardDeviation,
>> FirstMoment, and SecondMoment for my application to provide a copy
>> constructor (which, according to Item 10, page 51 of Bloch's
>> effective java, beats out clone, and I buy that) for each. Anyway, I
>> think that addition would be easy and general enough to introduce
>> into the trunk. Any thoughts?
> +1 on this enhancement, also for SummaryStatistics, implemented as you
> describe.
>
> Please follow instructions here
> <http://commons.apache.org/math/developers.html> to create a patch
> against either trunk or the 2.0 development branch
> (/branches/MATH_2_0) and attach it to a JIRA ticket.
>
> Thanks!
>
> Phil
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-unsubscribe@commons.apache.org
> For additional commands, e-mail: user-help@commons.apache.org
>
---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@commons.apache.org
For additional commands, e-mail: user-help@commons.apache.org