function result = run_sol_osi_simplified_parameter_sweep( ... parameter, values, base_override) %RUN_SOL_OSI_SIMPLIFIED_PARAMETER_SWEEP Sweep one OSI configuration value. if nargin < 3 base_override = struct(); end values = values(:); n = numel(values); all_gates_pass = false(n, 1); fabby_score_1 = zeros(n, 1); fabby_score_2 = zeros(n, 1); S3_detection = zeros(n, 1); S4_smoothness = zeros(n, 1); S5_gdb_recovery = zeros(n, 1); composite = zeros(n, 1); recovery_latency_s = zeros(n, 1); tail_max_a = zeros(n, 1); for k = 1:n override = base_override; override.(parameter) = values(k); runner = @() run_sol_osi_simplified_benchmark( ... 0.0575, override); %#ok [~, candidate] = evalc('runner()'); all_gates_pass(k) = candidate.all_gates_pass; fabby_score_1(k) = candidate.scores.fabby_score_1; fabby_score_2(k) = candidate.scores.fabby_score_2; S3_detection(k) = candidate.scores.S3_detection; S4_smoothness(k) = candidate.scores.S4_smoothness; S5_gdb_recovery(k) = candidate.scores.S5_gdb_recovery; composite(k) = candidate.composite; recovery_latency_s(k) = candidate.gdb.recovery_latency_s; tail_max_a(k) = candidate.emulation.tail_max_a; fprintf(['%s %.6g | gates %d | F1 %.3f | F2 %.3f | ' ... 'composite %.3f | recovery %.3f s\n'], parameter, values(k), ... all_gates_pass(k), fabby_score_1(k), fabby_score_2(k), ... composite(k), recovery_latency_s(k)); end valid_score = fabby_score_2; valid_score(~all_gates_pass) = -Inf; [best_fabby_score_2, best_index] = max(valid_score); result = struct( ... 'generated_at', char(datetime('now', ... 'Format', 'yyyy-MM-dd HH:mm:ss')), ... 'parameter', parameter, ... 'base_override', base_override, ... 'values', values, ... 'all_gates_pass', all_gates_pass, ... 'fabby_score_1', fabby_score_1, ... 'fabby_score_2', fabby_score_2, ... 'S3_detection', S3_detection, ... 'S4_smoothness', S4_smoothness, ... 'S5_gdb_recovery', S5_gdb_recovery, ... 'composite', composite, ... 'recovery_latency_s', recovery_latency_s, ... 'tail_max_a', tail_max_a, ... 'best_value', values(best_index), ... 'best_fabby_score_2', best_fabby_score_2); end