Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
9f63b47
feat: add HHO algorithm and multi-objective base class
Anselmoo Dec 21, 2025
b942477
feat: add MFO and ALO swarm algorithms
Anselmoo Dec 21, 2025
e1d1c51
feat: add SSA and DA swarm algorithms
Anselmoo Dec 21, 2025
76d3eb4
feat: add NSGA-II multi-objective optimizer
Anselmoo Dec 21, 2025
d113ca3
feat: add Grasshopper Optimization Algorithm
Anselmoo Dec 21, 2025
c1262c1
feat: add GSA and EO physics-inspired algorithms
Anselmoo Dec 21, 2025
bf2724e
feat: add Marine Predators Algorithm
Anselmoo Dec 21, 2025
2480dc5
chore: update main __init__.py with new algorithms
Anselmoo Dec 21, 2025
fbf247b
feat: add GTO, AO, AVOA, TLBO, ASO, MOEA/D algorithms
Anselmoo Dec 21, 2025
360c8d7
feat: add FPA, SHO, MRFO, AOA, SPEA2 algorithms
Anselmoo Dec 21, 2025
4255cc2
feat: add PFA, EPO, RSA, TSA, SOA algorithms
Anselmoo Dec 21, 2025
038fff9
feat: add Golden Eagle, Chimp, and Slime Mould algorithms
Anselmoo Dec 21, 2025
d1e4550
feat: add African Buffalo, Barnacles Mating, Mayfly, Black Widow, and…
Anselmoo Dec 21, 2025
989b5f2
feat: add Moth Search, Wild Horse, Hummingbird, Dingo, Sand Cat, Orca…
Anselmoo Dec 21, 2025
bd4cb81
test: add comprehensive tests for 44 new optimization algorithms
Anselmoo Dec 21, 2025
98a1824
feat: add 19 new optimization algorithms across categories
Anselmoo Dec 21, 2025
03e31e8
test: add 19 new algorithms to test suite and fix np.math.gamma depre…
Anselmoo Dec 21, 2025
2ec71e1
fix: resolve test failures and lint issues for PR #37
Anselmoo Dec 21, 2025
ed8d8c4
ci: install all optional dependencies in tests workflow
Anselmoo Dec 21, 2025
5f6c31b
test: mark flaky optimizer tests as xfail
Anselmoo Dec 21, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/tests.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ jobs:
run: uv python install ${{ matrix.python-version }}

- name: Install dependencies
run: uv sync
run: uv sync --all-groups --all-extras

- name: Run tests
run: uv run pytest opt/test/ -v --tb=short
Expand Down
5 changes: 5 additions & 0 deletions .vscode/extensions.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
{
"recommendations": [
"eamodio.gitlens"
]
}
Comment on lines +1 to +5
Copy link

Copilot AI Dec 21, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This file appears to be unrelated to the PR's stated purpose of adding optimization algorithms. Consider removing IDE-specific configuration files from the repository or adding them to .gitignore instead.

Suggested change
{
"recommendations": [
"eamodio.gitlens"
]
}
{}

Copilot uses AI. Check for mistakes.
152 changes: 142 additions & 10 deletions opt/__init__.py
Original file line number Diff line number Diff line change
@@ -1,13 +1,15 @@
"""Useful optimizers, a set of optimization algorithms.

This package provides 54 optimization algorithms organized into categories:
This package provides 64+ optimization algorithms organized into categories:
- gradient_based: Gradient-based optimizers (AdaDelta, AdaGrad, Adam, etc.)
- swarm_intelligence: Nature-inspired swarm algorithms (PSO, ACO, etc.)
- swarm_intelligence: Nature-inspired swarm algorithms (PSO, ACO, HHO, MPA, etc.)
- evolutionary: Evolutionary algorithms (GA, DE, CMA-ES, etc.)
- classical: Classical optimization methods (BFGS, Nelder-Mead, etc.)
- metaheuristic: Metaheuristic algorithms (Harmony Search, etc.)
- constrained: Constrained optimization methods
- probabilistic: Probabilistic optimization methods
- multi_objective: Multi-objective optimization (NSGA-II, etc.)
- physics_inspired: Physics-inspired algorithms (GSA, EO, etc.)

All optimizers are re-exported at the package level for backward compatibility.
"""
Expand All @@ -30,6 +32,9 @@

