Convert python code to matlab code

I need to convert following python codes to Matlab. Can anyone help me to convert following codes.
for i in range(0,PopSize):
#pos[i,:]=checkBounds(pos[i,:],lb,ub)
for j in range(dim):
pos[i, j] = numpy.clip(pos[i,j], lb[j], ub[j])
#Calculate objective function for each particle
fitness=objf(pos[i,:])

Answers (1)

Something like this
pos(pos < lb) = lb;
pos(pos > ub) = ub;
fitness = zeros(1,PopSize);
for i=1:PopSize
fitness(i)=objf(pos(i,:))
end
Also, see this basic course to get started in MATLAB: https://www.mathworks.com/learn/tutorials/matlab-onramp.html

3 Comments

Hi Ameer,
It show following error, when i implement in matlab
Unable to perform assignment because the left and right sides have a different number of elements.
Can you share your objective function objf and the matrix pos?
Usman Taya
Usman Taya on 6 Apr 2020
Edited: Usman Taya on 6 Apr 2020
It is full code.
def PSO(objf,lb,ub,dim,PopSize,iters):
# PSO parameters
dim=2
iters=200
Vmax=6
PopSize=50 #population size
wMax=0.9
wMin=0.2
c1=2
c2=2
lb=[-10 -10]
ub=[10 10]
s=solution()
vel=numpy.zeros((PopSize,dim))
pBestScore=numpy.zeros(PopSize)
pBestScore.fill(float("inf"))
pBest=numpy.zeros((PopSize,dim))
gBest=numpy.zeros(dim)
gBestScore=float("inf")
pos = numpy.zeros((PopSize, dim))
for i in range(dim):
pos[:, i] = numpy.random.uniform(0,1, PopSize) * (ub[i] - lb[i]) + lb[i]
convergence_curve=numpy.zeros(iters)
############################################
print("PSO is optimizing \""+objf.__name__+"\"")
timerStart=time.time()
s.startTime=time.strftime("%Y-%m-%d-%H-%M-%S")
for l in range(0,iters):
for i in range(0,PopSize):
for j in range(dim):
pos[i, j] = numpy.clip(pos[i,j], lb[j], ub[j])
#Calculate objective function for each particle
fitness=objf(pos[i,:])
if(pBestScore[i]>fitness):
pBestScore[i]=fitness
pBest[i,:]=pos[i,:].copy()
if(gBestScore>fitness):
gBestScore=fitness
gBest=pos[i,:].copy()
#Update the W of PSO
w=wMax-l*((wMax-wMin)/iters);

Sign in to comment.

Asked:

on 5 Apr 2020

Edited:

on 6 Apr 2020

Community Treasure Hunt

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

Start Hunting!