Class DesignOptimizer

java.lang.Object
neqsim.process.design.DesignOptimizer

public class DesignOptimizer extends Object
Integrated design-to-optimization workflow manager.

DesignOptimizer provides a unified workflow for:

  • Building processes from templates
  • Auto-sizing equipment
  • Setting up constraints
  • Running optimization
  • Validating results

Example usage:

DesignResult result = DesignOptimizer.forProcess(process).autoSizeEquipment(1.2)
    .applyDefaultConstraints().setObjective(ObjectiveType.MAXIMIZE_PRODUCTION).optimize();
Version:
1.0
Author:
NeqSim Development Team
  • Field Details

    • logger

      private static final org.apache.logging.log4j.Logger logger
    • process

      private ProcessSystem process
    • module

      private ProcessModule module
    • basis

      private ProcessBasis basis
    • safetyFactor

      private double safetyFactor
    • autoSizeEnabled

      private boolean autoSizeEnabled
    • objective

      private DesignOptimizer.ObjectiveType objective
    • excludedEquipment

      private List<String> excludedEquipment
  • Constructor Details

    • DesignOptimizer

      private DesignOptimizer(ProcessSystem process)
      Private constructor - use factory methods.
      Parameters:
      process - the process to optimize
    • DesignOptimizer

      private DesignOptimizer(ProcessModule module)
      Private constructor for ProcessModule - use factory methods.
      Parameters:
      module - the process module to optimize
  • Method Details

    • forProcess

      public static DesignOptimizer forProcess(ProcessSystem process)
      Create a DesignOptimizer for an existing process.
      Parameters:
      process - the process system
      Returns:
      new DesignOptimizer
    • forProcess

      public static DesignOptimizer forProcess(ProcessModule module)
      Create a DesignOptimizer for an existing process module.
      Parameters:
      module - the process module
      Returns:
      new DesignOptimizer
    • fromTemplate

      public static DesignOptimizer fromTemplate(ProcessTemplate template, ProcessBasis basis)
      Create a DesignOptimizer from a template.
      Parameters:
      template - the process template
      basis - the process basis
      Returns:
      new DesignOptimizer with created process
    • autoSizeEquipment

      public DesignOptimizer autoSizeEquipment(double safetyFactor)
      Enable auto-sizing of equipment with specified safety factor.
      Parameters:
      safetyFactor - the safety factor (typically 1.1-1.3)
      Returns:
      this optimizer for chaining
    • autoSizeEquipment

      public DesignOptimizer autoSizeEquipment()
      Enable auto-sizing of equipment with default safety factor (1.2).
      Returns:
      this optimizer for chaining
    • applyDefaultConstraints

      public DesignOptimizer applyDefaultConstraints()
      Apply default constraints based on equipment types.
      Returns:
      this optimizer for chaining
    • setObjective

      public DesignOptimizer setObjective(DesignOptimizer.ObjectiveType objective)
      Set the optimization objective.
      Parameters:
      objective - the objective type
      Returns:
      this optimizer for chaining
    • excludeEquipment

      public DesignOptimizer excludeEquipment(String... equipmentNames)
      Exclude equipment from optimization.
      Parameters:
      equipmentNames - names of equipment to exclude
      Returns:
      this optimizer for chaining
    • optimize

      public DesignResult optimize()
      Run the complete design and optimization workflow.
      Returns:
      the design result
    • runAutoSizing

      public DesignOptimizer runAutoSizing()
      Run only equipment auto-sizing (no optimization).
      Returns:
      this optimizer for further operations
    • validate

      public DesignResult validate()
      Validate the current design without optimization.
      Returns:
      design result with validation status
    • runSimulation

      private void runSimulation()
      Run the simulation (either ProcessSystem or ProcessModule).
    • getAllUnitOperations

      private List<ProcessEquipmentInterface> getAllUnitOperations()
      Get all unit operations from either ProcessSystem or ProcessModule.
      Returns:
      list of all unit operations
    • getFirstProcessSystem

      private ProcessSystem getFirstProcessSystem()
      Get the first ProcessSystem (for result creation when using module).
      Returns:
      the first ProcessSystem or null
    • autoSizeAllEquipment

      private void autoSizeAllEquipment()
    • findProductStream

      private StreamInterface findProductStream()
    • recordEquipmentSizes

      private void recordEquipmentSizes(DesignResult result)
    • recordConstraintStatus

      private void recordConstraintStatus(DesignResult result)
    • checkViolations

      private void checkViolations(DesignResult result)
    • getProcess

      public ProcessSystem getProcess()
      Get the process system.
      Returns:
      the process, or the first process system from the module if using a module
    • getModule

      public ProcessModule getModule()
      Get the process module.
      Returns:
      the module or null if not using a module
    • isModuleMode

      public boolean isModuleMode()
      Check if this optimizer is working with a ProcessModule.
      Returns:
      true if using a ProcessModule, false if using a ProcessSystem
    • getBasis

      public ProcessBasis getBasis()
      Get the process basis.
      Returns:
      the basis or null if not set