The `SearcherType`

enum represents different types of available searching algorithms. To
set a searcher in the model is **mandatory**.

## Searchers

**SearcherType(Enum)**:

Represents different types of search algorithms.

**Enum Members**:

`DFS (str)`

: Depth-First Search algorithm.`BAB (str)`

: Branch and Bound algorithm.`LDS (str)`

: Limited Discrepancy Search algorithm.`PBS (str)`

: Portfolio-Based Search algorithm.`RBS (str)`

: Restart-Based Search algorithm.

**Example**:

```
my_model = Modeller()
my_model.set_searcher(SearcherType.LDS) # Represents "Limited Discrepancy Search"
```

## Cutoff

The Cutoff module provides a set of classes for defining various optimization cutoff conditions. These cutoff conditions help control the termination of search algorithms based on predefined criteria. The module also includes meta-cutoff classes that allow users to combine and manipulate different cutoff conditions to create more complex termination strategies.

## Cutoff Classes

### CutoffConstant

Represents a constant optimization cutoff condition.

**Parameters**:

`constant_value`

(int): The constant value for the cutoff.

### CutoffFibonacci

Represents a Fibonacci optimization cutoff condition. Methods

### CutoffGeometric

Represents a geometric progression optimization cutoff condition.

**Parameters**:

`base`

(float): The base value of the geometric progression.`scale`

(int): The scale value of the geometric progression.

### CutoffLuby

Represents a Luby sequence optimization cutoff condition.

**Parameters**:

`scale`

(int): The scaling factor for the Luby sequence.

### CutoffLinear

Represents a linear optimization cutoff condition.

**Parameters**:

`scale`

(int): The scaling factor for the linear cutoff.

### CutoffRandom

Represents a random optimization cutoff condition.

**Parameters**:

`seed`

(int): The seed value for the random number generator.`minimum`

(int): The minimum cutoff value.`maximum`

(int): The maximum cutoff value.`round_value`

(int): The value to round the cutoff to.

## Meta-Cutoff Classes

### MetaCutoffAppender

Represents a meta-cutoff that appends two different cutoff conditions.

**Parameters**:

`first_cutoff`

(Cutoff): The first cutoff condition.`number_from_first`

(int): The number of solutions from the first cutoff to append.`second_cutoff`

(Cutoff): The second cutoff condition.

### MetaCutoffMerger

Represents a meta-cutoff that merges two different cutoff conditions.

**Parameters**:

`first_cutoff`

(Cutoff): The first cutoff condition.`second_cutoff`

(Cutoff): The second cutoff condition.

### MetaCutoffRepeater

Represents a meta-cutoff that repeats a sub-cutoff condition multiple times.

**Parameters**:

`sub_cutoff`

(Cutoff): The sub-cutoff condition to be repeated.`repeat`

(int): The number of times to repeat the sub-cutoff.