-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathExploitation.py
More file actions
27 lines (21 loc) · 901 Bytes
/
Exploitation.py
File metadata and controls
27 lines (21 loc) · 901 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
import random
import numpy as np
def EvaluateDistance(individual1, individual2):
# vector1 = np.array(individual1['Workload'])
# vector2 = np.array(individual2['Workload'])
# return np.linalg.norm(vector1-vector2)
return (individual1['CycleTime'] - individual2['CycleTime'])/min(individual1['CycleTime'], individual2['CycleTime'])
def ShrinkingEncircling(seq, seq_opt, length):
start = random.randint(0, len(seq)-length)
original = seq[start:start+length]
reordered = [_ for _ in seq_opt if _ in original]
return seq[:start]+reordered+seq[start+length:]
def SpiralUpdating(seq, seq_opt, length):
flag = random.sample(range(len(seq)), length)
flag.sort()
original = []
for _ in flag: original.append(seq[_])
reordered = [_ for _ in seq_opt if _ in original]
result = seq[:]
for _ in flag: result[_] = reordered.pop(0)
return result