Class PhysicsConstraintValidator
java.lang.Object
neqsim.process.ml.surrogate.PhysicsConstraintValidator
- All Implemented Interfaces:
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:
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionprivate static interfaceBase interface for constraints.private static classInternal result of checking a single constraint.static classDetails of a constraint violation.private static classConstraint on specific equipment.private static classConstraint on physical bounds (e.g., positive temperature).static classResult of a validation check. -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final List<PhysicsConstraintValidator.Constraint> private doubleprivate booleanprivate booleanprivate booleanprivate doubleprivate final ProcessSystemprivate static final long -
Constructor Summary
ConstructorsConstructorDescriptionPhysicsConstraintValidator(ProcessSystem processSystem) Creates a validator for a process system. -
Method Summary
Modifier and TypeMethodDescriptionprivate voidvoidaddFlowLimit(String equipmentName, double minFlow, double maxFlow, String unit) Adds a flow rate limit constraint for specific equipment.voidaddPressureLimit(String equipmentName, double minPressure, double maxPressure, String unit) Adds a pressure limit constraint for specific equipment.voidaddTemperatureLimit(String equipmentName, double minTemp, double maxTemp, String unit) Adds a temperature limit constraint for specific equipment.private doublegetEquipmentValue(ProcessEquipmentInterface equipment, String property) booleanbooleanbooleanvoidsetEnergyBalanceTolerance(double tolerance) Sets the energy balance tolerance.voidsetEnforceEnergyBalance(boolean enforce) voidsetEnforceMassBalance(boolean enforce) voidsetEnforcePhysicalBounds(boolean enforce) voidsetMassBalanceTolerance(double tolerance) Sets the mass balance tolerance.Validates a proposed set of actions against all constraints.Validates that the current process state satisfies all constraints.
-
Field Details
-
serialVersionUID
private static final long serialVersionUID- See Also:
-
processSystem
-
constraints
-
massBalanceTolerance
private double massBalanceTolerance -
energyBalanceTolerance
private double energyBalanceTolerance -
enforceMassBalance
private boolean enforceMassBalance -
enforceEnergyBalance
private boolean enforceEnergyBalance -
enforcePhysicalBounds
private boolean enforcePhysicalBounds
-
-
Constructor Details
-
PhysicsConstraintValidator
Creates a validator for a process system.- Parameters:
processSystem- the process system to validate against
-
-
Method Details
-
addDefaultPhysicalConstraints
private void addDefaultPhysicalConstraints() -
addPressureLimit
-
addTemperatureLimit
-
addFlowLimit
-
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
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
Validates that the current process state satisfies all constraints.- Returns:
- validation result for current state
-
getEquipmentValue
-
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)
-