In this paper, we discuss a self-adjusting and self-improving combinatorial optimization algorithm. Variations of this algorithm have been successfully applied in recent research in Design Theory. The approach is simple but general and can be applied in any instance of a combinatorial optimization problem.