Class SeparatorCompressorMultiAgentEnv
java.lang.Object
neqsim.process.ml.multiagent.MultiAgentEnvironment
neqsim.process.ml.examples.SeparatorCompressorMultiAgentEnv
- All Implemented Interfaces:
Serializable
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:
-
Nested Class Summary
Nested classes/interfaces inherited from class MultiAgentEnvironment
MultiAgentEnvironment.CoordinationMode, MultiAgentEnvironment.MultiAgentStepResult -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate Compressorprivate Streamprivate doubleprivate Streamprivate doubleprivate ThrottlingValveprivate Separatorprivate doubleprivate static final long -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidapplyFeedDisturbance(double flowMultiplier) Apply feed disturbance for testing robustness.protected doublecomputeTeamReward(StateVector state, Map<String, double[]> actions) Compute team reward for cooperative mode.private static ProcessSystemGet the compressor.protected StateVectorGet global state from process.Get the separator.private voidprivate voidMethods inherited from class MultiAgentEnvironment
addAgent, getAgent, getAgentIds, getCurrentGlobalState, getCurrentStep, getNumAgents, getProcess, isDone, reset, setCoordinationMode, setMaxEpisodeSteps, setSharedConstraints, step
-
Field Details
-
serialVersionUID
private static final long serialVersionUID- See Also:
-
feed
-
separator
-
liquidValve
-
compressor
-
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
-
setupAgents
private void setupAgents() -
setupConstraints
private void setupConstraints() -
getGlobalState
Description copied from class:MultiAgentEnvironmentGet global state from process.- Overrides:
getGlobalStatein classMultiAgentEnvironment- Returns:
- global state vector
-
computeTeamReward
Description copied from class:MultiAgentEnvironmentCompute team reward for cooperative mode.- Overrides:
computeTeamRewardin classMultiAgentEnvironment- Parameters:
state- global stateactions- all agent actions- Returns:
- team reward
-
applyFeedDisturbance
public void applyFeedDisturbance(double flowMultiplier) Apply feed disturbance for testing robustness.- Parameters:
flowMultiplier- flow rate multiplier
-
getSeparator
-
getCompressor
-