Multi-Objective Selection¶
Multi-objective helpers rank finite candidate pools when several objectives matter at once, such as maximizing performance while minimizing cost, toxicity, degradation rate, synthesis difficulty, or experimental burden.
matgpr.multi_objective
¶
ObjectiveSpec
dataclass
¶
Definition of one objective in a finite-pool multi-objective workflow.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
name
|
str
|
Short objective label used in utility column names. |
required |
column
|
str
|
Numeric dataframe column containing objective values. |
required |
goal
|
str
|
Either |
'maximize'
|
weight
|
float
|
Non-negative scalarization weight. At least one objective supplied to a scalarization workflow must have a positive weight. |
1.0
|
Source code in matgpr/multi_objective.py
19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 | |
pareto_front_mask(data, objectives)
¶
Return a boolean mask for nondominated candidate rows.
Objective directions are taken from each ObjectiveSpec, so minimize-type
objectives such as cost, toxicity, synthesis difficulty, or degradation rate
are handled directly.
Source code in matgpr/multi_objective.py
62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 | |
select_pareto_front(data, objectives, *, reset_index=True)
¶
Return nondominated rows from a finite candidate table.
Source code in matgpr/multi_objective.py
79 80 81 82 83 84 85 86 87 88 89 90 | |
scalarize_objectives(data, objectives, *, normalize=True)
¶
Compute a weighted scalar utility score for multiple objectives.
Each objective is first converted so larger utility is better. With
normalize=True, every objective is min-max scaled to [0, 1] before the
weighted average is computed. This is the recommended default when columns
have different physical units.
Source code in matgpr/multi_objective.py
93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 | |
rank_multi_objective_candidates(data, objectives, *, top_k=None, normalize=True, score_column='matgpr_multi_objective_score', rank_column='matgpr_multi_objective_rank', pareto_column='matgpr_pareto_front', include_objective_utilities=True, utility_prefix='matgpr_objective_')
¶
Rank finite candidates by weighted multi-objective utility.
The result keeps original candidate columns, adds the scalarized score, marks Pareto-front candidates, and sorts from most to least desirable.
Source code in matgpr/multi_objective.py
113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 | |