Skip to content

Commit 1730aa7

Browse files
authored
Add files via upload
1 parent 60260ac commit 1730aa7

File tree

8 files changed

+52
-32
lines changed

8 files changed

+52
-32
lines changed

FS/de.py

+3-3
Original file line numberDiff line numberDiff line change
@@ -53,10 +53,10 @@ def jfs(xtrain, ytrain, opts):
5353
# Dimension
5454
dim = np.size(xtrain, 1)
5555
if np.size(lb) == 1:
56-
ub = ub * np.ones([1, dim], dtype='int')
57-
lb = lb * np.ones([1, dim], dtype='int')
56+
ub = ub * np.ones([1, dim], dtype='float')
57+
lb = lb * np.ones([1, dim], dtype='float')
5858

59-
# Initialize position & velocity
59+
# Initialize position
6060
X = init_position(lb, ub, N, dim)
6161

6262
# Binary conversion

FS/ga.py

+31-11
Original file line numberDiff line numberDiff line change
@@ -3,18 +3,27 @@
33
from FS.functionHO import Fun
44

55

6-
def init_position(N, dim):
7-
X = np.zeros([N, dim], dtype='int')
6+
def init_position(lb, ub, N, dim):
7+
X = np.zeros([N, dim], dtype='float')
88
for i in range(N):
99
for d in range(dim):
10-
if rand() > 0.5:
11-
X[i,d] = 1
12-
else:
13-
X[i,d] = 0
10+
X[i,d] = lb[0,d] + (ub[0,d] - lb[0,d]) * rand()
1411

1512
return X
1613

1714

15+
def binary_conversion(X, thres, N, dim):
16+
Xbin = np.zeros([N, dim], dtype='int')
17+
for i in range(N):
18+
for d in range(dim):
19+
if X[i,d] > thres:
20+
Xbin[i,d] = 1
21+
else:
22+
Xbin[i,d] = 0
23+
24+
return Xbin
25+
26+
1827
def roulette_wheel(prob):
1928
num = len(prob)
2029
C = np.cumsum(prob)
@@ -29,6 +38,9 @@ def roulette_wheel(prob):
2938

3039
def jfs(xtrain, ytrain, opts):
3140
# Parameters
41+
ub = 1
42+
lb = 0
43+
thres = 0.5
3244
CR = 0.8 # crossover rate
3345
MR = 0.01 # mutation rate
3446

@@ -40,13 +52,20 @@ def jfs(xtrain, ytrain, opts):
4052
MR = opts['MR']
4153

4254
# Dimension
43-
dim = np.size(xtrain, 1)
44-
# Initialize position & velocity
45-
X = init_position(N, dim)
55+
dim = np.size(xtrain, 1)
56+
if np.size(lb) == 1:
57+
ub = ub * np.ones([1, dim], dtype='float')
58+
lb = lb * np.ones([1, dim], dtype='float')
59+
60+
# Initialize position
61+
X = init_position(lb, ub, N, dim)
62+
63+
# Binary conversion
64+
X = binary_conversion(X, thres, N, dim)
4665

4766
# Fitness at first iteration
4867
fit = np.zeros([N, 1], dtype='float')
49-
Xgb = np.zeros([1, dim], dtype='float')
68+
Xgb = np.zeros([1, dim], dtype='int')
5069
fitG = float('inf')
5170

5271
for i in range(N):
@@ -125,7 +144,8 @@ def jfs(xtrain, ytrain, opts):
125144

126145

127146
# Best feature subset
128-
Gbin = Xgb.reshape(dim)
147+
Gbin = Xgb[0,:]
148+
Gbin = Gbin.reshape(dim)
129149
pos = np.asarray(range(0, dim))
130150
sel_index = pos[Gbin == 1]
131151
num_feat = len(sel_index)

FS/gwo.py

+3-3
Original file line numberDiff line numberDiff line change
@@ -47,10 +47,10 @@ def jfs(xtrain, ytrain, opts):
4747
# Dimension
4848
dim = np.size(xtrain, 1)
4949
if np.size(lb) == 1:
50-
ub = ub * np.ones([1, dim], dtype='int')
51-
lb = lb * np.ones([1, dim], dtype='int')
50+
ub = ub * np.ones([1, dim], dtype='float')
51+
lb = lb * np.ones([1, dim], dtype='float')
5252

