SCUBA DIVER OPTIMIZATION ALGORITHM: Tension/Compression Spri

Scuba Diver Optimization Algorithm (SDOA) for solving Tension/Compression Spring Design Optimization
2 download
Aggiornato 15 dic 2025

Visualizza la licenza

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.

Cita come

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

Compatibilità della release di MATLAB
Creato con R2025b
Compatibile con qualsiasi release
Compatibilità della piattaforma
Windows macOS Linux

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!
Versione Pubblicato Note della release
1.0.0