package vroom.optimization.online.jmsa; import vroom.optimization.online.jmsa.components.ComponentManager; import vroom.optimization.online.jmsa.events.DecisionHandler; import vroom.optimization.online.jmsa.events.MSACallbackEvent; public interface MSAProxy<SS extends IScenario, II extends IInstance> { /** * Getter for the component manager * * @return the component manager of the associated MSA instance */ public ComponentManager<SS, II> getComponentManager(); /** * Setter for the distinguished mSolution, should only be called by * instances of {@link DecisionHandler} * * @param distinguishedSolution * The new distinguished mSolution */ public void setDistinguishedSolution( IDistinguishedSolution distinguishedSolution); /** * Getter for the global parameters * @return the global parameters associated with this * msa procedure */ public MSAGlobalParameters getParameters(); /** * Getter for the instance * * @return the instance associated with this msa procedure */ public II getInstance(); /** * Getter for the scenario pool * * @return the scenario pool of this msa procedure */ public ScenarioPool<SS> getScenarioPool(); /** * Getter proy for the distinguished mSolution * * @return The current distinguished mSolution * * @see MultipleScenarioApproachMT#getDistinguishedSolution() */ public IDistinguishedSolution getDistinguishedSolution(); /** * Execute the callbacks associated with <code>event</code> * * @param eventType * the event type that has occurred and for which the * associated callbacks will be run * @param params * an optional parameter that will be transmitted to the * callback */ public void callbacks(MSACallbackEvent.EventTypes eventType, Object... params); }