Raiff1982 commited on
Commit
983ec60
·
verified ·
1 Parent(s): 986f878

Update ethics.py

Browse files
Files changed (1) hide show
  1. ethics.py +6 -6
ethics.py CHANGED
@@ -25,25 +25,25 @@ class QuantumInspiredMultiObjectiveOptimizer:
25
  self.population = [self._random_solution() for _ in range(population_size)]
26
  self.pareto_front = []
27
 
28
- def _random_solution(self) -> List[float]:
29
  return [random.uniform(-10, 10) for _ in range(self.dimension)]
30
 
31
- def _tunnel(self, solution: List[float]) -> List[float]:
32
  return [x + np.random.normal(0, 1) * random.choice([-1, 1])
33
  if random.random() < self.tunneling_prob else x
34
  for x in solution]
35
 
36
- def _entangle(self, solution1: List[float], solution2: List[float]) -> List[float]:
37
  return [(1 - self.entanglement_factor) * x + self.entanglement_factor * y
38
  for x, y in zip(solution1, solution2)]
39
 
40
- def _evaluate(self, solution: List[float]) -> List[float]:
41
  return [fn(solution) for fn in self.objective_fns]
42
 
43
- def _dominates(self, obj1: List[float], obj2: List[float]) -> bool:
44
  return all(o1 <= o2 for o1, o2 in zip(obj1, obj2)) and any(o1 < o2 for o1, o2 in zip(obj1, obj2))
45
 
46
- def _pareto_selection(self, scored_population: List[Tuple[List[float], List[float]]]) -> List[Tuple[List[float], List[float]]]:
47
  pareto = []
48
  for candidate in scored_population:
49
  if not any(self._dominates(other[1], candidate[1]) for other in scored_population if other != candidate):
 
25
  self.population = [self._random_solution() for _ in range(population_size)]
26
  self.pareto_front = []
27
 
28
+ def random_solution(self) -> List[float]:
29
  return [random.uniform(-10, 10) for _ in range(self.dimension)]
30
 
31
+ def tunnel(self, solution: List[float]) -> List[float]:
32
  return [x + np.random.normal(0, 1) * random.choice([-1, 1])
33
  if random.random() < self.tunneling_prob else x
34
  for x in solution]
35
 
36
+ def entangle(self, solution1: List[float], solution2: List[float]) -> List[float]:
37
  return [(1 - self.entanglement_factor) * x + self.entanglement_factor * y
38
  for x, y in zip(solution1, solution2)]
39
 
40
+ def evaluate(self, solution: List[float]) -> List[float]:
41
  return [fn(solution) for fn in self.objective_fns]
42
 
43
+ def dominates(self, obj1: List[float], obj2: List[float]) -> bool:
44
  return all(o1 <= o2 for o1, o2 in zip(obj1, obj2)) and any(o1 < o2 for o1, o2 in zip(obj1, obj2))
45
 
46
+ def pareto_selection(self, scored_population: List[Tuple[List[float], List[float]]]) -> List[Tuple[List[float], List[float]]]:
47
  pareto = []
48
  for candidate in scored_population:
49
  if not any(self._dominates(other[1], candidate[1]) for other in scored_population if other != candidate):