Lo más obvio es resolver primero todo
$$Re(a_n \exp(i\phi)) = 0$$
para dividir el círculo en $2n$ intervalos por $\phi_n$ (suponiendo que todos los $a_n$ tienen argumentos diferentes), en cada intervalo los signos $s_n \in \{-1, 1\}$ de $Re(...)$ será constante. Entonces
$$f(\phi) = \sum_n |Re(a_n \exp(i\phi))|$$ $$f(\phi) = \sum_n s_n Re(a_n \exp(i\phi))$$ $$f(\phi) = \sum_n Re(s_n a_n \exp(i\phi))$$ $$f(\phi) = Re(\sum_n s_n a_n \exp(i\phi))$$ $$f(\phi) = Re((\sum_n s_n a_n) \exp(i\phi))$$
Maximizar estos en cada intervalo de $\phi$ y luego sólo hay que comparar (para todas las combinaciones de signos).
Alternativamente, deja que $a_n = A_n \exp(-i\theta_n)$ entonces
$$f(\phi) = \sum_n A_n |Re(\exp(i(\phi-\theta_n)))|$$
$$f(\phi) = \sum_n A_n |(\cos(\phi-\theta_n)|$$
$$f(\phi) = \sum_n A_n |\cos(\phi)\cos(\theta_n) + \sin(\phi)\sin(\theta_n)|$$
$$f(\phi) = \cos(\phi) \sum_n s_n A_n \cos(\theta_n) + \sin(\phi) \sum_n s_n A_n \sin(\theta_n))$$
y aplicar el mismo método.