The details are on page 3 of the paper Algorithms, games, and evolution by Erick Chastain, Adi Livnat, Christos Papadimitriou, and Umesh Vazirani. They explain how the multiplicative weights update rule $x_i^{t+1}(j) = \frac{x_i^t(j)}{Z^t} (1 + \epsilon u_i^t(j))$ can be recovered by imagining that we want to design an update rule that maximizes the sumsome convex combination of cumulative utility (expected) and entropy for each time $t$:
$$ \sum_j x_i^t(j) \sum_{t'=1}^t u_i^{t'}(j) - \frac{1}{\epsilon} \sum_j x_i^t(j) \ln x_i^t(j). $$
More details can be found in the Supporting Information text that comes with the paper.