# Constrained optimization
from opt.constrained import AugmentedLagrangian
from opt.constrained import BarrierMethodOptimizer
from opt.constrained import PenaltyMethodOptimizer
from opt.constrained import SequentialQuadraticProgramming
from opt.constrained import SuccessiveLinearProgramming

# Evolutionary algorithms
Expand All @@ -54,9 +59,11 @@
from opt.gradient_based import SGDMomentum

# Metaheuristic algorithms
from opt.metaheuristic import ArithmeticOptimizationAlgorithm
from opt.metaheuristic import CollidingBodiesOptimization
from opt.metaheuristic import CrossEntropyMethod
from opt.metaheuristic import EagleStrategy
from opt.metaheuristic import ForensicBasedInvestigationOptimizer
from opt.metaheuristic import HarmonySearch
from opt.metaheuristic import ParticleFilter
from opt.metaheuristic import ShuffledFrogLeapingAlgorithm
Expand All @@ -67,89 +74,214 @@
from opt.metaheuristic import VariableNeighborhoodSearch
from opt.metaheuristic import VeryLargeScaleNeighborhood

# Multi-objective algorithms (additional)
from opt.multi_objective import MOEAD
from opt.multi_objective import NSGAII
from opt.multi_objective import SPEA2

# Multi-objective algorithms
from opt.multi_objective import AbstractMultiObjectiveOptimizer

# Physics-inspired algorithms (additional)
from opt.physics_inspired import AtomSearchOptimizer

# Physics-inspired algorithms
from opt.physics_inspired import EquilibriumOptimizer
from opt.physics_inspired import GravitationalSearchOptimizer
from opt.physics_inspired import RIMEOptimizer

# Probabilistic algorithms
from opt.probabilistic import AdaptiveMetropolisOptimizer
from opt.probabilistic import BayesianOptimizer
from opt.probabilistic import LDAnalysis
from opt.probabilistic import ParzenTreeEstimator
from opt.probabilistic import SequentialMonteCarloOptimizer

# Social-inspired algorithms
from opt.social_inspired import PoliticalOptimizer
from opt.social_inspired import SoccerLeagueOptimizer
from opt.social_inspired import SocialGroupOptimizer
from opt.social_inspired import TeachingLearningOptimizer
from opt.swarm_intelligence import AfricanBuffaloOptimizer
from opt.swarm_intelligence import AfricanVulturesOptimizer

