#!/usr/bin/env julia # CPU-only scope expansion for Claim 1 and protection run for Claim 5. # The included qcorridor.jl is the pinned author implementation; this script # changes only corridor length, horizon, and the independent seed grid. if length(ARGS) != 2 error("expected AUTHORS_QCORRIDOR_JL OUTPUT_CSV") end include(abspath(ARGS[1])) const K_VALUES = (1, 2, 3, 5, 10, 20, 50, 100, 200, 400, 800) const T_VALUES = (500, 1000, 2000) const SEEDS = 0:199 const ALPHA0 = 0.1 const ALPHAT = 0.01 const EPS0 = 0.1 const EPST = 0.01 function endpoint_fraction(T::Int, k::Int, committed::Bool) count = 0 for seed in SEEDS _, qs = qcorridor(T, k, committed, seed, ALPHA0, ALPHAT, EPS0, EPST, 0) q = qs[end, :, :] count += (q[2, 2] > q[2, 1] && q[1, 2] > q[1, 1]) end return count, length(SEEDS) end open(abspath(ARGS[2]), "w") do io println(io, "mode,T,k,optimal_count,total_seeds,optimal_fraction") for T in T_VALUES, k in K_VALUES committed_count, total = endpoint_fraction(T, k, true) regular_count, _ = endpoint_fraction(T, k, false) println(io, "committed,", T, ",", k, ",", committed_count, ",", total, ",", committed_count / total) println(io, "regular,", T, ",", k, ",", regular_count, ",", total, ",", regular_count / total) end end