+
+# SimPaths
+
+
Open-source dynamic microsimulation for life course modelling — projecting careers, families, health, and finances across populations.
+
+
+ ✓ Open Source
+ 🌍 5 Countries
+ ☕ Java / JAS-mine
+ 🔬 UKRI HealthMod
+
+
+
+
+
+
+---
+
+## About SimPaths
+
+SimPaths builds upon **JAS-mine**, an open-source Java platform designed for discrete-event simulations. Models currently exist for the **UK, Greece, Hungary, Italy, and Poland**.
+
+
+
+
+🗺
+
+### Overview
+
+What SimPaths models and why — architecture, modules, parameterisation, and country variants.
+
+[Explore Overview →](overview/)
+
+
+
+▶
+
+### Getting Started
+
+Set up your environment, load input data, and run your first simulation in minutes.
+
+[Get Started →](getting-started/)
+
+
+
+⚙
+
+### User Guide
+
+Single and multi-run simulations, the graphical interface, parameter editing, and uncertainty analysis.
+
+[View User Guide →](user-guide/)
+
+
+
+💻
+
+### Developer Guide
+
+JAS-mine architecture, SimPaths internals, and step-by-step how-to guides for extending the model.
+
+[Developer Guide →](developer-guide/)
+
+
+
+📚
+
+### JAS-mine Reference
+
+Statistical packages, alignment and matching libraries, regression tools, and database utilities.
+
+[JAS-mine Reference →](jasmine-reference/)
+
+
+
+📊
+
+### Research & Validation
+
+Published papers, working papers, and model validation results.
+
+[Research →](research/)
+
+
+
+
+---
+
+!!! tip "New to SimPaths?"
+ Start with the [Overview](overview/) to understand what the model does, then follow the [Getting Started](getting-started/) guide to run your first simulation.
+
+For papers using SimPaths, see the [Research](research/) page. For European country variants, visit the [SimPathsEU](https://github.com/centreformicrosimulation/SimPaths) repository.
diff --git a/documentation/wiki/jasmine-reference/alignment-library.md b/documentation/wiki/jasmine-reference/alignment-library.md
new file mode 100644
index 000000000..03298a663
--- /dev/null
+++ b/documentation/wiki/jasmine-reference/alignment-library.md
@@ -0,0 +1,170 @@
+# The JAS-mine Alignment Library
+
+Alignment is a technique widely used in (dynamic) microsimulation modelling to ensure that the simulated totals conform to some exogenously specified targets, or aggregate projections (Baekgaard, 2002; Klevmarken, 2002, Li and O’Donoghue, 2014). Alignment is a way to incorporate additional information which is not available in the estimation data. The underlying assumption is that the microsimulation model is a poor(er) model of the aggregate, but a good model of individual heterogeneity: by forcing the microsimulation outcomes to match the targets in a way that is as least distortive as possible, the microsimulation model is left with the task of distributing the totals in the population. In general, the above assumption is very dangerous and unwarranted, and alignment should be looked at with great suspicion.
+
+One important thing to note is that the processes to be aligned are executed at an individual level, while alignment always takes place at the population level. That is, individual outcomes or probabilities are determined for each individual based on the chosen econometric specification and the estimated coefficients. This in general leads to a mismatch between the simulated (provisional) totals and the aggregate targets, which can of course be assessed only at the population level. The alignment algorithm then directly modifies the individual outcomes or probabilities of occurrence.
+
+# 1. Common Arguments
+
+All alignment methods in JAS-mine require 4 arguments (see the code blocks below for examples on how to use the methods in a JAS-mine model):
+
+1. **collection**: a collection of individuals whose outcome or probability of an event has to be aligned (e.g. all the population);
+2. **filter**: a filter to be applied to the collection (e.g. all females selected to divorce);
+3. **AlignmentProbabilityClosure** or **AlignmentOutcomeClosure**: a piece of code that i) for each element of the filtered collection computes a probability for the event (in the case that the alignment method is aligning probabilities, as in the SBD algorithm) or an outcome (in the case that the alignment method is aligning outcomes), and ii) applies to each element of the filtered collection the specific instructions coming from the alignment method used. (In the case of multiple choice alignment such as Logit Scaling, an '**AlignmentMultiProbabilityClosure**' is used instead, which handles a set of probabilities for the many possible event outcomes.);
+4. **targetShare** or **targetNumber**: the share or number of elements in the filtered collection that are expected to experience the transition. (In the case of multiple choice alignment, this is an array of targetShare proportions, containing the share for each potential outcome).
+
+We introduce the Multiple Choice alignment methods available in JAS-mine (section A), followed by a description of the binary alignment methods available (section B), concluding with an introduction to alignment with variable agent weightings (section C).
+
+# 2. Multiple Choice Alignment
+
+The earliest alignment techniques implemented in JAS-mine fall into the category of binary alignment. Version 3.2.0 of JAS-mine introduced the possibility of **multiple choice alignment** by implementing the Logit Scaling alignment method of Stephensen (2016).
+
+## 2.1 Logit Scaling (LS)
+
+**Logit Scaling** (LS) is an alignment technique that is theoretically optimal in that it minimizes the information loss i.e. distortion (as measured by the relative entropy) in the process of aligning probabilities to given targets. In addition, it is computationally efficient and quick to run. The method is implemented using the 'Bi-Proportional Scaling' algorithm that quickly converges to the solution of the problem. This involves representing the set of state probabilities for all individuals in a population as a two-dimensional matrix, with each row representing an individual 'i', and each column representing a particular state 'a' (the choice or outcome of the process to be aligned). The matrix undergoes an iterative process whereby:
+
+1. The sum of each column of probabilities is scaled to match the alignment target, which is the expected (mean) number of individuals in the state 'a' that the column represents;
+2. The sum of each row is then scaled to equal 1 (as the sum of state probabilities should always equal 1, i.e. the individual must be in one particular state at any moment in time).
+
+Steps 1) and 2) are then repeated in sequence until the system converges. Not only does Logit Scaling alignment minimize the distortion to the probability distributions of the individuals while obtaining the alignment targets, but it has a number of useful features including the ability to retain zero probabilities (i.e. impossible events), a symmetric formulation where neither outcome (or choice) has a favoured status in the algorithm, and moreover the ability to handle more than just two choices (which the following alignment algorithms are all restricted to doing). Logit Scaling is the clear choice for any user wanting to perform multiple choice alignment in JAS-mine.
+
+### Example: Multiple Choice Logit Scaling
+
+Here is an example of how the multiple choice Logit Scaling alignment could be implemented in a JAS-mine model where there are three potential outcomes (note the last argument is an array containing three elements that sum to 1).
+
+```java
+new LogitScalingAlignment