09480a973b
Add constraint support so that optimization problems with constraints (e.g., "model size < 100MB") prefer feasible solutions. Convention: constraint value <= 0.0 means feasible. - Add constraint_values field to Trial with set_constraints/getter - Add constraints field to CompletedTrial with is_feasible() method - Propagate constraints through complete_trial/prune_trial - Make best_trial() and top_trials() constraint-aware: feasible trials rank above infeasible, infeasible ranked by total violation