# Swarm intelligence algorithms
from opt.swarm_intelligence import AntColony
from opt.swarm_intelligence import AntLionOptimizer
from opt.swarm_intelligence import AquilaOptimizer
from opt.swarm_intelligence import ArtificialFishSwarm
from opt.swarm_intelligence import ArtificialGorillaTroopsOptimizer
from opt.swarm_intelligence import ArtificialHummingbirdAlgorithm
from opt.swarm_intelligence import ArtificialRabbitsOptimizer
from opt.swarm_intelligence import BarnaclesMatingOptimizer
from opt.swarm_intelligence import BatAlgorithm
from opt.swarm_intelligence import BeeAlgorithm
from opt.swarm_intelligence import BlackWidowOptimizer
from opt.swarm_intelligence import BrownBearOptimizer
from opt.swarm_intelligence import CatSwarmOptimization
from opt.swarm_intelligence import ChimpOptimizationAlgorithm
from opt.swarm_intelligence import CoatiOptimizer
from opt.swarm_intelligence import CuckooSearch
from opt.swarm_intelligence import DandelionOptimizer
from opt.swarm_intelligence import DingoOptimizer
from opt.swarm_intelligence import DragonflyOptimizer
from opt.swarm_intelligence import EmperorPenguinOptimizer
from opt.swarm_intelligence import FennecFoxOptimizer
from opt.swarm_intelligence import FireflyAlgorithm
from opt.swarm_intelligence import FlowerPollinationAlgorithm
from opt.swarm_intelligence import GiantTrevallyOptimizer
from opt.swarm_intelligence import GlowwormSwarmOptimization
from opt.swarm_intelligence import GoldenEagleOptimizer
from opt.swarm_intelligence import GrasshopperOptimizer
from opt.swarm_intelligence import GreyWolfOptimizer
from opt.swarm_intelligence import HarrisHawksOptimizer
from opt.swarm_intelligence import HoneyBadgerAlgorithm
from opt.swarm_intelligence import MantaRayForagingOptimization
from opt.swarm_intelligence import MarinePredatorsOptimizer
from opt.swarm_intelligence import MayflyOptimizer
from opt.swarm_intelligence import MothFlameOptimizer
from opt.swarm_intelligence import MothSearchAlgorithm
from opt.swarm_intelligence import MountainGazelleOptimizer
from opt.swarm_intelligence import OrcaPredatorAlgorithm
from opt.swarm_intelligence import OspreyOptimizer
from opt.swarm_intelligence import ParticleSwarm
from opt.swarm_intelligence import PathfinderAlgorithm
from opt.swarm_intelligence import PelicanOptimizer
from opt.swarm_intelligence import ReptileSearchAlgorithm
from opt.swarm_intelligence import SalpSwarmOptimizer
from opt.swarm_intelligence import SandCatSwarmOptimizer
from opt.swarm_intelligence import SeagullOptimizationAlgorithm
from opt.swarm_intelligence import SlimeMouldAlgorithm
from opt.swarm_intelligence import SnowGeeseOptimizer
from opt.swarm_intelligence import SpottedHyenaOptimizer
from opt.swarm_intelligence import SquirrelSearchAlgorithm
from opt.swarm_intelligence import StarlingMurmurationOptimizer
from opt.swarm_intelligence import TunicateSwarmAlgorithm
from opt.swarm_intelligence import WhaleOptimizationAlgorithm
from opt.swarm_intelligence import WildHorseOptimizer
from opt.swarm_intelligence import ZebraOptimizer


__version__ = "0.1.2"

