use of org.vcell.optimization.DefaultOptSolverCallbacks in project vcell by virtualcell.
the class AugmentedObjectiveFunctionTest method getExample2.
/**
* Insert the method's description here. // Root-finding example
* Creation date: (5/3/2002 2:49:06 PM)
* @return opt.AugmentedObjectiveFunction
*/
public static AugmentedObjectiveFunction getExample2() {
try {
Expression scalarFn_exp = new Expression("1");
Expression[] eqConstraints_exps = { new Expression("sin(x1+x2)-exp(x1-x2)"), new Expression("cos(x1+x2)-x1*x1*x2*x2") };
Expression[] ineqConstraints_exps = {};
String[] ids = { "x1", "x2" };
ScalarFunction scalarFn = new DynamicScalarFunction(scalarFn_exp, ids);
VectorFunction eqConstraints = new DynamicVectorFunction(eqConstraints_exps, ids);
VectorFunction ineqConstraints = new DynamicVectorFunction(ineqConstraints_exps, ids);
AugmentedObjectiveFunction aof = new AugmentedObjectiveFunction(scalarFn, eqConstraints, ineqConstraints, 2.0, 0.1, new DefaultOptSolverCallbacks());
return aof;
} catch (ExpressionException e) {
e.printStackTrace();
throw new RuntimeException(e.getMessage());
}
}
use of org.vcell.optimization.DefaultOptSolverCallbacks in project vcell by virtualcell.
the class CurveFitting method solve.
public static OptimizationResultSet solve(ExplicitFitObjectiveFunction.ExpressionDataPair[] expDataPairs, Parameter[] parameters, double[] time, double[][] data, String[] colNames, Weights weights) throws ExpressionException, OptimizationException, IOException {
// choose optimization solver, currently we have Powell
PowellOptimizationSolver optService = new PowellOptimizationSolver();
OptimizationSpec optSpec = new OptimizationSpec();
// create simple reference data, columns: t + dataColumns
double[][] realData = new double[1 + data.length][time.length];
for (// add time column
int i = 0; // add time column
i < time.length; // add time column
i++) {
realData[0][i] = time[i];
}
for (// add each data column to realData
int i = 0; // add each data column to realData
i < data.length; // add each data column to realData
i++) {
for (int j = 0; j < time.length; j++) {
realData[1 + i][j] = data[i][j];
}
}
SimpleReferenceData refData = new SimpleReferenceData(colNames, weights, realData);
// send to optimization service
optSpec.setObjectiveFunction(new ExplicitFitObjectiveFunction(expDataPairs, refData));
double[] parameterValues = new double[parameters.length];
for (int i = 0; i < parameters.length; i++) {
parameterValues[i] = parameters[i].getInitialGuess();
System.out.println("initial " + parameters[i].getName() + " = " + parameterValues[i] + ";\tLB = " + parameters[i].getLowerBound() + ";\tUB = " + parameters[i].getUpperBound());
}
// get the initial guess to send it to the f() function. ....
for (int i = 0; i < parameters.length; i++) {
optSpec.addParameter(parameters[i]);
}
// Parameters in OptimizationSolverSpec are solver type and objective function change tolerance.
OptimizationSolverSpec optSolverSpec = new OptimizationSolverSpec(OptimizationSolverSpec.SOLVERTYPE_POWELL, 0.000001);
OptSolverCallbacks optSolverCallbacks = new DefaultOptSolverCallbacks();
OptimizationResultSet optResultSet = null;
optResultSet = optService.solve(optSpec, optSolverSpec, optSolverCallbacks);
return optResultSet;
}
use of org.vcell.optimization.DefaultOptSolverCallbacks in project vcell by virtualcell.
the class CurveFitting method solve.
public static OptimizationResultSet solve(ExplicitFitObjectiveFunction.ExpressionDataPair[] expDataPairs, Parameter[] parameters, double[] time, double[][] data, String[] colNames, Weights weights) throws ExpressionException, OptimizationException, IOException {
// choose optimization solver, currently we have Powell and CFSQP
PowellOptimizationSolver optService = new PowellOptimizationSolver();
OptimizationSpec optSpec = new OptimizationSpec();
// create simple reference data, columns: t + dataColumns
double[][] realData = new double[1 + data.length][time.length];
for (// add time column
int i = 0; // add time column
i < time.length; // add time column
i++) {
realData[0][i] = time[i];
}
for (// add each data column to realData
int i = 0; // add each data column to realData
i < data.length; // add each data column to realData
i++) {
for (int j = 0; j < time.length; j++) {
realData[1 + i][j] = data[i][j];
}
}
SimpleReferenceData refData = new SimpleReferenceData(colNames, weights, realData);
// send to optimization service
optSpec.setObjectiveFunction(new ExplicitFitObjectiveFunction(expDataPairs, refData));
double[] parameterValues = new double[parameters.length];
for (int i = 0; i < parameters.length; i++) {
parameterValues[i] = parameters[i].getInitialGuess();
System.out.println("initial " + parameters[i].getName() + " = " + parameterValues[i] + ";\tLB = " + parameters[i].getLowerBound() + ";\tUB = " + parameters[i].getUpperBound());
}
// get the initial guess to send it to the f() function. ....
for (int i = 0; i < parameters.length; i++) {
optSpec.addParameter(parameters[i]);
}
// Parameters in OptimizationSolverSpec are solver type and objective function change tolerance.
OptimizationSolverSpec optSolverSpec = new OptimizationSolverSpec(OptimizationSolverSpec.SOLVERTYPE_POWELL, 0.000001);
OptSolverCallbacks optSolverCallbacks = new DefaultOptSolverCallbacks();
OptimizationResultSet optResultSet = null;
optResultSet = optService.solve(optSpec, optSolverSpec, optSolverCallbacks);
return optResultSet;
}
use of org.vcell.optimization.DefaultOptSolverCallbacks in project vcell by virtualcell.
the class CurveFitting method solveSpatial.
public static OptimizationResultSet solveSpatial(Simulation sim, Parameter[] parameters, SpatialReferenceData refData, File dataDir, FieldDataIdentifierSpec[] fieldDataIDSs) throws ExpressionException, OptimizationException, IOException {
// choose optimization solver, currently we have Powell and CFSQP
PowellOptimizationSolver optService = new PowellOptimizationSolver();
OptimizationSpec optSpec = new OptimizationSpec();
// send to optimization service
optSpec.setObjectiveFunction(new PdeObjectiveFunction(sim.getMathDescription(), refData, dataDir, fieldDataIDSs));
double[] parameterValues = new double[parameters.length];
for (int i = 0; i < parameters.length; i++) {
parameterValues[i] = parameters[i].getInitialGuess();
System.out.println("initial " + parameters[i].getName() + " = " + parameterValues[i] + ";\tLB = " + parameters[i].getLowerBound() + ";\tUB = " + parameters[i].getUpperBound());
}
// get the initial guess to send it to the f() function. ....
for (int i = 0; i < parameters.length; i++) {
optSpec.addParameter(parameters[i]);
}
// Parameters in OptimizationSolverSpec are solver type and objective function change tolerance.
OptimizationSolverSpec optSolverSpec = new OptimizationSolverSpec(OptimizationSolverSpec.SOLVERTYPE_POWELL, 0.000001);
OptSolverCallbacks optSolverCallbacks = new DefaultOptSolverCallbacks();
OptimizationResultSet optResultSet = null;
optResultSet = optService.solve(optSpec, optSolverSpec, optSolverCallbacks);
OptSolverResultSet optSolverResultSet = optResultSet.getOptSolverResultSet();
String[] paramNames = optSolverResultSet.getParameterNames();
double[] paramValues = optSolverResultSet.getBestEstimates();
for (int i = 0; i < paramNames.length; i++) {
System.out.println("finally: " + paramNames[i] + " = " + paramValues[i]);
}
return optResultSet;
}
Aggregations