commons-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Jason C. HandUber" <wheri...@gmail.com>
Subject Re: [math] Re: Commons-Math UnivariateStatistic implementations have no copy ability - Copy Constructor Proposed
Date Thu, 19 Jun 2008 01:12:06 GMT
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


Mime
View raw message