How to implement theses constraints in the cost function ?

1 次查看(过去 30 天)
I am working on a constrained PSO program (S decision variable) where the constraints are arrays that there elements should be lower or egual to 0.4 :
1) dx = [S(1) - 0.3, diff(S)];
2) ds = [0.3 - S(1),S(1:end-1)-S(2:end)];
abs(dx)<=0.4
abs(ds)<=0.4
in a simpler way,dx and ds should be arrays with elements that are less or egual to 0.4
i tried this : le(abs(dx),0.4)
le(abs(ds),0.4)
but when runing the main pso i dont see constrained results
  2 个评论
Matt J
Matt J 2022-11-16
i tried this
Where? How? pso() doesn't have an input for such constraints. Maybe use ga() or patternsearch(). Also, the constraints are linear, so you should put them in the form A*S<=b.
Matt J
Matt J 2022-11-16
Also, from your expressions we can see that dx=-ds. Therefore, the constraints, abs(dx)<=0.4 and abs(ds)<=0.4 are the same thing.

请先登录,再进行评论。

回答(1 个)

Matt J
Matt J 2022-11-16
编辑:Matt J 2022-11-16
pso() doesn't have an input for such constraints. Maybe use ga() or patternsearch().
Here's how it would look when solved with ga():
lb=-inf(nvars,1);
ub=-lb;
e=0.4*ones(nvars-1,1);
D=diff(eye(nvars));
%constraint matrices
lb(1)=-0.1;
ub(1)=0.7;
A=[D;-D];
b=[e;e];
%run optimization
S = ga(fun,nvars,A,b,[],[],lb,ub)
  12 个评论
Matt J
Matt J 2022-11-17
The objective function came out of your brain. If it's returning the wrong value, I have no way of knowing what it should be returning instead.
Anwar
Anwar 2022-11-17
Here is the original syntax of my function :
I don't know if there's a way out to this last step but this was really helpful,i mean getting steps forward with thoses constraints seting.Thanks a lot Matt J ,I appreciate .

请先登录,再进行评论。

类别

Help CenterFile Exchange 中查找有关 Particle Swarm 的更多信息

产品


版本

R2021a

Community Treasure Hunt

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

Start Hunting!

Translated by