Source code for sproclib.optimization.process_optimization.process_optimization

"""
Process Optimization for SPROCLIB

This module provides basic process optimization functionality.

Author: Thorsten Gressling <gressling@paramus.ai>
License: MIT License
"""

import numpy as np
from typing import Optional, Tuple, Dict, Any, List
import logging

logger = logging.getLogger(__name__)


[docs] class ProcessOptimization: """Basic process optimization class."""
[docs] def __init__(self, name: str = "Process Optimization"): """ Initialize process optimization. Args: name: Optimization name """ self.name = name self.results = {} logger.info(f"Process optimization '{name}' initialized")
[docs] def optimize(self, objective_func, x0, constraints=None, bounds=None): """Basic optimization method.""" from scipy.optimize import minimize try: result = minimize(objective_func, x0, constraints=constraints, bounds=bounds) return { 'success': result.success, 'x': result.x, 'fun': result.fun, 'message': result.message } except Exception as e: logger.error(f"Optimization error: {e}") return {'success': False, 'error': str(e)}
[docs] def describe(self) -> dict: """ Introspect metadata for documentation and algorithm querying. Returns: dict: Metadata about the model including algorithms, parameters, equations, and usage information. """ return { 'type': 'ProcessOptimization', 'description': 'General-purpose process optimization framework for chemical engineering systems', 'category': 'optimization', 'algorithms': { 'optimize': 'Scipy minimize with constraint handling', 'gradient_descent': 'Basic gradient descent implementation', 'objective_evaluation': 'Function evaluation with constraint checking' }, 'parameters': { 'name': { 'value': self.name, 'units': 'dimensionless', 'description': 'Optimization problem identifier' } }, 'state_variables': getattr(self, 'state_variables', {}), 'inputs': ['objective_function', 'constraints', 'bounds', 'initial_guess'], 'outputs': ['optimal_solution', 'optimal_value', 'convergence_info'], 'valid_ranges': { 'tolerance': {'min': 1e-12, 'max': 1e-3, 'units': 'dimensionless'}, 'max_iterations': {'min': 10, 'max': 10000, 'units': 'iterations'} }, 'applications': [ 'Process design optimization', 'Operating condition optimization', 'Control system tuning', 'Equipment sizing', 'Heat exchanger network synthesis' ], 'limitations': [ 'Requires differentiable objective functions', 'May converge to local minima', 'Constraint handling limited to scipy capabilities', 'No discrete variable optimization' ] }
__all__ = ['ProcessOptimization']