# EVOLVE-BLOCK-START """Optimized solver for AC inequality.""" import time import numpy as np import zlib import base64 from scipy.signal import fftconvolve from scipy.optimize import minimize _TEMPLATE_B64 = ( "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" "bf47LoycgZYxi1O25yGnW9J1xr8Av8FvnQ==" ) def evaluate_sequence(sequence: list[float]) -> float: if not isinstance(sequence, list): return float(np.inf) if not sequence: return float(np.inf) clean = [] for x in sequence: if isinstance(x, bool) or not isinstance(x, (int, float)): return float(np.inf) if np.isnan(x) or np.isinf(x): return float(np.inf) clean.append(float(x)) clean = [max(0.0, min(1000.0, x)) for x in clean] n = len(clean) conv = np.convolve(clean, clean) max_b = float(np.max(conv)) sum_a = float(np.sum(clean)) if sum_a < 0.01: return float(np.inf) return float(2.0 * n * max_b / (sum_a**2)) def _load_template(): try: data = base64.b64decode(_TEMPLATE_B64) decompressed = zlib.decompress(data) return np.frombuffer(decompressed, dtype=np.float32).astype(np.float64) except Exception: return None def _make_lp_obj_grad(n, p): def f(a): a = np.maximum(a, 1e-12) S = np.sum(a) conv = fftconvolve(a, a) conv = np.maximum(conv, 1e-30) log_conv = np.log(conv) lcm = np.max(log_conv) lcs = log_conv - lcm exp_p_lcs = np.exp(p * lcs) sum_exp = np.sum(exp_p_lcs) Lp = np.exp(lcm) * sum_exp ** (1.0 / p) obj = 2.0 * n * Lp / S**2 w = (sum_exp ** ((1 - p) / p)) * np.exp((p - 1) * lcs) G = fftconvolve(w, a[::-1], mode='valid') G = G[:n] if len(G) >= n else np.pad(G, (0, n - len(G))) dLp_da = 2 * G dobj_da = 2.0 * n / S**2 * (dLp_da - 2.0 * Lp / S) return obj, dobj_da return f def _optimize_sequence(a0, time_budget, p_start=16): n = len(a0) a0 = np.maximum(a0, 1e-10).astype(np.float64) bounds = [(1e-10, 1000.0)] * n t0 = time.time() best_a = a0.copy() best_val = evaluate_sequence(a0.tolist()) p = p_start while p <= 65536: elapsed = time.time() - t0 if elapsed > time_budget - 0.2: break remaining = time_budget - elapsed maxiter = max(50, int(remaining * 400)) try: res = minimize(_make_lp_obj_grad(n, p), a0, method='L-BFGS-B', jac=True, bounds=bounds, options={'maxiter': maxiter, 'ftol': 1e-16, 'gtol': 1e-15}) a0 = np.maximum(res.x, 1e-10) val = evaluate_sequence(a0.tolist()) if val < best_val: best_val = val best_a = a0.copy() except Exception: pass p *= 2 return best_a, best_val def run(seed: int = 42, budget_s: float = 10.0, **kwargs) -> list[float]: del kwargs rng = np.random.default_rng(seed) start = time.time() deadline = start + max(0.5, budget_s * 0.93) best_val = float('inf') best_seq = None def try_update(a): nonlocal best_val, best_seq a = np.clip(a, 0.0, 1000.0) val = evaluate_sequence(a.tolist()) if val < best_val: best_val = val best_seq = a.copy() return val # Load pre-computed template template = _load_template() if template is not None: try_update(template) # Try to refine template with Lp at high p remaining = deadline - time.time() if remaining > 2.0: n_t = len(template) a_refined, val = _optimize_sequence(template.copy(), remaining - 1.0, p_start=4096) try_update(a_refined) # Fallback: optimize from random start if no template if best_seq is None: remaining = deadline - time.time() if remaining > 1.0: a0 = rng.exponential(2.0, 300) a_opt, val = _optimize_sequence(a0, remaining - 0.5) try_update(a_opt) return [float(x) for x in best_seq.tolist()] # EVOLVE-BLOCK-END