Back to all questions

What is a Pareto front and how does MatCraft compute it?

Optimization
pareto
multi-objective
trade-offs

A Pareto front (also called a Pareto frontier) is the set of solutions where no objective can be improved without worsening at least one other objective. It represents the optimal trade-off surface in multi-objective optimization.

Intuitive Example

Consider optimizing a water membrane for two objectives:

  • Maximize water flux (how fast water passes through)
  • Maximize salt rejection (how effectively salt is blocked)

These objectives typically conflict: membranes with high flux tend to have lower rejection, and vice versa. The Pareto front is the curve of compositions where you cannot increase flux without decreasing rejection.

How MatCraft Computes It

MatCraft uses a non-dominated sorting approach:

  1. Collect all evaluated candidates across all iterations of the campaign.
  2. Non-dominated sorting: A candidate A dominates candidate B if A is at least as good as B on all objectives and strictly better on at least one. Candidates that are not dominated by any other candidate form the Pareto front.
  3. Crowding distance: Among Pareto-optimal solutions, MatCraft computes a crowding distance metric to ensure a well-distributed spread along the front.
python
from materia.analysis import compute_pareto_front

# Get the Pareto front from campaign results
front = compute_pareto_front(campaign.results)
print(f"Found {len(front)} Pareto-optimal solutions")

for candidate in front:
    print(f"  Flux: {candidate.water_flux:.1f}, Rejection: {candidate.salt_rejection:.1f}%")

Visualization

The MatCraft dashboard provides interactive Pareto plots:

  • 2D Pareto plot: For two objectives, the front is displayed as a curve with candidate points. Click any point to see the full composition.
  • 3D Pareto plot: For three objectives, an interactive 3D surface is rendered.
  • Parallel coordinates: For four or more objectives, a parallel coordinates plot shows trade-offs across all objectives simultaneously.

Using the Pareto Front

The Pareto front does not give you a single "best" answer — it gives you the set of optimal trade-offs. Choosing among Pareto-optimal solutions is a domain decision:

  • A water treatment plant might prioritize rejection over flux.
  • A desalination startup might prioritize flux to reduce membrane area and cost.

MatCraft lets you apply preference weights or knee-point detection to highlight the most balanced solution on the front.

Related Questions