# Cost function¶

When solving a variational method, the quantum state is computed by
imposing constraints on properties of the spin state set by
`target_molecule`

and number of electrons. Specifically, it is useful
in the following situations

To impose a constraint on the ground/excited state of a molecule that conserves the number of electrons

To find the energy level of an excited state with a specific spin quantum number

To find the excited states that are orthogonal to all the eigenstates in the lower energy levels

## Type¶

The following methods are available:

*NONE*: No additional cost function except energy term (Default)*SIMPLE*: Use the cost function defined as below

As shown in the following equation, we add the penalty term \(\mathcal{L}_{\mathrm{penalty}}\) to the cost function to impose a constraint on the spin quantum number and the number of electrons in the quantum state.

where \(w_i\) is weight and \(\hat{O}_i\) is an observable that is constrained by the penalty term to be \(o_i\).

## Common options¶

When you one of the following `solver`

:

*VQE**SSVQE**MCVQE**VQD*

you can specify the following options in common.

`s2_number_weight`

: the weight \(w_i\) given to the constraint for \(\langle{S}^2\rangle\)`sz_number_weight`

: the weight \(w_i\) given to the constraint for \(\langle{S}_z\rangle\)`particle_number_weight`

: the weight \(w_i\) given to the constraint for the number of electrons \(\langle \hat{N}_{tot} \rangle\).

## Input example¶

```
"cost_function": {
"type": "SIMPLE",
"s2_number_weight": 10,
"sz_number_weight": 10,
"particle_number_weight": 10
}
```

## SSVQE options¶

Options when *SSVQE* is selected with `solver`

:

`SSVQE_weights`

This is the weight \(w_i\) in the cost function of SSVQE algorithm \(\mathcal{L}_{\mathrm{energies}}\). ({\(|\psi_0(\vec{\theta})\rangle, ..., |\psi_{k-1}(\vec{\theta})\rangle\)} are orthogonal quantum states here)

## Input example¶

```
"cost_function": {
"type": "SIMPLE",
"SSVQE_weights": [4.0, 1.0]
}
```

## VQD options¶

Options available when *VQD* is selected as a `solver`

:

One of the following fields must be set:

`overlap_weights`

`overlap_weight`

Weights \(w_i\) in the penalty term for wave function overlaps \(\mathcal{L}_{\mathrm{overlap}}\) added to VQD algorithm cost function (\(\psi_{i}(\vec{\theta_i}\)) is an eigenstate on a level lower than \(k\)’)

`overlap_weights`

must be given as a list of values of the same size
as the number of excited states, while `overlap_weight`

must be given
as a single value, in which case the weight of the each overlap penalty
term is given the same value.

## Input example¶

```
"cost_function": {
"type": "SIMPLE",
"overlap_weights": [4.0, 1.0]
}
```

```
"cost_function": {
"type": "SIMPLE",
"overlap_weight": 4.0
}
```