Python实现粒子群(PSO)带惩罚函数多目标优化
大佬们帮我看看,怎么结果都一样
import numpy as np
#--------------------------initialization_input--------------------------
Q = 15
H = 20
#--------------------------coefficients of pso--------------------------
dim = 3
wmax = 0.9
wmin = 0.4
c1 = 1.3
c2 = 1.3
itermax = 200
numpop = 20
sigma1 = 100
sigma2 = 10
M = 2
echo = 'on'
lb = [1,0.5,Q/M]
ub = [2,1,Q]
lb_array = np.tile(lb, (numpop, 1))
ub_array = np.tile(ub, (numpop, 1))
r1 = np.random.random((numpop,dim))
r2 = np.random.random((numpop,dim))
# --------------------------initialization--------------------------
t_rand = np.random.random((numpop, dim))
x = np.multiply(t_rand, (ub_array - lb_array)) + lb_array
v = np.zeros([numpop, dim], dtype=float)
vmax = 0.1 * (ub_array - lb_array)
row = np.where(x[...,0]<1.5)
x[row,0] = lb_array[row,0]
x[row,2] = Q
row = np.where(x[:,0]>=1.5)
x[row,0] = ub_array[row,0]
x[row,2] = Q/2
# --------------------------initialization calculation--------------------------
Hi = (-0.01712*x[:,2]**