53-
# Initialize position & velocity
53+
# Initialize position
5454
X = init_position(lb, ub, N, dim)
5555

5656
# Binary conversion

FS/hho.py

+3-3
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ def jfs(xtrain, ytrain, opts):
5656
ub = 1
5757
lb = 0
5858
thres = 0.5
59-
beta = 1.5
59+
beta = 1.5 # levy component
6060

6161
N = opts['N']
6262
max_iter = opts['T']
@@ -66,8 +66,8 @@ def jfs(xtrain, ytrain, opts):
6666
# Dimension
6767
dim = np.size(xtrain, 1)
6868
if np.size(lb) == 1:
69-
ub = ub * np.ones([1, dim], dtype='int')
70-
lb = lb * np.ones([1, dim], dtype='int')
69+
ub = ub * np.ones([1, dim], dtype='float')
70+
lb = lb * np.ones([1, dim], dtype='float')
7171

7272
# Initialize position
7373
X = init_position(lb, ub, N, dim)

FS/pso.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -70,8 +70,8 @@ def jfs(xtrain, ytrain, opts):
7070
# Dimension
7171
dim = np.size(xtrain, 1)
7272
if np.size(lb) == 1:
73-
ub = ub * np.ones([1, dim], dtype='int')
74-
lb = lb * np.ones([1, dim], dtype='int')
73+
ub = ub * np.ones([1, dim], dtype='float')
74+
lb = lb * np.ones([1, dim], dtype='float')
7575

7676
# Initialize position & velocity
7777
X = init_position(lb, ub, N, dim)

FS/sca.py

+3-3
Original file line numberDiff line numberDiff line change
@@ -50,10 +50,10 @@ def jfs(xtrain, ytrain, opts):
5050
# Dimension
5151
dim = np.size(xtrain, 1)
5252
if np.size(lb) == 1:
53-
ub = ub * np.ones([1, dim], dtype='int')
54-
lb = lb * np.ones([1, dim], dtype='int')
53+
ub = ub * np.ones([1, dim], dtype='float')
54+
lb = lb * np.ones([1, dim], dtype='float')
5555

56-
# Initialize position & velocity
56+
# Initialize position
5757
X = init_position(lb, ub, N, dim)
5858

5959
# Pre

FS/ssa.py

+3-3
Original file line numberDiff line numberDiff line change
@@ -47,10 +47,10 @@ def jfs(xtrain, ytrain, opts):
4747
# Dimension
4848
dim = np.size(xtrain, 1)
4949
if np.size(lb) == 1:
50-
ub = ub * np.ones([1, dim], dtype='int')
51-
lb = lb * np.ones([1, dim], dtype='int')
50+
ub = ub * np.ones([1, dim], dtype='float')
51+
lb = lb * np.ones([1, dim], dtype='float')
5252

53-
# Initialize position & velocity
53+
# Initialize position
5454
X = init_position(lb, ub, N, dim)
5555

5656
# Pre

FS/woa.py

+4-4
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ def jfs(xtrain, ytrain, opts):
4040
ub = 1
4141
lb = 0
4242
thres = 0.5
43-
b = 1
43+
b = 1 # constant
4444

4545
N = opts['N']
4646
max_iter = opts['T']
@@ -50,10 +50,10 @@ def jfs(xtrain, ytrain, opts):
5050
# Dimension
5151
dim = np.size(xtrain, 1)
5252
if np.size(lb) == 1:
53-
ub = ub * np.ones([1, dim], dtype='int')
54-
lb = lb * np.ones([1, dim], dtype='int')
53+
ub = ub * np.ones([1, dim], dtype='float')
54+
lb = lb * np.ones([1, dim], dtype='float')
5555

56-
# Initialize position & velocity
56+
# Initialize position
5757
X = init_position(lb, ub, N, dim)
5858

5959
# Binary conversion

0 commit comments

Comments
 (0)