def _advance_pattern_generators(self,p):
valid_generators = []<EOL>for g in p.generators:<EOL><INDENT>for trial in range(self.max_trials):<EOL><INDENT>if np.alltrue([self.__distance_valid(g,v,p) for v in valid_generators]):<EOL><INDENT>valid_generators.append(g)<EOL>break<EOL><DEDENT>g.force_new_dynamic_value('<STR_LIT:x>')<EOL>g.force_new_dynamic_value('<STR_LIT:y>')<EOL><DEDENT>else:<EOL><INDENT>self.warning("<STR_LIT>" %<EOL>g.name)<EOL><DEDENT><DEDENT>return valid_generators<EOL>
Advance the parameters for each generator for this
presentation.

Picks a position for each generator that is accepted by
__distance_valid for all combinations.  Returns a new list of
the generators, with some potentially omitted due to failure
to meet the constraints.