Hi Joshua,

Thank you very much for the comprehensive response. 

In the meantime, I had taken a look at the source code of function DEoptim() 
and your example below confirms the conclusions that I have arrived at from 
that review as to the expected nature of the function passed as fnMap. What I 
continue to find confusing and a bit disconcerting, however, is that DEoptim() 
actively tries to avoid duplicates in the parameter vector which of course is 
the intended result when enforcing a cardinality constraint on a vector of 
allocation weights by forcing some of them to 0. As DEoptim() will make five 
attempts at randomly perturbing the parameter vector and resubmitting it to the 
mapping function before giving up I am concerned that this may at least slow 
down if not potentially even derail or otherwise interfere with convergence. I 
have yet to run a practical test but I wonder whether there is a deeper reason 
for this or if this can be safely ignored.

Btw, I have checked out the SVN repository and had a quick look at the example 
in slimLargeN_map.R, but I do not see the fnMap functionality being used in the 
large-scale optimization vignette. The vignette performs rescaling of the 
allocation weights vector to meet the budget constraint inside the objective 
function but does not seem to enforce any cardinality constraints.

Best regards,
David

-----Original Message-----
From: Joshua Ulrich [mailto:josh.m.ulr...@gmail.com] 
Sent: Saturday, June 16, 2012 3:29 AM
To: David-Michael Lincke
Cc: r-help@r-project.org
Subject: Re: [R] DEoptim example illustrating use of fnMap parameter for 
enforcement of cardinality constraints

Hi David,

I apologize for the lack of documentation.  I added it quickly and didn't have 
adequate time to document it.

The function below works with the objective function in the "Large-scale 
portfolio optimization with DEoptim" vignette.
Also, I just committed the full example
(pkg/DEoptim/sandbox/slimLargeN_map.R) to the DEoptim repository on
R-forge: https://r-forge.r-project.org/projects/deoptim/

mappingFun <- function(x) {
  x[which(order(x) < 6)] <- 0
  x <- round(x,2) # produce some dups
  x/sum(x)
}
set.seed(1234)
out <- DEoptim(fn=obj, lower=lower,
  upper=upper, control=controlDE, fnMap=mappingFun)

Best,
--
Joshua Ulrich  |  FOSS Trading: www.fosstrading.com


On Fri, Jun 15, 2012 at 3:24 AM, David-Michael Lincke <dlin...@lincke.com> 
wrote:
> Function DEoptim in package DEoptim for differential evolution defines an 
> optional parameter fnMap:
>
> fnMap
>
> "an optional function that will be run after each population is created, but 
> before the population is passed to the objective function. This allows the 
> user to impose integer/cardinality constriants."
>
> Unfortunately, there is no further documentation decribing the kind of 
> parameters being passed to this function on invocation or the structure of 
> the return value expected. I would very much appreciate it if somebody 
> familiar with this package could provide an example illustrating how this 
> interface is meant to be used to enforce cardinality constraints.
>
> Thanks,
> David
>
>
>        [[alternative HTML version deleted]]
>
> ______________________________________________
> R-help@r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide 
> http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.

______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to