Class SeparatorCompressorMultiAgentEnv

java.lang.Object
neqsim.process.ml.multiagent.MultiAgentEnvironment
neqsim.process.ml.examples.SeparatorCompressorMultiAgentEnv
All Implemented Interfaces:
Serializable

public class SeparatorCompressorMultiAgentEnv extends MultiAgentEnvironment
Multi-agent example: Separator + Compressor train.

Two coordinated agents:

  • SeparatorAgent: Controls liquid level via outlet valve
  • CompressorAgent: Controls discharge pressure via speed

The agents must coordinate because:

  • Separator gas output feeds the compressor
  • Compressor suction pressure affects separator operation
  • Level control affects available gas flow to compressor

Usage:


SeparatorCompressorMultiAgentEnv env = new SeparatorCompressorMultiAgentEnv();
env.setCoordinationMode(CoordinationMode.COOPERATIVE);

Map<String, double[]> obs = env.reset();
while (!env.isDone()) {
  Map<String, double[]> actions = new HashMap<>();
  actions.put("separator", sepPolicy.predict(obs.get("separator")));
  actions.put("compressor", compPolicy.predict(obs.get("compressor")));
  var result = env.step(actions);
  obs = result.observations;
}

Version:
1.0
Author:
ESOL
See Also:
  • Field Details

    • serialVersionUID

      private static final long serialVersionUID
      See Also:
    • feed

      private Stream feed
    • separator

      private Separator separator
    • liquidValve

      private ThrottlingValve liquidValve
    • compressor

      private Compressor compressor
    • compressorOut

      private Stream compressorOut
    • liquidLevel

      private double liquidLevel
    • separatorPressure

      private double separatorPressure
    • compressorSpeed

      private double compressorSpeed
  • Constructor Details

    • SeparatorCompressorMultiAgentEnv

      public SeparatorCompressorMultiAgentEnv()
      Create the multi-agent environment.
  • Method Details

    • createProcess

      private static ProcessSystem createProcess()
    • setupAgents

      private void setupAgents()
    • setupConstraints

      private void setupConstraints()
    • getGlobalState

      protected StateVector getGlobalState()
      Description copied from class: MultiAgentEnvironment
      Get global state from process.
      Overrides:
      getGlobalState in class MultiAgentEnvironment
      Returns:
      global state vector
    • computeTeamReward

      protected double computeTeamReward(StateVector state, Map<String,double[]> actions)
      Description copied from class: MultiAgentEnvironment
      Compute team reward for cooperative mode.
      Overrides:
      computeTeamReward in class MultiAgentEnvironment
      Parameters:
      state - global state
      actions - all agent actions
      Returns:
      team reward
    • applyFeedDisturbance

      public void applyFeedDisturbance(double flowMultiplier)
      Apply feed disturbance for testing robustness.
      Parameters:
      flowMultiplier - flow rate multiplier
    • getSeparator

      public Separator getSeparator()
      Get the separator.
      Returns:
      separator
    • getCompressor

      public Compressor getCompressor()
      Get the compressor.
      Returns:
      compressor