1. A method comprising: storing, in a data repository, a plurality of rules that govern content generation; generating, by at least one microprocessor, two content configurations comprising a first content configuration and a second content configuration, wherein each content configuration comprises a plurality of content elements, wherein each content configuration further comprises one or more relationships between the plurality of content elements, and wherein the one or more relationships are in accordance with at least one of the plurality of rules, the at least one of the plurality of rules defining permissible relationships between the plurality of content elements of the respective content configuration; generating, by the at least one microprocessor, a first piece of content by arranging the plurality of content elements of the first content configuration in accordance with the one or more relationships of the first content configuration; generating, by the at least one microprocessor, a second piece of content by arranging the plurality of content elements of the second content configuration in accordance with the one or more relationships of the second content configuration; obtaining, based on an experiment conducted when the first and second pieces of content are displayed, effectiveness data of the first and second pieces of content in reaching an optimization objective; determining, based on the effectiveness data, a relative effectiveness of the two content configurations; and amending, by the at least one microprocessor, based on the relative effectiveness of the two content configurations, the plurality of rules stored in the data repository by at least one of adding a new rule to the plurality of rules or modifying an existing rule in the plurality of rules.