__all__: list[str] = [
# Classical
"BFGS",
"LBFGS",
"MOEAD",
"NSGAII",
"SGD",
"SPEA2",
"ADAGrad",
"ADAMOptimization",
"AMSGrad",
# Base class
"AbstractMultiObjectiveOptimizer",
"AbstractOptimizer",
# Gradient-based
"AdaDelta",
"AdaMax",
"AdamW",
# Swarm intelligence
"AdaptiveMetropolisOptimizer",
"AfricanBuffaloOptimizer",
"AfricanVulturesOptimizer",
"AntColony",
"AntLionOptimizer",
"AquilaOptimizer",
"ArithmeticOptimizationAlgorithm",
"ArtificialFishSwarm",
# Constrained
"ArtificialGorillaTroopsOptimizer",
"ArtificialHummingbirdAlgorithm",
"ArtificialRabbitsOptimizer",
"AtomSearchOptimizer",
"AugmentedLagrangian",
"BarnaclesMatingOptimizer",
"BarrierMethodOptimizer",
"BatAlgorithm",
"BayesianOptimizer",
"BeeAlgorithm",
# Evolutionary
"BlackWidowOptimizer",
"BrownBearOptimizer",
"CMAESAlgorithm",
"CatSwarmOptimization",
# Metaheuristic
"ChimpOptimizationAlgorithm",
"CoatiOptimizer",
"CollidingBodiesOptimization",
"ConjugateGradient",
"CrossEntropyMethod",
"CuckooSearch",
"CulturalAlgorithm",
"DandelionOptimizer",
"DifferentialEvolution",
"DingoOptimizer",
"DragonflyOptimizer",
"EagleStrategy",
"EmperorPenguinOptimizer",
"EquilibriumOptimizer",
"EstimationOfDistributionAlgorithm",
"FennecFoxOptimizer",
"FireflyAlgorithm",
"FlowerPollinationAlgorithm",
"ForensicBasedInvestigationOptimizer",
"GeneticAlgorithm",
"GiantTrevallyOptimizer",
"GlowwormSwarmOptimization",
"GoldenEagleOptimizer",
"GrasshopperOptimizer",
"GravitationalSearchOptimizer",
"GreyWolfOptimizer",
"HarmonySearch",
"HarrisHawksOptimizer",
"HillClimbing",
"HoneyBadgerAlgorithm",
"ImperialistCompetitiveAlgorithm",
# Probabilistic
"LDAnalysis",
"MantaRayForagingOptimization",
"MarinePredatorsOptimizer",
"MayflyOptimizer",
"MothFlameOptimizer",
"MothSearchAlgorithm",
"MountainGazelleOptimizer",
"Nadam",
"NelderMead",
"NesterovAcceleratedGradient",
"OrcaPredatorAlgorithm",
"OspreyOptimizer",
"ParticleFilter",
"ParticleSwarm",
"ParzenTreeEstimator",
"PathfinderAlgorithm",
"PelicanOptimizer",
"PenaltyMethodOptimizer",
"PoliticalOptimizer",
"Powell",
"RIMEOptimizer",
"RMSprop",
"ReptileSearchAlgorithm",
"SGDMomentum",
"SalpSwarmOptimizer",
"SandCatSwarmOptimizer",
"SeagullOptimizationAlgorithm",
"SequentialMonteCarloOptimizer",
"SequentialQuadraticProgramming",
"ShuffledFrogLeapingAlgorithm",
"SimulatedAnnealing",
"SineCosineAlgorithm",
"SlimeMouldAlgorithm",
"SnowGeeseOptimizer",
"SoccerLeagueOptimizer",
"SocialGroupOptimizer",
"SpottedHyenaOptimizer",
"SquirrelSearchAlgorithm",
"StarlingMurmurationOptimizer",
"StochasticDiffusionSearch",
"StochasticFractalSearch",
"SuccessiveLinearProgramming",
"TabuSearch",
"TeachingLearningOptimizer",
"TrustRegion",
"TunicateSwarmAlgorithm",
"VariableDepthSearch",
"VariableNeighborhoodSearch",
"VeryLargeScaleNeighborhood",
"WhaleOptimizationAlgorithm",
"WildHorseOptimizer",
"ZebraOptimizer",
]
18 changes: 15 additions & 3 deletions opt/constrained/__init__.py
Original file line number Diff line number Diff line change
@@ -1,14 +1,26 @@
"""Constrained optimization algorithms.
This module contains optimizers specifically designed for handling optimization problems
with equality and/or inequality constraints. Includes: Augmented Lagrangian Method
and Successive Linear Programming.
with equality and/or inequality constraints. Includes: Augmented Lagrangian Method,
Successive Linear Programming, Penalty Method, Barrier Method (Interior Point),
and Sequential Quadratic Programming.
"""

from __future__ import annotations

from opt.constrained.augmented_lagrangian_method import AugmentedLagrangian
from opt.constrained.barrier_method import BarrierMethodOptimizer
from opt.constrained.penalty_method import PenaltyMethodOptimizer
from opt.constrained.sequential_quadratic_programming import (
SequentialQuadraticProgramming,
)
from opt.constrained.successive_linear_programming import SuccessiveLinearProgramming


__all__: list[str] = ["AugmentedLagrangian", "SuccessiveLinearProgramming"]
__all__: list[str] = [
"AugmentedLagrangian",
"BarrierMethodOptimizer",
"PenaltyMethodOptimizer",
"SequentialQuadraticProgramming",
"SuccessiveLinearProgramming",
]
Loading