Elion provides a framework for a flexible reward function based on a combination of calculated properties. A reward can be conferred for each property according to property-specific thresholds, which are combined to build the final reward function. The user can choose which properties will be considered and optimized, define different coefficients for each property, and choose reward thresholds. When biasing a generator, the reward thresholds for each property can be continuously adjusted from an initial to the target value to coax the generator towards the desired property space.