All Downloads are FREE. Search and download functionalities are using the official Maven repository.

es.urjc.etsii.grafo.io.serializers.ResultsSerializer Maven / Gradle / Ivy

package es.urjc.etsii.grafo.io.serializers;

import es.urjc.etsii.grafo.annotations.InheritedComponent;
import es.urjc.etsii.grafo.events.types.SolutionGeneratedEvent;
import es.urjc.etsii.grafo.experiment.reference.ReferenceResultProvider;
import es.urjc.etsii.grafo.io.Instance;
import es.urjc.etsii.grafo.solution.Solution;

import java.nio.file.Path;
import java.util.List;

/**
 * This class handles the transformation of the results of the experiments to a file in a specific format.
 */
@InheritedComponent
public abstract class ResultsSerializer, I extends Instance> {

    /**
     * Reference values from previous experiments or previous works
     */
    protected final List referenceResultProviders;

    /**
     * Serializer config
     */
    protected final AbstractResultSerializerConfig config;

    /**
     * Construct a result serializer given a specific configuration. {@see AbstractResultSerializerConfig.java}
     *
     * @param config                   serializer configuration
     * @param referenceResultProviders reference values, previous to this solver execution, for example SOTA values.
     */
    public ResultsSerializer(AbstractResultSerializerConfig config, List referenceResultProviders) {
        this.config = config;
        this.referenceResultProviders = referenceResultProviders;
    }

    /**
     * Get current serializer configuration
     * @return serializer configuration
     */
    public AbstractResultSerializerConfig getConfig(){
        return this.config;
    }

    /**
     * Write experiment results to disk using the provided event list
     * @param results Result data as a list of events.
     * @param p Path where results file should be written. Could be a folder depending on the serializer.
     */
    public void serializeResults(String experimentName, List> results, Path p){
        this._serializeResults(experimentName, results, p);
    }

    /**
     * This procedure serialize the list of results to a specific format and generate the resultant file in a given path
     *
     * @param results list of results
     * @param p       path
     */
    protected abstract void _serializeResults(String experimentName, List> results, Path p);


}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy