Evolutionary algorithms for the design of orthogonal latin squares based on cellular automata