\name{minlpLBodeSSm}

\alias{minlpLBodeSSm}
%- Also NEED an '\alias' for EACH other topic documented here.

\title{
	Search for the best combination of continuous parameters and logic gates.
}

\description{
	This function uses essR to search for the best set of continuous parameters and model structure. 
	The objective function is the same as the one provided by \code{\link{getLBodeMINLPObjFunction}}.
}

\usage{
	minlpLBodeSSm(cnolist, model, ode_parameters = NULL, int_x0=NULL, indices = NULL, maxeval = Inf,
	maxtime = 100, ndiverse = NULL, dim_refset = NULL, local_solver = NULL, time = 1, 
	verbose = 0, transfer_function = 3, reltol = 1e-04, atol = 0.001, maxStepSize = Inf,
	maxNumSteps = 1e+05, maxErrTestsFails = 50, nan_fac = 1)
}

%- maybe also 'usage' for other objects documented here.
\arguments{
 	\item{cnolist}{
		A list containing the experimental design and data.
	}
 	\item{model}{
		The logic model to be simulated.
	}
	\item{ode_parameters}{
		A list with the ODEs parameter information. Obtained 	with \code{\link{createLBodeContPars}}.
	}
	\item{int_x0}{
		Vector with initial solution for integer parameters.
	}
	\item{indices}{
		Indices to map data in the model. Obtained with indexFinder function from CellNOptR. 
	}
	\item{maxeval}{
		Maximum number of evaluation in the optimization procedure.
	}
	\item{maxtime}{
		Maximum number of evaluation spent in optimization procedure.
	}
	\item{ndiverse}{
		Duration of the optinisation procedure.
	}
	\item{dim_refset}{
		Number of diverse initial solutions.
	}
	\item{local_solver}{
		Local solver to be used in SSm.
	}
	\item{time}{
		An integer with the index of the time point to start the simulation. Default is 1.
	}
	\item{verbose}{
		A logical value that triggers a set of comments.
	}
 	\item{transfer_function}{
		The type of used transfer. Use 1 for no transfer function, 2 for Hill function and
		for normalized Hill function.
	}
	\item{reltol}{
		Relative Tolerance for numerical integration.
	}
	\item{atol}{
		Absolute tolerance for numerical integration.
	}
  	\item{maxStepSize}{
		The maximum step size allowed to ODE solver.
	}
	\item{maxNumSteps}{
		The maximum number of internal steps between two points being sampled before
		the solver fails.
	}
	\item{maxErrTestsFails}{
		Specifies the maximum number of error test failures permitted in attempting
		one step.
	}
  	\item{nan_fac}{
		A penalty for each data point the model is not able to simulate. We recommend higher than
		0 and smaller that 1.
	}
}

\details{
	Check \code{\link{CellNOptR}} for details about the cnolist and the model format.
	For more details in the configuration of the ODE solver check the CVODES manual. 
}

\value{
	\item{LB_n}{
		A numeric value to be used as lower bound for all parameters of type n.
	}
  	\item{LB_k}{
		A numeric value to be used as lower bound for all parameters of type k.
	}
	\item{LB_tau}{
		A numeric value to be used as lower bound for all parameters of type tau.
	}
	\item{UB_n}{
		A numeric value to be used as upper bound for all parameters of type n.
	}
	\item{UB_k}{
		A numeric value to be used as upper bound for all parameters of type k.
	}
	\item{UB_tau}{
		A numeric value to be used as upper bound for all parameters of type tau. 
	}
	\item{default_n}{
		The default parameter to be used for every parameter of type n. 
	}
  	\item{default_k}{
		The default parameter to be used for every parameter of type k. 
	}
  	\item{default_tau}{
		The default parameter to be used for every parameter of type tau. 
	}
	\item{LB_in}{
		An array with the the same length as ode_parameters$parValues with lower bounds
		for each specific parameter. 
	}
	\item{UB_in}{
		An array with the the same length as ode_parameters$parValues with upper bounds
		for each specific parameter.
	}
	\item{opt_n}{
		Add all parameter n to the index of parameters to be fitted.
	}
	\item{opt_k}{
		Add all parameter k to the index of parameters to be fitted.
	}
	\item{opt_tau}{
		Add all parameter tau to the index of parameters to be fitted.
	}
  	\item{random}{
		A logical value that determines that a random solution is for the parameters 
		to be optimised.
	}
	\item{model}{
		The best fitting found model structure.
	}
	\item{smm_results}{
		A list containing the information provided by the nonlinear optimization solver.
	}
}

\author{
	David Henriques, Thomas Cokelaer
}

%% ~Make other sections like Warning with \section{Warning }{....} ~
\seealso{
	\code{\link{CellNOptR}}
	\code{\link{createLBodeContPars}}
	\code{essR}
}

\examples{

\dontrun{
data("ToyCNOlist",package="CNORode");
data("ToyModel",package="CNORode");
data("ToyIndices",package="CNORode");
	
ode_parameters=createLBodeContPars(model,random=TRUE);

#Visualize initial solution
simulatedData=plotLBodeFitness(cnolistCNORodeExample, model,ode_parameters,indices=indices)
ode_parameters=minlpLBodeSSm(cnolistCNORodeExample, model,ode_parameters);

model=ode_parameters$model;

#Visualize fitted solution
simulatedData=plotLBodeFitness(cnolistCNORodeExample, model,indices=indices);
}

}
% Add one or more standard keywords, see file 'KEYWORDS' in the
% R documentation directory.

