# RealStarDiscrepancy#

class ioh.iohcpp.problem.RealStarDiscrepancy(self: ioh.iohcpp.problem.RealStarDiscrepancy, instance: int = 1, n_variables: int = 5, n_samples: int = 5, sampler_type: ioh.iohcpp.problem.StarDiscrepancySampler = <StarDiscrepancySampler.UNIFORM: 0>)#

Star-discrepancy problems

The 𝐿_infinity star discrepancy is a measure for the regularity of a finite set of points taken from [0, 1)^d. Calculating this measure is challenging, and exact algorithm fall short even for relatively small grids. This suite provides access to a set of these problems to tackle the problem from an optimization perspective.

There are two equivalent representations for these problems: Integer-based and Real-valued.

For the Real-valued, the goal is to find the a point in [0,1)^d which minimizes the resulting discepancy directly.

The Integer-valued version takes advantage of the fact that for each dimension, the optimium has a value matching an existing point int the grid. As such, the search for a point in the grid can be reduced to finding in each dimension the index of the coordinate, resulting in a search domain [0,n]^d, where n is the number of gridpoints.

[Clement23] Clement, Francois, Diederick Vermetten, Jacob de Nobel, Alexandre Jesus, Luís Paquete, and Carola Doerr. “Computing Star Discrepancies with Numerical Black-Box Optimization Algorithms.”

Star Discrepancy Problems

Parameters:
• instance (int = 1) – The instance of the problem, will be used as seed for sampler

• n_variables (int = 5) – The dimension of the problem

• n_samples (int = 5) – The number of sampled points

• sampler_type (StarDiscrepancySampler) – The type of sampler to use when sampling the points

Attributes Summary

 `bounds` The bounds of the problem. `constraints` The constraints of the problem. `grid` `log_info` The data is that being sent to the logger. `meta_data` The static meta-data of the problem containing, e.g., problem id, instance id, and problem's dimensionality `optimum` The optimum and its objective value for a problem instance `problems` `state` The current state of the optimization process containing, e.g., the current solution and the number of function evaluated consumed so far

Methods Summary

 `__call__` Evaluate the problem. `add_constraint` add a constraint `attach_logger` Attach a logger to the problem to allow performance tracking. `create`(*args, **kwargs) Overloaded function. `detach_logger` Remove the specified logger from the problem. `enforce_bounds` Enforced the bounds (box-constraints) as constraint :param weight: :type weight: The weight for computing the penalty (can be infinity to have strict box-constraints) :param how: :type how: The enforcement strategy, should be one of the 'ioh.ConstraintEnforcement' options :param exponent: :type exponent: The exponent for scaling the contraint `remove_constraint` remove a constraint `reset` Reset all state variables of the problem.

Attributes Documentation

bounds#

The bounds of the problem.

constraints#

The constraints of the problem.

grid#
log_info#

The data is that being sent to the logger.

meta_data#

The static meta-data of the problem containing, e.g., problem id, instance id, and problem’s dimensionality

optimum#

The optimum and its objective value for a problem instance

problems#
state#

The current state of the optimization process containing, e.g., the current solution and the number of function evaluated consumed so far

Methods Documentation

__call__()#

Evaluate the problem.

Parameters:

x (list) – the search point to evaluate. It must be a 1-dimensional array/list whose length matches search space’s dimensionality

Returns:

The evaluated search point

Return type:

float

Evaluate the problem.

Parameters:

x (list[list]) – the search points to evaluate. It must be a 2-dimensional array/list whose length matches search space’s dimensionality

Returns:

The evaluated search points

Return type:

list[float]

attach_logger()#

Attach a logger to the problem to allow performance tracking.

Parameters:

logger (Logger) – A logger-object from the IOHexperimenter logger module.

static create(*args, **kwargs)#

1. create(problem_name: str, instance_id: int, dimension: int) -> ioh.iohcpp.problem.RealStarDiscrepancy

Create a problem instance

problem_name: str

a string indicating the problem name.

instance_id: int

an integer identifier of the problem instance

dimension: int

the dimensionality of the search space

2. create(problem_id: int, instance_id: int, dimension: int) -> ioh.iohcpp.problem.RealStarDiscrepancy

Create a problem instance

problem_name: int

a string indicating the problem name.

instance_id: int

an integer identifier of the problem instance

dimension: int

the dimensionality of the search space

detach_logger()#

Remove the specified logger from the problem.

enforce_bounds()#

Enforced the bounds (box-constraints) as constraint :param weight: :type weight: The weight for computing the penalty (can be infinity to have strict box-constraints) :param how: :type how: The enforcement strategy, should be one of the ‘ioh.ConstraintEnforcement’ options :param exponent: :type exponent: The exponent for scaling the contraint

remove_constraint()#

remove a constraint

reset()#

Reset all state variables of the problem.