The SPOT Interface for the (1+1)-ES

SPOT provides an interface template, which can be downloaded from the workshop's web site. The user has to modify the following pieces of code.
  1. Add user defined parameters. These parameters will be extracted from a data frame and passed to the algorithm.
  2. Define a call string. This string is executed to start the algorithm.
  3. Extract the result from the algorithm.
The corresponding R code is shown here:
spotAlgStartOnePlusOneEsJava <- function(io.apdFileName
	, io.desFileName
	, io.resFileName){
	## read default problem design
	source(io.apdFileName,local=TRUE)
	## read doe/dace etc settings:
	print(io.desFileName)
	des <- read.table(io.desFileName
			, sep=" "
			, header = TRUE
	);
	config<-nrow(des);
	attach(des)	
	for (k in 1:config){
		if(des$REPEATS[k]>=1){
			for (i in 1:des$REPEATS[k]){
### 1. Add user defined parameters here: 
				if (exists("SIGMANULL")){
					sigma0 <- des$SIGMANULL[k]
				}
				if (exists("VARA")){
					a <- des$VARA[k]
				}
				if (exists("VARG")){
					g <- round(des$VARG[k])
				}
## End of user defined section.				
				conf <- k
				if (exists("CONFIG")){
					conf <- des$CONFIG[k]
				}
				spotStep<-NA
				if (exists("STEP")){
					spotStep <- des$STEP[k]
				}
				seed <- des$SEED[k]+i
### 2. The call string has to be modified by the user:			
				callString <- paste("java -jar simpleOnePlusOneES.jar", 
					seed, steps, target, f, n, xp0, sigma0, a, g, px, py, sep = " ")
### End of user defined call string.
				y <-system(callString, intern= TRUE)
				res <- NULL
				res <- list(Y=y,
### 3. User specific parameter values have to be added to the list:  
						SIGMANULL=sigma0,
						VARA=a,
						VARG=g,
### End of user specific parameter values.
						Function=f,
						MAXITER=steps,
						DIM=n,
						TARGET=target,
						SEED=seed,
						CONFIG=conf
				)
				if (exists("STEP")){
					res=c(res,STEP=spotStep)
				} 
				res <-data.frame(res)
				colNames = TRUE
				if (file.exists(io.resFileName)){
					colNames = FALSE
				}
				## quote = false is required for JAVA
				write.table(res
						, file = io.resFileName
						, row.names = FALSE
						, col.names = colNames
						, sep = " "              
						, append = !colNames
						, quote = FALSE
				);		
				colNames = FALSE
			} # end for i
		} # end if(des$REPEATS[k]>=1)
	}	#end for k
	detach(des)
}
This interface can be used to call the (1+1)-ES from SPOT.

SPOT generates designs (parameter settings for the (1+1)-ES. These designs are based on information provided by the user. How these information can be specified is described in the tutorial Performing experiments in the SPOT environment, which can be downloaded from the workshop's web site.



bartz 2010-07-08