UPDATING Upper and Lower Bounds in MultiStart Optimization
Show older comments
Hi there,
I am performing a MultiStart Global Optimization process using 'fmincon' as a the solver and a CustomStartPoint set consisting of an array of starting points. The Objective is multi-dimensional with 11 design variables.
Well the code works fine. However, I need a small change to be incorporated in the Problem Structure. As of now, the LOWER and UPPER BOUNDS in the MultiStart problem structure are FIXED.
Now, I have another function that generates a NEW SET of Lower and Upper bounds in the immediate vicinity of the CURRENT Starting Point. So the bounds actually change with new Starting Points. What I want to do is to UPDATE the bounds as the MultiStart algorithm progresses and tests new starting points.
I tried passing a function handle in place of 'lb_0' and 'ub_0', but this returned an error.
Is there anyway to UPDATE the BOUNDS with changing Starting Points?
Any help will be greatly appreciated.
Here is the code:
function [xmin, Japp_min]=Multi_Start_opt(X,J2,B2,lb_0,ub_0,results_array)
a=size(results_array); %results_array is an input(argument) %array consisting some %data.
a=a(1);
i=1:a;
b=J2(i)<2; %_Scanning for all values of J2(also input argument) less than 2
pnts=X(b,:); %Taking corresponding values of 'X'(input) that satisfy above %condition.
%***********Creating Custom Start Points Set***************
tpoints=CustomStartPointSet(pnts);
[minJ2, ind]=min(J2); %Taking minimum of J2
x0_2=[X(ind,1:5)';X(ind,6:10)';X(ind,end)]; %Starting Point for 'fmincon'
%********LOWER & UPPER BOUNDS FUNCTION HANDLES**********
fl=@(x)space_lim3_l(x); % **Function handle for LOWER BOUND
fu=@(x)space_lim3_u(x); % **Function handle for UPPER BOUND*
%***********Creating Problem Structure***************
problem = createOptimProblem('fmincon','x0',x0_2,'objective',@(x)rsm_opt3(B2, x ),'lb',lb_0,'ub',ub_0,'nonlcon',@(x)NonlinCon0_3(B2,x),'options',opts);
% 'rsm_opt3' and 'NonlinCon0_3' are Objective and Constraint functions %respectively. 'lb_0' and 'ub_0' are FIXED Lower and %Upper Bounds.
ms=MultiStart;
[xmin, Japp_min,exit_flag,output,Solutions]=run(ms,problem,tpoints);
Thanks in advance, Best regards, Taha Khot
Accepted Answer
More Answers (0)
Categories
Find more on Solver Outputs and Iterative Display in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!