Class PhysicsConstraintValidator

java.lang.Object
neqsim.process.ml.surrogate.PhysicsConstraintValidator
All Implemented Interfaces:
Serializable

public class PhysicsConstraintValidator extends Object implements Serializable
Validates AI-proposed actions against physics constraints.

This class enforces thermodynamic and safety constraints before allowing AI/ML models to execute actions on a process system. Key principles:

  • Physics First: All actions must satisfy mass/energy balances
  • Safety by Design: Constraint violations are caught before execution
  • Explainability: Clear reasons provided for rejected actions

Usage Example:

ProcessSystem process = new ProcessSystem();
PhysicsConstraintValidator validator = new PhysicsConstraintValidator(process);

// Add constraints
validator.addPressureLimit("separator", 10.0, 80.0, "bara");
validator.addTemperatureLimit("heater-outlet", 0.0, 300.0, "C");
validator.addMassBalanceCheck(0.01); // 1% tolerance

// Validate AI-proposed action
Map<String, Double> proposedAction = new HashMap<>();
proposedAction.put("heater.duty", 5000000.0);
proposedAction.put("valve.opening", 0.85);

ValidationResult result = validator.validate(proposedAction);

if (result.isValid()) {
  // Safe to apply action
  applyAction(proposedAction);
} else {
  // Action rejected
  System.out.println("Action rejected: " + result.getRejectionReason());
  for (ConstraintViolation v : result.getViolations()) {
    System.out.println("  - " + v.getMessage());
  }
}
Version:
1.0
Author:
ESOL
See Also:
  • Field Details

    • serialVersionUID

      private static final long serialVersionUID
      See Also:
    • processSystem

      private final ProcessSystem processSystem
    • constraints

      private final List<PhysicsConstraintValidator.Constraint> constraints
    • massBalanceTolerance

      private double massBalanceTolerance
    • energyBalanceTolerance

      private double energyBalanceTolerance
    • enforceMassBalance

      private boolean enforceMassBalance
    • enforceEnergyBalance

      private boolean enforceEnergyBalance
    • enforcePhysicalBounds

      private boolean enforcePhysicalBounds
  • Constructor Details

    • PhysicsConstraintValidator

      public PhysicsConstraintValidator(ProcessSystem processSystem)
      Creates a validator for a process system.
      Parameters:
      processSystem - the process system to validate against
  • Method Details

    • addDefaultPhysicalConstraints

      private void addDefaultPhysicalConstraints()
    • addPressureLimit

      public void addPressureLimit(String equipmentName, double minPressure, double maxPressure, String unit)
      Adds a pressure limit constraint for specific equipment.
      Parameters:
      equipmentName - name of the equipment
      minPressure - minimum pressure
      maxPressure - maximum pressure
      unit - pressure unit
    • addTemperatureLimit

      public void addTemperatureLimit(String equipmentName, double minTemp, double maxTemp, String unit)
      Adds a temperature limit constraint for specific equipment.
      Parameters:
      equipmentName - name of the equipment
      minTemp - minimum temperature
      maxTemp - maximum temperature
      unit - temperature unit
    • addFlowLimit

      public void addFlowLimit(String equipmentName, double minFlow, double maxFlow, String unit)
      Adds a flow rate limit constraint for specific equipment.
      Parameters:
      equipmentName - name of the equipment
      minFlow - minimum flow rate
      maxFlow - maximum flow rate
      unit - flow unit
    • setMassBalanceTolerance

      public void setMassBalanceTolerance(double tolerance)
      Sets the mass balance tolerance.
      Parameters:
      tolerance - relative tolerance (e.g., 0.01 for 1%)
    • setEnergyBalanceTolerance

      public void setEnergyBalanceTolerance(double tolerance)
      Sets the energy balance tolerance.
      Parameters:
      tolerance - relative tolerance (e.g., 0.05 for 5%)
    • validate

      public PhysicsConstraintValidator.ValidationResult validate(Map<String,Double> proposedActions)
      Validates a proposed set of actions against all constraints.
      Parameters:
      proposedActions - map of variable names to proposed values
      Returns:
      validation result with pass/fail and violation details
    • validateCurrentState

      public PhysicsConstraintValidator.ValidationResult validateCurrentState()
      Validates that the current process state satisfies all constraints.
      Returns:
      validation result for current state
    • getEquipmentValue

      private double getEquipmentValue(ProcessEquipmentInterface equipment, String property)
    • checkMassBalance

    • checkEnergyBalance

    • isEnforceMassBalance

      public boolean isEnforceMassBalance()
    • setEnforceMassBalance

      public void setEnforceMassBalance(boolean enforce)
    • isEnforceEnergyBalance

      public boolean isEnforceEnergyBalance()
    • setEnforceEnergyBalance

      public void setEnforceEnergyBalance(boolean enforce)
    • isEnforcePhysicalBounds

      public boolean isEnforcePhysicalBounds()
    • setEnforcePhysicalBounds

      public void setEnforcePhysicalBounds(boolean enforce)