# tabuSearchResult

Result of `solve` for Tabu search algorithm

Since R2023a

Installation Required: This functionality requires MATLAB Support Package for Quantum Computing.

## Description

The properties of the `tabuSearchResult` object give information about the solution process that Tabu search performed to solve a QUBO problem. `solve` calls `tabuSearch` to solve a QUBO problem. The resulting solution is a `quboResult` object, which in turn contains a `tabuSearchResult` object.

## Properties

expand all

Objective function values returned from calls to simple Tabu search, returned as a real vector. The objective function values are for the elements of `AllX`.

Solutions returned from calls to simple Tabu search, returned as a real matrix. Each column of the matrix represents one potential solution. The associated objective function value is in the corresponding entry of `AllFunctionValues`.

Smallest objective function value found, returned as a real scalar. `BestFunctionValue` is the smallest entry in `AllFunctionValues`.

Solution with smallest objective function value, returned as a real vector. `BestX` corresponds to an entry in `AllX` with the smallest objective function value.

Time the algorithm runs in seconds, returned as a real scalar. `ClockTime` is measured internally using `tic` and `toc`.

Maximum time in seconds observed between improvements, returned as a real scalar. The algorithm measures time between improvements (decreases) in the objective function value, and reports the maximum of these times.

Reason the algorithm stopped, returned as a character vector.

Number of Tabu search calls, returned as a positive integer.

Number of iterations in each call to simple Tabu search, returned as a vector of nonnegative integers

First time the best objective function value was encountered in seconds, returned as a positive scalar.

## Examples

collapse all

Create and solve a QUBO problem.

```Q = [0 -1 2;... -1 0 4;... 2 4 0]; c = [-5 6 -4]; d = 12; qprob = qubo(Q,c,d); result = solve(qprob)```
```result = quboResult with properties: BestX: [3×1 double] BestFunctionValue: 7 AlgorithmResult: [1×1 tabuSearchResult]```

Examine the `AlgorithmResult` portion of `result`.

`result.AlgorithmResult`
```ans = tabuSearchResult with properties: AllX: [3×2 double] AllFunctionValues: [18 7] BestX: [3×1 double] BestFunctionValue: 7 TimeFirstBest: 0.010143 sec TabuIterations: [309 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 301 … ] (1×3335 double) NumTabuSearchCalls: 3335 Message: 'TabuSearch stopped because MaxStallTime is exceeded.' LongestStallTime: 0.50001 sec ClockTime: 0.51016 sec```

## Algorithms

The tabu search algorithm is based on Palubeckis [1]. Starting from a random binary vector, the software repeatedly attempts to find a binary vector with a lower objective function value by switching some existing values from 1 to 0 or from 0 to 1. The software tries to avoid cycling, or the repeated evaluation of the same point, by using a tabu list. For details, see Tabu Search Algorithm.

## References

[1] Palubeckis, G. Iterated Tabu Search for the Unconstrained Binary Quadratic Optimization Problem. Informatica (2006), 17(2), pp. 279–296. Available at https://citeseerx.ist.psu.edu/document?repid=rep1&type=pdf&doi=3c323a1d41cd0e2ca1ddb27192e475ea73959e52.

## Version History

Introduced in R2023a