You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@commons.apache.org by "Jason C. HandUber" <wh...@gmail.com> on 2008/06/14 15:46:43 UTC

Commons-Math UnivariateStatistic implementations have no copy ability - Copy Constructor Proposed

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?

Thanks,
Jason

---------------------------------------------------------------------
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


[math] Re: Commons-Math UnivariateStatistic implementations have no copy ability - Copy Constructor Proposed

Posted by Phil Steitz <ph...@steitz.com>.
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