c min ≤ r 0 ≤ c max (8) t min ≤ r n+1 -r n ≤ t max , for n ∈ [0 . . l -1] (9) We initialize random starting configuration within the distributions outlined for each dataset as a starting point for optimization. We perform local optimization using the trust region constrained optimization as implemented in scipy with an initial trust radius of 1.0. An initial constraint penalty of 1 × 10 3 was applied to strongly penalize constraint violation, ensuring that concentrations stayed within the range of [0, 1.0] and total radius within specification. The criterion used for termination of local optimization is when the trust radius is less than 1 × 10 -8 To search for a globally optimal particle, we repeatedly perturb the local minima and re-optimize the nanoparticle heterostructure. To achieve this, we utilize the basinhopping functionality of scipy with up to 500 steps, a step size of 0.15, and temperature value of 0.25. Following global optimization, validation of the best identified candidate structures are subjected to kMC simulations.