Class SeparatorLevelControlEnv

java.lang.Object
neqsim.process.ml.RLEnvironment
neqsim.process.ml.examples.SeparatorLevelControlEnv
All Implemented Interfaces:
Serializable

public class SeparatorLevelControlEnv extends RLEnvironment
Example RL environment for separator level control.

This demonstrates how to wrap a NeqSim process in an RL-compatible interface for training control policies. The agent learns to maintain liquid level at setpoint by controlling the liquid outlet valve.

State Space:

  • liquid_level: Current level fraction [0, 1]
  • pressure: Separator pressure [bar]
  • temperature: Separator temperature [K]
  • feed_flow: Inlet flow rate [kg/s]
  • gas_density: Gas phase density [kg/m³]
  • liquid_density: Liquid phase density [kg/m³]
  • level_error: Deviation from setpoint [-1, 1]
  • pressure_error: Deviation from pressure setpoint [-1, 1]

Action Space:

  • valve_opening: Liquid outlet valve position [0, 1]

Reward:

  • Negative quadratic penalty for level error
  • Negative penalty for constraint violations
  • Positive reward for stability (low action changes)
Version:
1.0
Author:
ESOL
See Also:
  • Field Details

    • serialVersionUID

      private static final long serialVersionUID
      See Also:
    • separator

      private Separator separator
    • liquidValve

      private ThrottlingValve liquidValve
    • feedStream

      private Stream feedStream
    • levelSetpoint

      private double levelSetpoint
    • pressureSetpoint

      private double pressureSetpoint
    • previousAction

      private double previousAction
  • Constructor Details

    • SeparatorLevelControlEnv

      public SeparatorLevelControlEnv()
      Create a separator level control environment with default process.
    • SeparatorLevelControlEnv

      public SeparatorLevelControlEnv(ProcessSystem process, String separatorName, String valveName, String feedName)
      Create a separator level control environment with custom process.
      Parameters:
      process - the process system containing a separator
      separatorName - name of the separator in the process
      valveName - name of the liquid outlet valve
      feedName - name of the feed stream
  • Method Details

    • createDefaultProcess

      private static ProcessSystem createDefaultProcess()
    • initializeComponents

      private void initializeComponents()
    • setLevelSetpoint

      public void setLevelSetpoint(double setpoint)
      Set the level setpoint.
      Parameters:
      setpoint - target level fraction [0, 1]
    • setPressureSetpoint

      public void setPressureSetpoint(double setpoint)
      Set the pressure setpoint.
      Parameters:
      setpoint - target pressure [bar]
    • applyAction

      protected void applyAction(ActionVector action)
      Description copied from class: RLEnvironment
      Apply action to process equipment. Override in subclass to implement specific control logic.
      Overrides:
      applyAction in class RLEnvironment
      Parameters:
      action - the action to apply
    • getObservation

      protected StateVector getObservation()
      Description copied from class: RLEnvironment
      Get current observation. Override in subclass to include equipment-specific states.
      Overrides:
      getObservation in class RLEnvironment
      Returns:
      current state vector
    • computeReward

      protected double computeReward(StateVector state, ActionVector action, RLEnvironment.StepInfo info)
      Description copied from class: RLEnvironment
      Compute reward for current state and action.
      Overrides:
      computeReward in class RLEnvironment
      Parameters:
      state - current state
      action - applied action
      info - info object to fill with details
      Returns:
      scalar reward
    • getSeparator

      public Separator getSeparator()
      Get the separator being controlled.
      Returns:
      the separator
    • getLiquidValve

      public ThrottlingValve getLiquidValve()
      Get the liquid outlet valve.
      Returns:
      the valve
    • main

      public static void main(String[] args)
      Demo main method.
      Parameters:
      args - command line arguments