self-directed evolutionary programming