Major Change in Evaluation API
We now add the names of the objective function and the encoding to the evaluation data elements.
We introduce a new base class for evaluation data elements.
Each evaluation data element now has a `_tuple()` function returning its comparison-related data as tuple.
All the comparison-related dunder methods are based on this function.
This is actually similar to the
code auto-generated by dataclass, but with one difference:
It allows us to handle `None` values appropriately.
Several of the elements of the evaluation API have been adapted to these changes.
For example, we now can compute summary statistics also over objective functions and encodings, if we want.
Other elements of the API do not yet make use of this change (e.g., the plotting routines).
The reason for the change is that we may want to use different encodings and different objective functions and may need a proper way to represent them and to compare data across them.
This happens, e.g., in the two-dimensional bin packing scenario of moptipyapps.
From now on, this functionality is supported in the moptipy core.