Borrar filtros
Borrar filtros

Genetic Algorithm for points External To a Specific Volume

1 visualización (últimos 30 días)
ADSW121365
ADSW121365 el 10 de Ag. de 2022
Comentada: ADSW121365 el 11 de Ag. de 2022
I'm using the GA to select measurement points in a three-dimensional physics problem.
I can tell GA to select only N_points inside some specified plane above my problem simply as:
X.min = -10; X.max = 10; Y.min = -10; Y.max = 10; Z.min = 0; Z.max = 2;
lb = repmat([X.min Y.min Z.min],[1 N_points]);
ub = repmat([X.max Y.max Z.max],[1 N_points]); %Lower/Upper Boundaries [X,Y,Z]
Is it possible to instead set up constraints so points are only selected outside of some cube? For clarity, a physical example would be there exists volume which a measurement device cannot enter, so the problem searches for points external to that region.
Ideally, I would select points only within a hollow-cube: External to a specific volume, but extending to reasonable limits - thereby minimising the possible search space.

Respuesta aceptada

Matt J
Matt J el 10 de Ag. de 2022
Editada: Matt J el 10 de Ag. de 2022
You would have to use a non-linear constraint function for that:
function [cineq,ceq]=nonlcon(x)
x=reshape(x,3,[]); %reshape to 3xN_points
cineq(1,:)=vecnorm(x./[Xmax;Ymax;Zmax],inf)-1; %inside box of dimensions Xmax x Ymax x Zmax
cineq(2,:)=1-vecnorm(x./[Xmin;Ymin;Zmin],inf); %outside box of dimensions Xmin x Ymin x Zmin
ceq=[];
end
  4 comentarios
Matt J
Matt J el 11 de Ag. de 2022
Editada: Matt J el 11 de Ag. de 2022
That would be,
ub=ones(3,N_points); lb=-ub; %outside box
x=ga(fun,numel(ub),[],[],[],[],lb,ub,@nonlcon);
function [cineq,ceq]=nonlcon(x)
x=reshape(x,3,[]); %reshape to 3xN_points
cineq=1-vecnorm(x./0.5,inf); %inner box
ceq=[];
end
ADSW121365
ADSW121365 el 11 de Ag. de 2022
Perfect I understand now, thankyou!

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Problem-Based Optimization Setup en Help Center y File Exchange.

Productos


Versión

R2021b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by