Hello @swaheera ,
two remarks to start with:
- always use
set.seed
to that we can exactly reproduce your results - please always include a reprex . Of course I know that you included all parts of your code but while copying you made a mistake: you mentioned
library(nsga2r)
instead oflibrary(nsga2R)
.
Not something that can't be solved, but this could have been avoid when you had used thereprex
package to show us the code.
That said, I don't understand the purpose of your optimization so I can't help you there.
What strikes me is that you want to optimize (in some way?) four dependent numbers: the mean of a variable and then the mean of subsets thereof. Apparently this is not accepted here. By the way, I think you could have shown more of the context of the error message:
initializing the population
ranking the initial population
Error in if (all(xj <= xi) && any(xj < xi)) { :
missing value where TRUE/FALSE needed
I think your code is not wrong because I can run it when I slightly change the function and the optimization call:
set.seed(2021)
#define function
funct_set <- function (x) {
....
return(f[3:4])
}
#optimization
results <- nsga2R(fn=funct_set, varNo=7, objDim=2,
lowerBounds=c(80,80,80,80, 100, 200, 300),
upperBounds=c(120,120,120,120,200,300,400),
popSize=50, tourSize=2, generations=50,
cprob=0.9, XoverDistIdx=20, mprob=0.1,MuDistIdx=3)
I think this suggests that the code is not wrong but that this optimization is not fit for your purpose (?)