Class DebottleneckAnalyzer

java.lang.Object
neqsim.process.util.optimizer.DebottleneckAnalyzer
All Implemented Interfaces:
Serializable

public class DebottleneckAnalyzer extends Object implements Serializable
Systematically identifies and ranks equipment bottlenecks in a process system.

Scans all equipment implementing CapacityConstrainedEquipment, collects utilization data, ranks equipment by how close they are to design limits, and provides actionable suggestions for debottlenecking.

Builds on the existing capacity constraint framework in neqsim.process.equipment.capacity.

Usage example:


DebottleneckAnalyzer analyzer = new DebottleneckAnalyzer(process);
analyzer.setWarningThreshold(0.85);
analyzer.analyze();
List<EquipmentStatus> ranked = analyzer.getRankedEquipment();
String primary = analyzer.getPrimaryBottleneck();
String json = analyzer.toJson();

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

    • serialVersionUID

      private static final long serialVersionUID
      See Also:
    • logger

      static org.apache.logging.log4j.Logger logger
      Logger object for class.
    • processSystem

      private final ProcessSystem processSystem
    • warningThreshold

      private double warningThreshold
    • criticalThreshold

      private double criticalThreshold
    • rankedEquipment

      private final List<DebottleneckAnalyzer.EquipmentStatus> rankedEquipment
    • analyzed

      private boolean analyzed
  • Constructor Details

    • DebottleneckAnalyzer

      public DebottleneckAnalyzer(ProcessSystem processSystem)
      Creates a debottleneck analyzer for the given process system.
      Parameters:
      processSystem - the process system to analyze
  • Method Details

    • setWarningThreshold

      public void setWarningThreshold(double threshold)
      Sets the warning threshold (fraction).
      Parameters:
      threshold - warning threshold (default 0.85 = 85%)
    • setCriticalThreshold

      public void setCriticalThreshold(double threshold)
      Sets the critical threshold (fraction).
      Parameters:
      threshold - critical threshold (default 0.95 = 95%)
    • analyze

      public void analyze()
      Runs the debottleneck analysis.
    • generateSuggestion

      private String generateSuggestion(ProcessEquipmentInterface equip, String constraintName, double utilization)
      Generates a debottleneck suggestion for the given equipment.
      Parameters:
      equip - the equipment
      constraintName - the limiting constraint name
      utilization - current utilization
      Returns:
      suggestion text
    • getPrimaryBottleneck

      public String getPrimaryBottleneck()
      Gets the primary bottleneck equipment name.
      Returns:
      name of the equipment with highest utilization, or empty string if none
    • getRankedEquipment

      public List<DebottleneckAnalyzer.EquipmentStatus> getRankedEquipment()
      Gets all equipment ranked by utilization (highest first).
      Returns:
      list of EquipmentStatus ordered by utilization
    • getConstrainedEquipment

      public List<DebottleneckAnalyzer.EquipmentStatus> getConstrainedEquipment()
      Gets only equipment above the warning threshold.
      Returns:
      list of equipment that are at warning level or above
    • getOverloadedCount

      public int getOverloadedCount()
      Gets the number of overloaded equipment items.
      Returns:
      count of equipment exceeding design limit
    • getOverallUtilization

      public double getOverallUtilization()
      Gets the overall process capacity utilization (based on highest equipment utilization).
      Returns:
      maximum utilization fraction across all equipment
    • toJson

      public String toJson()
      Returns the analysis results as a JSON string.
      Returns:
      JSON representation of debottleneck analysis