%% spMODEparam % Generates the required parameters to run the spMODE optimization % algorithm. %% %% Beta version % Copyright 2006 - 2012 - CPOH % % Predictive Control and Heuristic Optimization Research Group % http://cpoh.upv.es % % ai2 Institute % http://www.ai2.upv.es % % Universitat Politčcnica de Valčncia - Spain. % http://www.upv.es % %% %% Author % Gilberto Reynoso-Meza % gilreyme@upv.es % http://cpoh.upv.es/en/gilberto-reynoso-meza.html % http://www.mathworks.es/matlabcentral/fileexchange/authors/289050 %% %% For new releases and bug fixing of this Tool Set please visit: % 1) http://cpoh.upv.es/en/research/software.html % 2) Matlab Central File Exchange %% %% Overall Description % This code implements a version of the multi-objective differential % evolution algorithm with spherical pruning described in: % % Gilberto Reynoso-Meza, Javier Sanchis, Xavier Blasco, Miguel Martínez. % Design of Continuous Controllers Using a Multiobjective Differential % Evolution Algorithm with Spherical Pruning. Applications of Evolutionary % Computation. LNCS Volume 6024, 2010, pp 532-541. % %% %% Variables regarding the multi-objective problem spMODEDat.NOBJ = 6; % Number of objectives spMODEDat.NVAR = 3; % Number of decision variables spMODEDat.mop =... str2func('CostFunction_Prom_RMS_2n'); % Cost Function spMODEDat.CostProblem = ''; % Problem Instance spMODEDat.FieldD = [0.01 5; 0.0058 0.0087; 0.0058 0.035]; % Bounds [p; dp; mu] spMODEDat.Initial = spMODEDat.FieldD;% Initialization bounds % %% %% Variables regarding the optimization algorithm (Differential Evolution) spMODEDat.Xpop = 5*spMODEDat.NVAR; % Population size spMODEDat.SubXpop= 2*spMODEDat.NVAR; % SubPopulation size spMODEDat.ScalingFactor = 0.5; % Scaling factor spMODEDat.CRrate= 0.5; % Croosover Probability % %% %% Variables regarding spreading (spherical pruning) spMODEDat.Strategy='SphP'; % 'Push' for a basic Dominance-based % selection; 'SphP' for the spherical % pruning; spMODEDat.Alphas=10; % Number of Arcs (Strategy='SphP'). spMODEDat.Norma='manhattan'; % Norm to be used in Strategy='SphP'; % It could be 'eucliden', 'manhattan', % 'infinite'. spMODEDat.StopSize=15000; % Maximum Pareto optimal solutions % required. % %% %% Variables regarding convergence improving (elitism) spMODEDat.CarElite = ... % Solutions from the Approximated spMODEDat.SubXpop/2 - ... % Pareto front in a generation spMODEDat.NOBJ; % to be merged with the population % in the evolution process. % %% %% Variables regarding basic pertinency (Bounds on objectives) % spMODEDat.Pertinency=[]; % Bounds on objectives; implemented % in the CostFunction. A row for each % objective, minimum and maximum % values desired. If empty, the % Pareto front approximated will be % unbounded. Please, refer to: % G. Reynoso-Meza, J. Sanchis, X. Blasco, J.M. Herrero. Multiobjective % evolutionary algorithms for multivariable PI controller design. Expert % Systems with Applications Volume 39, Issue 9, July 2012, Pages 7895–7907. % %% %% Regarding Constraint Handling (different for objectives bound) % % Constraints could be defined as additional objectives. For an example % please refer to: % % G. Reynoso-Meza, X. Blasco, J. Sanchis, M. Martínez. Multiobjective % optimization algorithm for solving constrained single objective problems. % Evolutionary Computation (CEC), 2010 IEEE Congress on. 18-23 July 2010 % % In such case, we encourage to define a pertinency vector (above). % %% %% Execution Variables spMODEDat.MAXGEN =1e4; % Generation bound spMODEDat.MAXFUNEVALS = 2e3; % Function evaluations bound spMODEDat.PobInitial=[]; % Initial population (if any) spMODEDat.SaveResults='yes'; % Write 'yes' if you want to % save your results after the % optimization process; % otherwise, write 'no'; spMODEDat.Plotter='no'; % 'yes' if you want to see some % a graph at each generation. spMODEDat.SeeProgress='no'; % 'yes' if you want to see some % information at each generation. % %% %% Initialization (don't modify) spMODEDat.CounterGEN=0; % Counter for generations. spMODEDat.CounterFES=0; % Counter for function evaluations. % %% %% Put here the variables required by your code (if any). % Load experimental data load Exp6_GFP_data.mat OD = OD(37:end,:); %FOD = FOD; MOL = MOL(37:end,:); Copies = size(OD,2)/(spMODEDat.NOBJ/2); % Number of copies per experiment %% Choose data for identification and validation %See the number in copies and choose Exp_ID = 1:5; % experiments columns will be use for identification Exp_VAL = 6:8; % experiments columns will be use for validation %% % We take time from the experimental data spMODEDat.DataTime = time(37:end); % We choose identification and validation data indexes = []; for i=Exp_ID(1):Exp_ID(end) indexes = [indexes ((1:Copies:size(OD,2)) + i-1)]; end indexes_ID = sort(indexes); indexes = []; for i=Exp_VAL(1):Exp_VAL(end) indexes = [indexes ((1:Copies:size(OD,2)) + i-1)]; end indexes_VAL = sort(indexes); %we only take the pulse region spMODEDat.DataOD = OD(:, indexes_ID); spMODEDat.DataXFP_per_cell = MOL(:, indexes_ID); spMODEDat.DataOD_VAL = OD(:, indexes_VAL); spMODEDat.DataXFP_per_cell_VAL = MOL(:, indexes_VAL); %% Release and bug report: % % November 2012: Initial release