Skip to main content

Modular DE

This work-in-progress repository contains the code used to create a modular version of differential evolution.

Basic use-case: L-SHADE

To instantiate L-SHADE using modDE and optimize a function (using iohexperimenter), the following code can be used:

from modularde import ModularDE
import ioh
import numpy as np

f = ioh.get_problem(23, 1, 5)
lshade = ModularDE(f, base_sampler='uniform', mutation_base='target', mutation_reference='pbest', bound_correction='expc_center', crossover='bin', lpsr=True, lambda_ = 18*5, memory_size = 6, use_archive=True, init_stats=True, adaptation_method_F='shade', adaptation_method_CR='shade')
lshade.run()

To perform a larger benchmark experiment which includes tracking of internal parameters, the following can be used (note that running the full experiment with detailed tracking will use a significant amount of storage):

class LSHADE_interface():
    def __init__(self, bound_corr):
        self.bound_corr = bound_corr
        self.lshade = None
        
    def __call__(self, f):
        self.lshade = ModularDE(f, base_sampler='uniform', mutation_base='target', mutation_reference='pbest', bound_correction = self.bound_corr, crossover='bin', lpsr=True, lambda_ = 18*f.meta_data.n_variables, memory_size = 6, use_archive=True, init_stats = True, adaptation_method_F='shade', adaptation_method_CR='shade')
        self.lshade.run()
        
    @property
    def F(self):
        if self.lshade is None:
            return 0
        return self.lshade.parameters.stats.curr_F
    
    @property
    def CR(self):
        if self.lshade is None:
            return 0
        return self.lshade.parameters.stats.curr_CR

    @property
    def CS(self):
        if self.lshade is None:
            return 0
        return self.lshade.parameters.stats.CS
    
    @property
    def ED(self):
        if self.lshade is None:
            return 0
        return self.lshade.parameters.stats.ED
    
    @property
    def cumulative_corrected(self):
        if self.lshade is None:
            return 0
        return self.lshade.parameters.stats.corr_so_far
    
    @property
    def corrected(self):
        if self.lshade is None:
            return 0
        return self.lshade.parameters.stats.corrected
        
obj = LSHADE_interface('saturate')

exp = ioh.Experiment(algorithm = obj, #Set the optimization algorithm
  fids = range(1,25), iids = [1,2,3,4,5], dims = [5,30], reps = 5, problem_type = 'Real', #Problem definitions
  njobs = 12, logger_triggers = [ioh.logger.trigger.ALWAYS],#Enable paralellization
  logged = True, folder_name = f'L-SHADE_sat', algorithm_name = f'L-SHADE', store_positions = True, #Logging specifications
  experiment_attributes = {'SDIS' : 'Saturate'}, logged_attributes = ['corrected', 'cumulative_corrected', 'F', 'CR', 'CS', 'ED'], #Attribute tracking
  merge_output = True, zip_output = True, remove_data = True #Only keep data as a single zip-file
)

exp()

The design of this package is heavily based on the Modular CMA-ES package: https://github.com/IOHprofiler/ModularCMAES

Metadata

Release files for modde 0.0.4

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for modde 0.0.4
File Size Uploaded
modde-0.0.4.tar.gz 18.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for modde 0.0.4
File Interpreter ABI Platform
modde-0.0.4-py3-none-any.whl Python 3 none any Details

Total release size: 40.6 kB

Release files / modde-0.0.4.tar.gz

Download URL modde-0.0.4.tar.gz
Size 18.9 kB
Tags Source
SHA-256 checksum
How to use checksums
95f8182038ae928d60318bc4e25a2aea118e01fb55d133d5fbca0a46cd144fbc
BLAKE2b-256 checksum
How to use checksums
e351d838db1e16ce8dcdc494a93f12b15dd72773c81f31233d6a34baecbfe87c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.0.0 CPython/3.11.8

Release files / modde-0.0.4-py3-none-any.whl

Download URL modde-0.0.4-py3-none-any.whl
Size 21.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
d1ca204b75076220e585f0009c8a5ac9c5ba4462c12f9f13667ea5d68004248b
BLAKE2b-256 checksum
How to use checksums
48e9cf52ed13c61880b4510a76a8e0fcf1fd5640129b0e8b5307293b8e48eebc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.0.0 CPython/3.11.8

Release history Release notifications | RSS feed

This release

0.0.4 This release

2 release files

0.0.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page