1 function [opt_data,model] = simplex_nonlinear(model,varargin)
2 %
function opt_data = simplex_nonlinear(model,varargin)
4 % optimization
function optimizing the model
using the matlab optimization
5 % technique
"fminsearch" (which uses a nonlinear simplex algorithm).
7 % varargin: can be model_data or redeuced_data
10 % Generated fields of opt_data:
11 % optimal_params: solution to the parameter optimization problem
12 % nr_fct_calls: number of functional evaluations
13 % output: optimal output
15 % Markus Dihlmann 11.12.12
20 init_params = model.optimization.init_params;
21 tolerance = model.optimization.tol;
22 if strcmp(model.optimization.min_or_max,
'max')
28 os = optimset('TolFun',tolerance);
30 if isfield(varargin{1},
'grid')
31 %--> detailed simulations
32 model_data = varargin{1};
34 [mu_opt,f_end,exitflag,output_data] =...
35 fminsearch(@(mu)(min_or_max*model.optimization.objective_function(model, model_data,mu)),...
40 %--> reduced simulations
41 reduced_data = varargin{1};
43 [mu_opt,f_end,exitflag,output_data] =...
44 fminsearch(@(mu)(min_or_max*model.optimization.objective_function(model, reduced_data,mu)),...
49 model = setfield_in_model_and_base_model(model,
'compute_derivative_info',1);
51 [grad_f_x, Delta_grad] = model.optimization.get_Jacobian(model,reduced_data);
55 g_H = model.gamma_H(model);
56 L_H = model.L_H(model);
57 break_value = 2*(g_H)^2*(L_H)*(norm(grad_f_x)+norm(Delta_grad(:,end)));
59 Delta_mu = 2*g_H*norm(norm(grad_f_x)+norm(Delta_grad(:,end)));
61 disp(
'No error estimator available. Missing neccessary requirements.')
65 opt_data.Delta_mu = Delta_mu;
66 opt_data.break_value = break_value;
70 opt_data.optimal_params = mu_opt;
71 opt_data.nr_fct_calls = output_data.funcCount;
72 opt_data.nr_iterations = output_data.iterations;
73 opt_data.exit_flag = exitflag;
74 opt_data.output = f_end;
function model = set_mu_to_optimize(model, x, varargin)
Funcion sets the parameters that are to be optimized to the values given by x Also usable for optimiz...