Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix broken links in doc #1072

Merged
merged 5 commits into from
Jul 2, 2024
Merged
Show file tree
Hide file tree
Changes from 4 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion docs/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ They are published on https://powsybl.readthedocs.org/projects/openrao and pull

### Readthedocs & Sphinx
The website is hosted on [readthedocs](https://readthedocs.org/). The build workflow requires a configuration file:
[.readthedocs.yml](./.readthedocs.yml). This platform presents many advantages,
[.readthedocs.yml](./.readthedocs.yaml). This platform presents many advantages,
thanks to its workflow of automatic branch/tag building & publication:
- Multiple versions are activated: you can browse different versions of the documentation for different releases of OpenRAO
- Pull requests are built automatically and the build status is reported in the PR's checks (["Build documentation" workflow](../.github/workflows/build_doc.yml)).
Expand Down
18 changes: 9 additions & 9 deletions docs/castor.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ Unlike purely linear optimisation, a search-tree algorithm does not neglect the

So far, the search-tree algorithm has proved for many years its relevance and efficiency on current daily operational processes on CWE, Northern Italy and SWE Capacity calculation.

For each topological remedial action applied, the search-tree will systematically optimise PST taps & HVDC setpoints by applying a [linear optimisation](/castor/linear-problem/linear-rao.md). By considering both topological remedial actions and linear remedial actions at every step, instead of considering only one after the other, CASTOR's results are optimal.
For each topological remedial action applied, the search-tree will systematically optimise PST taps & HVDC setpoints by applying a [linear optimisation](./castor/linear-problem.md). By considering both topological remedial actions and linear remedial actions at every step, instead of considering only one after the other, CASTOR's results are optimal.

The optimisation problem is a non-convex and non-linear one, dealing with topology changes on the network, which represent discrete actions by definition. The problem treated by the optimiser is a combinatorial problem. Search-tree algorithms are commonly used for high complexity mathematical problems, containing combinatorial and discrete aspects.

Expand All @@ -26,7 +26,7 @@ Some remedial actions such as PSTs & HVDCs are treated via a linear optimisation

A search-tree algorithm will optimise all couples of critical branches and critical outages to define a set of remedial actions covering all these network states. This limits the impact of net position forecasts, which are highly uncertain because of the uncertainty in the power generation forecasts (renewables, unforeseeable events...).

For example, let’s assume there that is no available preventive remedial action (for simplicity) and focus on the [CNEC](/input-data/crac/introduction.md#cnec) with the minimum relative margin (let's call it CNE1C1).
For example, let’s assume there that is no available preventive remedial action (for simplicity) and focus on the [CNEC](./input-data/crac.md#cnec) with the minimum relative margin (let's call it CNE1C1).
The optimiser will search for a curative remedial action increasing margin of CNE1C1. However, considering only CNE1C1 could be relevant if, and only if, the net position forecast is highly reliable and accurate. As stated before, this could not be acceptable for the security of the system. That is why the search tree will also identify optimised remedial actions for CNE1C2, CNE1C3…

## Remedial actions considered
Expand All @@ -40,7 +40,7 @@ For Capacity calculation processes, CASTOR considers the following remedial acti

The impact of some types of remedial actions on flows could be considered to be linear: optimisation of HVDC setpoints and optimisation of generation unit setpoints. In addition to these, CASTOR also considers phase shifter transformers as linear remedial actions.[^1]

[^1]: CASTOR offers different approximation levels for modelling PSTs. See [the relevant RAO parameter](/parameters/parameters.md#pst-model) for more information.
[^1]: CASTOR offers different approximation levels for modelling PSTs. See [the relevant RAO parameter](parameters.md#pst-model) for more information.

A phase shifter transformer (PST) is defined by its range of acceptable tap settings.
This acceptable tap setting can be defined by three different ways:
Expand All @@ -62,7 +62,7 @@ As a matter of clarification, connecting/disconnecting a generation unit can als
### For Flow-based Capacity calculation – minimum margin

The objective function is used to determine at each step of the search tree which remedial action is the best.
A variant of it is also used when solving the [linear optimisation problem](/castor/linear-problem/linear-rao.md).
A variant of it is also used when solving the [linear optimisation problem](./castor/linear-problem.md).

The active flow $F_i$ on a CNEC $i$ is:

Expand Down Expand Up @@ -116,7 +116,7 @@ This algorithm acts on sets of states that share common remedial actions, also c

The main inputs of the algorithm are:
- the [network](/input-data/network.md) at the root of the perimeter,
- an extract of the original [CRAC](/input-data/crac/introduction.md), containing only the remedial actions that are available in the given perimeter (filtered on usage rules).
- an extract of the original [CRAC](./input-data/crac.md), containing only the remedial actions that are available in the given perimeter (filtered on usage rules).

## Stop criterion

Expand All @@ -129,9 +129,9 @@ As mentioned above, for NTC Capacity calculation/ CEP Validation, this stop crit

These stop criteria only make sense for a minimum margin objective function (may it be absolute or relative).

On both stop criteria, [additional constraints](/parameters/parameters.md#network-actions-optimisation-parameters) can be added, for example:
- the maximal number of consecutive chosen network actions, also called search tree depth (for [preventive](/parameters/parameters.md#max-preventive-search-tree-depth), [auto](/parameters/parameters.md#max-auto-search-tree-depth) and [curative](/parameters/parameters.md#max-curative-search-tree-depth) search trees),
- the [minimal relative gain](/parameters/parameters.md#relative-minimum-impact-threshold) of objective function between two consecutive network actions (i.e. between two search tree depths).
On both stop criteria, [additional constraints](parameters.md#network-actions-optimisation-parameters) can be added, for example:
- the maximal number of consecutive chosen network actions, also called search tree depth (for [preventive](parameters.md#max-preventive-search-tree-depth), [auto](parameters.md#max-auto-search-tree-depth) and [curative](parameters.md#max-curative-search-tree-depth) search trees),
- the [minimal relative gain](parameters.md#relative-minimum-impact-threshold) of objective function between two consecutive network actions (i.e. between two search tree depths).

## Algorithm

Expand All @@ -140,7 +140,7 @@ On both stop criteria, [additional constraints](/parameters/parameters.md#networ
For each iteration/step (a level of depth in tree):
- Determination of available remedial actions.
- Once the list of available remedial actions is defined, candidates are created. Each candidate corresponds to a grid situation, where one (or more) remedial actions are applied.
- A skippable [optimisation of the linear remedial](/castor/linear-problem/linear-rao.md) actions is done.
- A skippable [optimisation of the linear remedial](./castor/linear-problem.md) actions is done.
- A security analysis determines for each candidate the value of the objective function. The security analysis consists of a series of DC (or AC) load-flow computations (for each defined contingency).
- In order to maximise the objective function, values obtained for each candidate are compared: the candidate leading to the best increase of objective function value is selected. The remedial actions corresponding to this candidate are applied.

Expand Down
2 changes: 1 addition & 1 deletion docs/castor/applications.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# Operational applications

Many operational applications involve optimising remedial actions for critical network elements; and these applications often need to achieve different goals.
The OpenRAO Toolbox can be used in a variety of cases thanks to the large scope of features it covers; its behaviour can be tuned using [configuration parameters](/parameters/parameters.md).
The OpenRAO Toolbox can be used in a variety of cases thanks to the large scope of features it covers; its behaviour can be tuned using [configuration parameters](/parameters.md).

You can find examples of usages for OpenRAO below.

Expand Down
8 changes: 4 additions & 4 deletions docs/castor/linear-problem.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,13 +23,13 @@ of the remedial actions on the network flows with linear sensitivity coefficient
It therefore solves linear optimisation problems to find the optimal set-points for the remedial actions.
Moreover, it can iterate over several reference points in order to mitigate the linear approximation inherent to its optimisation problem.

In particular, the Linear RAO module is used in [CASTOR](/castor/search-tree-rao.md).
In particular, the Linear RAO module is used in [CASTOR](/castor.md#algorithm).

## Inputs

The main inputs of the algorithm are:
- the network of the "initial situation", where the remedial actions are supposed to be at their "initial position",
- an extract of the original [CRAC](/input-data/crac/introduction.md), containing only the range actions to be optimised.
- an extract of the original [CRAC](/input-data/crac.md), containing only the range actions to be optimised.

## Outputs

Expand All @@ -54,7 +54,7 @@ CASTOR can be configured to define groups of "aligned" LRAs whose taps should be

### Minimum impact of a LRA in the linear optimisation

In order to control the usage of LRAs in the optimisation, it is possible to set a constraint in the optimisation problem: the change in set-point value of one particular LRA should not have an impact on the objective function smaller than a configurable value (see [pst-sensitivity-threshold](/parameters/parameters.md#pst-sensitivity-threshold), [hvdc-sensitivity-threshold](/parameters/parameters.md#hvdc-sensitivity-threshold), and [injection-ra-sensitivity-threshold](/parameters/parameters.md#injection-ra-sensitivity-threshold)).
In order to control the usage of LRAs in the optimisation, it is possible to set a constraint in the optimisation problem: the change in set-point value of one particular LRA should not have an impact on the objective function smaller than a configurable value (see [pst-sensitivity-threshold](/parameters.md#pst-sensitivity-threshold), [hvdc-sensitivity-threshold](/parameters.md#hvdc-sensitivity-threshold), and [injection-ra-sensitivity-threshold](/parameters.md#injection-ra-sensitivity-threshold)).

When computing the LRA sensitivities, only the ones which are higher than these parameters are considered and the others are considered zero. This allows us to filter out the PSTs which don't have a big enough impact on the CNECs.

Expand All @@ -64,7 +64,7 @@ $$\begin{equation}
\max MM - \sum_{lra \in \mathcal{LRA}} \Delta_{lra} c^{LRA}
\end{equation}$$

with $MM$ the minimum margin, $\mathcal{LRA}$ the set of LRAs, $\Delta_{lra}$ the variation of setpoint of the LRA $lra$, and $c^{LRA}$ the penalty cost (see [pst-penalty-cost](/parameters/parameters.md#pst-penalty-cost), [hvdc-penalty-cost](/parameters/parameters.md#hvdc-penalty-cost), and [injection-ra-penalty-cost](/parameters/parameters.md#injection-ra-penalty-cost)).
with $MM$ the minimum margin, $\mathcal{LRA}$ the set of LRAs, $\Delta_{lra}$ the variation of setpoint of the LRA $lra$, and $c^{LRA}$ the penalty cost (see [pst-penalty-cost](/parameters.md#pst-penalty-cost), [hvdc-penalty-cost](/parameters.md#hvdc-penalty-cost), and [injection-ra-penalty-cost](/parameters.md#injection-ra-penalty-cost)).

This way, if two solutions provide (almost) the same minimum margin, the problem will favor the one that changes the setpoints the
least.
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@

| Name | Details |
|--------------------------------------------------|--------------------------------------------------------------------|
| [pst-model](/parameters/parameters.md#pst-model) | This filler is used only if this parameters is set to *CONTINUOUS* |
| [pst-model](/parameters.md#pst-model) | This filler is used only if this parameters is set to *CONTINUOUS* |

## Defined optimization variables

Expand Down
13 changes: 8 additions & 5 deletions docs/castor/linear-problem/core-problem-filler.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,10 +18,10 @@

## Used parameters

| Name | Symbol | Details | Source |
|----------------------|--------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| sensitivityThreshold | | Set to zero the sensitivities of RangeActions below this threshold; thus avoiding the activation of RangeActions which have too small an impact on the flows (can also be achieved with penaltyCost). This simplifies & speeds up the resolution of the optimization problem (can be necessary when the problem contains integer variables). However, it also adds an approximation in the computation of the flows within the MILP, which can be tricky to handle when the MILP contains hard constraints on loop-flows or monitored FlowCnecs. | Equal to [pst-sensitivity-threshold](/parameters/parameters.md#pst-sensitivity-threshold) for PSTs, [hvdc-sensitivity-threshold](/parameters/parameters.md#hvdc-sensitivity-threshold) for HVDCs, and [injection-ra-sensitivity-threshold](/parameters/parameters.md#injection-ra-sensitivity-threshold) for injection range actions |
| penaltyCost | $c^{penalty}_{ra}$ | Supposedly a small penalization, in the use of the RangeActions. When several solutions are equivalent, this favours the one with the least change in the RangeActions' setpoints (compared to the initial situation). It also avoids the activation of RangeActions which have to small an impact on the objective function. | Equal to [pst-penalty-cost](/parameters/parameters.md#pst-penalty-cost) for PSTs, [hvdc-penalty-cost](/parameters/parameters.md#hvdc-penalty-cost) for HVDCs, and [injection-ra-penalty-cost](/parameters/parameters.md#injection-ra-penalty-cost) for injection range actions |
| Name | Symbol | Details | Source |
|----------------------|--------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| sensitivityThreshold | | Set to zero the sensitivities of RangeActions below this threshold; thus avoiding the activation of RangeActions which have too small an impact on the flows (can also be achieved with penaltyCost). This simplifies & speeds up the resolution of the optimization problem (can be necessary when the problem contains integer variables). However, it also adds an approximation in the computation of the flows within the MILP, which can be tricky to handle when the MILP contains hard constraints on loop-flows or monitored FlowCnecs. | Equal to [pst-sensitivity-threshold](/parameters.md#pst-sensitivity-threshold) for PSTs, [hvdc-sensitivity-threshold](/parameters.md#hvdc-sensitivity-threshold) for HVDCs, and [injection-ra-sensitivity-threshold](/parameters.md#injection-ra-sensitivity-threshold) for injection range actions |
| penaltyCost | $c^{penalty}_{ra}$ | Supposedly a small penalization, in the use of the RangeActions. When several solutions are equivalent, this favours the one with the least change in the RangeActions' setpoints (compared to the initial situation). It also avoids the activation of RangeActions which have to small an impact on the objective function. | Equal to [pst-penalty-cost](/parameters.md#pst-penalty-cost) for PSTs, [hvdc-penalty-cost](/parameters.md#hvdc-penalty-cost) for HVDCs, and [injection-ra-penalty-cost](/parameters.md#injection-ra-penalty-cost) for injection range actions |

## Defined optimization variables

Expand Down Expand Up @@ -67,12 +67,15 @@ $$
with $A(r,s')$ the setpoint of the last range action on the same element as $r$ but a state preceding $s$. If none such
range actions exists, then $A(r,s') = \alpha_{0}(r)$

### Definition of the relative setpoint variations of the RangeActions
This constraint writing depends on the pst modelization (see )
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think you forgot the link here

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It's a leftover of another PR and has nothing to do here, i'll remove this.



<br>

### Shrinking the allowed range

If parameter [ra-range-shrinking](/parameters/parameters.md#ra-range-shrinking) is enabled, the allowed range for range actions
If parameter [ra-range-shrinking](/parameters.md#ra-range-shrinking) is enabled, the allowed range for range actions
is shrunk after each iteration according to the following constraints:

$$
Expand Down
Loading
Loading