SCUBA DIVER OPTIMIZATION ALGORITHM: Tension/Compression Spri
Versione 1.0.0 (40 KB) da
Saman M. Almufti
Scuba Diver Optimization Algorithm (SDOA) for solving Tension/Compression Spring Design Optimization
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:
- g₁ = 1 - (D³×P)/(71785×d⁴) ≤ 0 (Shear stress)
- g₂ = (4D²-dD)/(12566(d³D-d⁴)) + 1/(5108d²) - 1 ≤ 0 (Surge frequency)
- g₃ = 1 - (140.45×d)/(D²×P) ≤ 0 (Deflection)
- 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
- Initialization: Generate 100 divers within bounds with structured distribution
- Evaluation: Calculate weight and constraint violations for all divers
- 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
- 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
- Convergence plot: Best and average feasible fitness over iterations
- Constraint violation history: Best solution's constraint violation count
- Optimal variables display: Bar chart of best d, D, P values
- Depth distribution: Stacked area chart of divers in each depth stage
- Feasibility pie chart: Final population feasibility percentage
- Parameter summary: Display of algorithm parameters and final results
- Constraint verification: Detailed check of all 4 constraints for best solution
Strengths of This Implementation
- Problem-specific adaptation: Operators tailored for 3-variable spring design space
- Robust constraint handling: High penalty ensures feasibility drive
- Balanced search: Five depth stages provide smooth exploration-exploitation transition
- Adaptive behavior: Parameters decay appropriately across search phases
- Elitism protection: Preserves best designs throughout optimization
- Comprehensive monitoring: Full tracking of algorithm state and performance
- 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 LinuxTag
Riconoscimenti
Ispirato da: SCUBA DIVER OPTIMIZATION ALGORITHM (SDOA), Scuba Diver Optimization Algorithm: Car Side Impact Design
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!Scopri Live Editor
Crea script con codice, output e testo formattato in un unico documento eseguibile.
| Versione | Pubblicato | Note della release | |
|---|---|---|---|
| 1.0.0 |
|
