class_docstr: ParEGO implementation based on https://www.cs.bham.ac.uk/~jdk/UKCI-2015.pdf.
  
  Parameters
  ----------
  scenario : Scenario
  rho : float, defaults to 0.05
      A small positive value.
  seed : int | None, defaults to None
class_docstr_tok: ["ParEGO","implementation","based","on","https",":","\/\/www.cs.bham.ac.uk\/~jdk\/UKCI-2015.pdf",".","Parameters","--","--","--","--","--","scenario",":","Scenario","rho",":","float",",","defaults","to","0.05","A","small","positive","value",".","seed",":","int","|","None",",","defaults","to","None"]
code: def update_on_iteration_start(self) -> None:  # noqa: D102
      self._theta = self._rng.rand(self._n_objectives)
  
      # Normalize so that all theta values sum up to 1
      self._theta = self._theta / (np.sum(self._theta) + 1e-10)
  
file_path: SMAC3/smac/multi_objective/parego.py
imports: from __future__ import annotations
  from typing import Any
  import numpy
  from smac.multi_objective.abstract_multi_objective_algorithm import AbstractMultiObjectiveAlgorithm
  from smac.scenario import Scenario
label_desc: Use image node_id 3 for calling the ParEGO obj's underlying member method code with example usage: obj.update_on_iteration_start() without return types