SCUBA DIVER OPTIMIZATION ALGORITHM: Tension/Compression Spri

Scuba Diver Optimization Algorithm (SDOA) for solving Tension/Compression Spring Design Optimization
7 Descargas
Actualizado 15 dic 2025

Ver licencia

SDOA Algorithm Implementation for Tension/Compression Spring Design Optimization
Core Algorithm: Scuba Diver Optimization Algorithm (SDOA)
Nature-inspired metaheuristic based on scuba diving behavior
Population-based approach with adaptive search strategies
Key mechanism: Oxygen levels regulate transition from exploration to exploitation
Problem Solved: Tension/Compression Spring Design Optimization
Objective: Minimize spring weight (mass) while satisfying 4 mechanical constraints
3 design variables: Wire diameter (d), Mean coil diameter (D), Number of active coils (P)
4 nonlinear constraints: Shear stress, Surge frequency, Deflection limits, Diameter relationship
Variable bounds: d ∈ [0.05, 2.0], D ∈ [0.25, 1.3], P ∈ [2.0, 15.0]
Penalty parameter: 10⁹ for constraint violations
Algorithm Components
1. Diver Representation & Initialization
  • Each diver = a candidate solution vector (3 variables: d, D, P)
  • Structured initialization: Variables initialized across their ranges with segment-based distribution
  • Random diversification: 1/3 of population randomly initialized for enhanced diversity
  • Bound enforcement: Strict adherence to variable bounds throughout optimization
2. Oxygen & Depth Management
  • Oxygen decay: O_i(t) = O_i(t-1) × exp(-α × t / t_max) with α = 0.5
  • 5 depth stages based on oxygen thresholds:
  • D1 (>75): Global exploration using Levy flight with Cauchy-like distribution
  • D2 (>55): Moderate exploration with 70% crossover and 30% random walk
  • B1 (>35): Exploitation using local hill-climbing search plus elite crossover (60% probability)
  • D3 (>15): Fine-tuning with non-uniform mutation (rate decreases with iteration)
  • Reset (≤15): Diversification via reinitialization (40% probability, triggered for constraint violations)
3. Search Operators (Adapted for 3D Spring Space)
  • Levy flight: Heavy-tailed exploration using Cauchy distribution: step ∝ tan(π×(rand-0.5))
  • Crossover: Linear blending: child = α×parent1 + (1-α)×parent2 with α∼U(0,1)
  • Local search: Hill-climbing in ±2% neighborhood of each variable
  • Non-uniform mutation: Non-linear perturbation: δ = 1-rand^((1-iter/maxIter)⁵)
  • Random walk: Uniform perturbation within [-strength×(Ub-Lb), strength×(Ub-Lb)]
4. Constraint Handling for Spring Design
  • Exterior penalty function: fitness = weight + 10⁹ × Σ(max(0, gᵢ))
  • Constraint evaluation:
  1. g₁ = 1 - (D³×P)/(71785×d⁴) ≤ 0 (Shear stress)
  2. g₂ = (4D²-dD)/(12566(d³D-d⁴)) + 1/(5108d²) - 1 ≤ 0 (Surge frequency)
  3. g₃ = 1 - (140.45×d)/(D²×P) ≤ 0 (Deflection)
  4. g₄ = (d+D)/1.5 - 1 ≤ 0 (Diameter)
  • Acceptance criteria: Accept better penalized fitness OR feasible solutions over infeasible ones
  • Violation tracking: Count of violated constraints (0-4)
5. Adaptive Mechanisms
  • Elite preservation: Top 20 solutions preserved each iteration (based on penalized fitness)
  • Parameter adaptation:
  • Mutation rate: decays linearly from 0.8 to 0
  • Current strength: decays quadratically from 0.3 to 0
  • Oxygen replenishment: +5 oxygen units for successful moves
  • Communication mechanism: 60% probability to pull toward best solution (scaled by oxygen level)
  • Iteration-dependent scaling: Levy flight step size reduces linearly with iterations
Key Parameters
  • Population size: 100 divers
  • Maximum iterations: 400
  • Initial oxygen: 100 units
  • Oxygen decay factor (α): 0.5
  • Elite size: 20 best spring designs
  • Initial mutation rate: 0.8 (decays to 0)
  • Initial current strength: 0.3 (decays to 0)
  • Constraint penalty: 1,000,000,000 per violation
Algorithm Flow
  1. Initialization: Generate 100 divers within bounds with structured distribution
  2. Evaluation: Calculate weight and constraint violations for all divers
  3. Main Loop (400 iterations):
  • Update oxygen levels and determine depth stages
  • Preserve elite divers
  • Apply movement operators based on depth stage
  • Evaluate and accept/reject new positions
  • Update best solution
  • Record convergence metrics
  1. Termination: Output best solution after 400 iterations
Performance Characteristics
  • Computational complexity: O(100×400×3) = ~120,000 function evaluations
  • Memory usage: Stores position (100×3), oxygen (100×1), depth (100×1), fitness arrays
  • Convergence monitoring: Tracks best, average (feasible), and maximum fitness
  • Feasibility tracking: Percentage of feasible solutions each iteration
  • Depth distribution: Count of divers in each depth stage per iteration
Visualization & Analysis Tools
  1. Convergence plot: Best and average feasible fitness over iterations
  2. Constraint violation history: Best solution's constraint violation count
  3. Optimal variables display: Bar chart of best d, D, P values
  4. Depth distribution: Stacked area chart of divers in each depth stage
  5. Feasibility pie chart: Final population feasibility percentage
  6. Parameter summary: Display of algorithm parameters and final results
  7. Constraint verification: Detailed check of all 4 constraints for best solution
Strengths of This Implementation
  1. Problem-specific adaptation: Operators tailored for 3-variable spring design space
  2. Robust constraint handling: High penalty ensures feasibility drive
  3. Balanced search: Five depth stages provide smooth exploration-exploitation transition
  4. Adaptive behavior: Parameters decay appropriately across search phases
  5. Elitism protection: Preserves best designs throughout optimization
  6. Comprehensive monitoring: Full tracking of algorithm state and performance
  7. Clear visualization: Six-panel figure provides complete optimization insight
Expected Performance Metrics
MetricExpected RangeNotesBest weight0.0126 - 0.0135Literature optimum ~0.012665Feasibility rate (final)85-100%Depends on penalty parameterConstraint satisfactionAll 4 satisfiedFor best solutionConvergence iterations150-250To reach near-optimal regionFunction evaluations~120,000100 divers × 400 iterations
Implementation Notes for the Provided Code
  • Variable naming: Uses P instead of N for number of active coils (consistent with code)
  • Bound correction: Includes explicit bound correction in fobj function
  • Progress display: Shows iteration progress with key metrics
  • Constraint verification: Separate function for detailed constraint analysis
  • Initialization method: Segment-based with random diversification
  • Termination condition: Fixed iteration count (400)
This implementation demonstrates SDOA's effectiveness on a classic mechanical design problem with a small but highly constrained search space, maintaining the algorithm's biological inspiration while achieving practical engineering optimization results.

Citar como

Saman M. Almufti (2026). SCUBA DIVER OPTIMIZATION ALGORITHM: Tension/Compression Spri (https://la.mathworks.com/matlabcentral/fileexchange/182836-scuba-diver-optimization-algorithm-tension-compression-spri), MATLAB Central File Exchange. Recuperado .

Compatibilidad con la versión de MATLAB
Se creó con R2025b
Compatible con cualquier versión
Compatibilidad con las plataformas
Windows macOS Linux
Versión Publicado Notas de la versión
1.0.0