Source: https://wp.unil.ch/risk/files/2015/12/10.-Algorithmes-doptimisation.pdf