# NOT RUN {
#Will not provide a very good result
NumTurbines <- 4
set.seed(1357)
Result <- optim(par = runif(NumTurbines * 2), fn = Profit,
method = "L-BFGS-B", lower = rep(0, NumTurbines * 2),
upper = rep(1, NumTurbines * 2))
Result
PlotResult(Result)
##########################################
#Will provide a somewhat better result
#Necessary to install pso
# }
# NOT RUN {
if(requireNamespace("pso")){
library(pso)
NumTurbines <- 4
Result <- psoptim(par = runif(NumTurbines * 2), fn = Profit,
lower = rep(0, NumTurbines * 2), upper = rep(1, NumTurbines * 2))
Result
PlotResult(Result)}
# }
# NOT RUN {
##########################################
#Simple wrapper function for optimizers not accepting box constraints
NumTurbines <- 4
lower <- rep(0, NumTurbines * 2)
upper <- rep(1, NumTurbines * 2)
Wrapper <- function(X)
{
xSel <- seq(from = 1, to = length(X) - 1, by = 2)
x <- X[xSel]
y <- X[xSel + 1]
if (any(x < lower) | any(x > upper) | any(y < lower) | any(y > upper))
{
return(sum(rep(FarmVars$UnitCost, length(x))))
}
return(Profit(X))
}
# }
# NOT RUN {
set.seed(1357)
Result <- optim(par = runif(NumTurbines * 2), fn = Wrapper, method = "SANN")
Result
PlotResult(Result)
# }
Run the code above in your browser using DataLab