UPDATING Upper and Lower Bounds in MultiStart Optimization
显示 更早的评论
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
采纳的回答
更多回答(0 个)
类别
在 帮助中心 和 File Exchange 中查找有关 Solver Outputs and Iterative Display 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!