## ----setup, include=FALSE----------------------------------------------------- knitr::opts_chunk$set(echo = TRUE) ## ----installMEIGO2, eval=FALSE, pgf=TRUE, echo=TRUE--------------------------- # if (!requireNamespace("BiocManager", quietly=TRUE)) # install.packages("BiocManager") # BiocManager::install("CellNOptR") ## ----load_package, eval=TRUE, pgf=TRUE, echo=FALSE,results='hide',warning=FALSE, message=FALSE---- library(MEIGOR) ## ----quickProblem, eval=FALSE, pgf=TRUE, echo=TRUE---------------------------- # library(MEIGOR) # problem<-list(f=objective, x_L=rep(-1,2), x_U=rep(1,2)) # opts<-list(maxeval=500, local_solver='DHC') ## ----quickProblemSolve, eval=TRUE, pgf=TRUE, echo=TRUE,results='hide'--------- ex3<-function(x,k1,k2,k3,k4){ f=-x[4] # Equality constraints (declared before the inequality ones) g<-rep(0,5); g[1]=x[4]-x[3]+x[2]-x[1]+k4*x[4]*x[6] g[2]=x[1]-1+k1*x[1]*x[5] g[3]=x[2]-x[1]+k2*x[2]*x[6] g[4]=x[3]+x[1]-1+k3*x[3]*x[5] # Inequality constraint g[5]=x[5]^0.5+x[6]^0.5 return(list(f=f,g=g)) } ## ----invokeex3, eval=TRUE, pgf=TRUE, echo=TRUE,results='hide'----------------- ex3(c(1,1,1,1,1,1),0.2,0.5,-0.1,0.9) ## ----multiStart, eval=FALSE, pgf=TRUE, echo=TRUE------------------------------ # Results_multistart<-MEIGO(problem,opts,algorithm="MULTISTART",p1,p2,...) ## ----unConstrainedF, eval=TRUE, pgf=TRUE, echo=TRUE, results='hide'----------- ex1 <- function(x){ y<-4*x[1]*x[1]-2.1*x[1]^4+1/3*x[1]^6+x[1]*x[2]-4*x[2]*x[2]+4*x[2]^4; return(y) } ## ----unConstrainedSolve, eval=TRUE, pgf=TRUE, echo=TRUE,results='hide'-------- #========================= #PROBLEM SPECIFICATIONS # ======================== problem<-list(f="ex1",x_L=rep(-1,2),x_U=rep(1,2)) opts<-list(maxeval=500, ndiverse=40, local_solver='DHC', local_finish='LBFGSB', local_iterprint=1) #=============================== # END OF PROBLEM SPECIFICATIONS #=============================== Results<-MEIGO(problem,opts,algorithm="ESS") ## ----ex2F, eval=TRUE, pgf=TRUE, echo=TRUE,results='hide'---------------------- ex2<-function(x){ F=-x[1]-x[2] g<-rep(0,2) g[1]<-x[2]-2*x[1]^4+8*x[1]^3-8*x[1]^2 g[2]<-x[2]-4*x[1]^4+32*x[1]^3-88*x[1]^2+96*x[1] return(list(F=F,g=g)) } ## ----ex2Solve, eval=TRUE, pgf=TRUE, echo=TRUE,results='hide'------------------ #========================= #PROBLEM SPECIFICATIONS #========================= problem<-list(f="ex2",x_L=rep(0,2),x_U=c(3,4), c_L=rep(-Inf,2), c_U=c(2,36)) opts<-list(maxeval=750, local_solver="DHC", local_n1=2, local_n2=3) #============================= #END OF PROBLEM SPECIFICATIONS # ============================ Results<-MEIGO(problem,opts,algorithm="ESS") ## ----ex3f, eval=TRUE, pgf=TRUE, echo=TRUE,results='hide'---------------------- ex3<-function(x,k1,k2,k3,k4){ f=-x[4] #Equality constraints g<-rep(0,5) g[1]=x[4]-x[3]+x[2]-x[1]+k4*x[4]*x[6] g[2]=x[1]-1+k1*x[1]*x[5] g[3]=x[2]-x[1]+k2*x[2]*x[6] g[4]=x[3]+x[1]-1+k3*x[3]*x[5] #Inequality constraint g[5]=x[5]^0.5+x[6]^0.5 return(list(f=f,g=g)) } ## ----ex2Solve3, eval=TRUE, pgf=TRUE, echo=TRUE,results='hide', warning=FALSE---- #========================= #PROBLEM SPECIFICATIONS #========================= problem<-list(f="ex3",x_L=rep(0,6),x_U=c(rep(1,4),16,16), neq=4, c_L=-Inf, c_U=4) opts<-list(maxtime=5, local_solver='solnp') #============================= #END OF PROBLEM SPECIFICATIONS #============================= k1=0.09755988 k3=0.0391908 k2=0.99*k1 k4=0.9*k3 Results<-MEIGO(problem,opts,algorithm="ESS",k1,k2,k3,k4) ## ----ex4f, eval=TRUE, pgf=TRUE, echo=TRUE,results='hide'---------------------- ex4<-function(x){ F = x[2]^2 + x[3]^2 + 2.0*x[1]^2 + x[4]^2 - 5.0*x[2] - 5.0*x[3] - 21.0*x[1] + 7.0*x[4] g<-rep(0,3) g[1] = x[2]^2 + x[3]^2 + x[1]^2 + x[4]^2 + x[2] - x[3] + x[1] - x[4] g[2] = x[2]^2 + 2.0*x[3]^2 + x[1]^2 + 2.0*x[4]^2 - x[2] - x[4] g[3] = 2.0*x[2]^2 + x[3]^2 + x[1]^2 + 2.0*x[2] - x[3] - x[4] return(list(F=F, g=g)) } ## ----ex4main, eval=TRUE, pgf=TRUE, echo=TRUE,results='hide'------------------- #========================= PROBLEM SPECIFICATIONS =========================== problem<-list(f="ex4", x_L=rep(0,4), x_U=rep(10,4), x_0=c(3,4,5,1), int_var=3, c_L=rep(-Inf,3), c_U=c(8,10,5)) opts<-list(maxtime=2) #========================= END OF PROBLEM SPECIFICATIONS ===================== Results<-MEIGO(problem,opts,algorithm="ESS") ## ----ex3solve, eval=FALSE, pgf=TRUE, echo=TRUE,results='hide'----------------- # #========================= # #PROBLEM SPECIFICATIONS # #========================= # problem<-list(f="ex3",x_L=rep(0,6),x_U=c(rep(1,4),16,16), # neq=4, c_L=-Inf, c_U=4) # opts<-list(ndiverse=10, local_solver='SOLNP', local_tol=3) # #============================= # #END OF PROBLEM SPECIFICATIONS # #============================ # k1=0.09755988 # k3=0.0391908 # k2=0.99*k1 # k4=0.9*k3 # Results<-MEIGO(problem,opts,algorithm="multistart",k1,k2,k3,k4) ## ----sourceRosen10, eval=TRUE, pgf=TRUE, echo=TRUE,results='hide'------------- rosen10<-function(x){ f<-0 n=length(x) for (i in 1:(n-1)){ f <- f + 100*(x[i]^2 - x[i+1])^2 + (x[i]-1)^2 } return(f) } nvar<-10 ## ----rosen10settings, eval=TRUE, pgf=TRUE, echo=TRUE,results='hide'----------- problem<-list(f="rosen10", x_L=rep(-5,nvar), x_U=rep(1,nvar)) ## ----algVNS, eval=TRUE, pgf=TRUE, echo=TRUE,results='hide'-------------------- algorithm="VNS" ## ----vnsOPts, eval=TRUE, pgf=TRUE, echo=TRUE,results='hide'------------------- opts<-list(maxeval=2000, maxtime=3600*69, use_local=1, aggr=0, local_search_type=1, decomp=1, maxdist=0.5) ## ----vnsCallMEIGO, eval=TRUE, pgf=TRUE, echo=TRUE,results='hide'-------------- Results<-MEIGO(problem,opts,algorithm) ## ----options, eval=FALSE, pgf=TRUE, echo=TRUE--------------------------------- # opts=list(); # opts[[1]]$maxeval<-value1 # opts[[2]]$maxeval<-value2 # opts[[3]]$maxeval<-value3 ## ----ceSSexample, eval=TRUE, pgf=TRUE, echo=TRUE,results='hide', warning=FALSE, message=FALSE---- rosen10<-function(x){ f<-0 n=length(x) for (i in 1:(n-1)){ f <- f + 100*(x[i]^2 - x[i+1])^2 + (x[i]-1)^2 } return(f) } nvar=20 problem<-list(f=rosen10, x_L=rep(-1000,nvar), x_U=rep(1000,nvar)) #Set 1 nodes and 2 cpu's per node n_nodes=1 n_cpus_per_node=3 #Set different values for dim_refset, bal and n2 #for each of the 10 cpu's to be used dim1 = 23; bal1 = 0; n2_1 = 0; dim2 = 33; bal2 = 0; n2_2 = 0; dim3 = 46; bal3 = 0; n2_3 = 2; dim4 = 56; bal4 = 0; n2_4 = 4; dim5 = 72; bal5 = 0.25; n2_5 = 7; dim6 = 72; bal6 = 0.25; n2_6 = 10; dim7 = 88; bal7 = 0.25; n2_7 = 15; dim8 = 101; bal8 = 0.5; n2_8 = 20; dim9 = 111; bal9 = 0.25; n2_9 = 50; dim10 = 123; bal10 = 0.25; n2_10 = 100; opts_dim=c(dim1,dim2,dim3,dim4,dim5,dim6,dim7,dim8,dim9,dim10) opts_bal=c(bal1,bal2,bal3,bal4,bal5,bal6,bal7,bal8,bal9,bal10) opts_n2=c(n2_1,n2_2,n2_3,n2_4,n2_5,n2_6,n2_7,n2_8,n2_9,n2_10) D=10 #Initialize counter and options counter=0 opts=list() hosts=c() for(i in 1:n_nodes){ for(j in 1:n_cpus_per_node){ counter=counter+1 #Set the name of every thread if(i<10)hosts=c(hosts,paste('node0',i,sep="")) if(i>=10 && i<100)hosts=c(hosts,paste('node',i,sep="")) opts[[counter]]=list() #Set specific options for each thread opts[[counter]]$local_balance = opts_bal[counter] opts[[counter]]$dim_refset = opts_dim[counter] opts[[counter]]$local_n2 = opts_n2[counter] #Set common options for each thread opts[[counter]]$maxeval = 10000 opts[[counter]]$local_solver = "dhc" #Options not set will take default values for every thread } } #Set the address of each machine, defined inside the 'for' loop opts$hosts=c('localhost','localhost','localhost') #Do not define the additional options for cooperative methods (e.g., ce_maxtime, ce_isparallel, etc..) #They will take their default values opts$ce_niter=5 opts$ce_type="SOCKS" opts$ce_isparallel=TRUE #Call the solver Results<-MEIGO(problem,opts,algorithm="CeSSR") ## ----ceVNSexample, eval=TRUE, pgf=TRUE, echo=TRUE,results='hide', warning=FALSE, message=FALSE---- rosen10<-function(x){ f<-0 n=length(x) for (i in 1:(n-1)){ f <- f + 100*(x[i]^2 - x[i+1])^2 + (x[i]-1)^2 } return(f) } nvar=20 problem<-list(f=rosen10, x_L=rep(-1000,nvar), x_U=rep(1000,nvar)) opts=list() opts[[1]]=list(use_local=1,aggr=1,local_search=1,decomp=1,maxdist=0.8,maxeval=2000) opts[[2]]=list(use_local=1,aggr=0,local_search=2,decomp=0,maxdist=0.5,maxeval=2000) opts[[3]]=list(use_local=1,aggr=0,local_search=2,decomp=0,maxdist=0.5,maxeval=2000) opts[[4]]=list(use_local=1,aggr=0,local_search=2,decomp=0,maxdist=0.5,maxeval=2000) opts$hosts=c('localhost','localhost','localhost','localhost') opts$ce_niter=10 opts$ce_type="SOCKS" opts$ce_isparallel= TRUE Results=MEIGO(problem,opts, algorithm="CeVNSR") ## ----CNORodeExampleFig,include=TRUE,echo=TRUE,results='hide', message=FALSE, fig.align = 'center', fig.cap = "Plot of the experimental data for the CNORode example."---- library(MEIGOR) library(CNORode) data("CNORodeExample",package="MEIGOR") plotCNOlist(cnolist) ## ----CNORodeExampleFigModel,include=TRUE,echo=FALSE,results='hide', fig.align = 'center', fig.cap = "The model structure for the CNORode example."---- plotModel(model, cnolist) ## ----CNORodeExampleInitial, include=TRUE, echo=FALSE,results='hide', warning = FALSE, fig.align = 'center', fig.cap = "Fit for the initial (random) solution provided to the optimization solver. The simulation is ploted against the experimental data."---- initial_pars=createLBodeContPars(model, LB_n = 1, LB_k = 0.09, LB_tau = 0.1, UB_n = 5, UB_k = 0.95, UB_tau = 10, random = TRUE) simData=plotLBodeFitness(cnolist, model,initial_pars, reltol = 1e-05, atol = 1e-03, maxStepSize = 0.01) ## ----CNORodeExamplePptimize, eval=TRUE,echo=TRUE,results='hide'--------------- f_hepato<-getLBodeContObjFunction(cnolist, model, initial_pars, indices=NULL, time = 1, verbose = 0, transfer_function = 3, reltol = 1e-04, atol = 1e-03, maxStepSize =Inf, maxNumSteps = 1e4, maxErrTestsFails = 50, nan_fac = 5) ## ----CNORodeExampleDefineProb, eval=TRUE,echo=TRUE,results='hide'------------- n_pars=length(initial_pars$LB) problem<-list(f=f_hepato, x_L=initial_pars$LB[initial_pars$index_opt_pars], x_U=initial_pars$UB[initial_pars$index_opt_pars],x_0=initial_pars$LB[initial_pars$index_opt_pars]) ## ----CNORodeExampleDefineOpts, eval=TRUE,echo=TRUE,results='hide'------------- opts<-list(maxeval=100, local_solver=0,ndiverse=10,dim_refset=6) ## ----CNORodeExample2, eval=TRUE,echo=TRUE,results='hide'---------------------- Results<-MEIGO(problem,opts,algorithm="ESS") ## ----CNORodeExampleOptPlot,include=TRUE,echo=FALSE,results='hide', warning=FALSE, fig.align = 'center', fig.cap = "Fitness of the solution obtained by the eSS in the CNORode parameter estimation problem."---- opt_pars=initial_pars; opt_pars$parValues=Results$xbest; simData=plotLBodeFitness(cnolist, model,opt_pars, reltol = 1e-05, atol = 1e-03, maxStepSize = 0.01) ## ----CellNOptRExampleCnolist, include=TRUE,echo=FALSE,results='hide',warning=FALSE, fig.align = 'center', fig.cap = "Pseudo-experimental data for the CellNOptR (Boolean logic) example. Each row corresponds to a different experiment upon pertubation with different stimuli and inhibitors."---- library(MEIGOR) library(CellNOptR) data("CellNOptR_example",package="MEIGOR") cnolist=CNOlist(cnolist_cellnopt) plotCNOlist(cnolist) ## ----CellNOptRExampleFig,include=TRUE,echo=FALSE,results='hide', warning=FALSE, fig.align = 'center', fig.cap = "The expanded model for the CellNOptR (Boolean logic) example. This representation contains all possible logic gates where each binary decision variable corrersponds to an hyperedge/logical disjunction."---- model <- preprocessing(cnolist, model_cellnopt, expansion=TRUE, compression=TRUE, verbose=FALSE) plotModel(model, cnolist) ## ----CellNOptRPrepFigModel, eval=TRUE, pgf=TRUE, echo=TRUE, results='hide'---- get_fobj<- function(cnolist,model){ f<-function(x,model1=model,cnolist1=cnolist){ simlist=prep4sim(model1) score=computeScoreT1(cnolist1, model1, x) return(score) } } fobj=get_fobj(cnolist,model) ## ----CellNOptRPrep3, eval=TRUE, pgf=TRUE, echo=TRUE, results='hide'----------- nvar=16 problem<-list(f=fobj, x_L=rep(0,nvar), x_U=rep(1,nvar)) opts<-list(maxeval=2000, maxtime=30, use_local=1, aggr=0, local_search_type=1, decomp=1, maxdist=0.5) ## ----CellNOptR4, eval=TRUE, pgf=TRUE, echo=TRUE, results='hide'--------------- Results<-MEIGO(problem,opts,"VNS") ## ----CellNOptRExamplePlotOptModel,include=TRUE,echo=FALSE,results='hide', warning=FALSE, fig.align = 'center', fig.cap = "The Boolean logic model obtained after optimization with VNS."---- optModel=cutModel(model,Results$xbest) plotModel(optModel,cnolist)