|
8 | 8 | REPO_ROOT = Path(__file__).resolve().parent.parent |
9 | 9 | sys.path.append(str(REPO_ROOT)) |
10 | 10 |
|
11 | | -def run_experiment(args): |
12 | | - model, optimizer = args |
13 | | - cmd = [ |
14 | | - "uv", "run", # Using 'uv run' to ensure virtual environment is activated |
15 | | - "./scripts/run_experiment.py", |
16 | | - "--model", |
17 | | - model, |
18 | | - "--optimizer", |
19 | | - optimizer, |
20 | | - "--evaluations", |
21 | | - str(20), # LIMIT BUDGET: much less than 50 for quick experiment (comparison) |
22 | | - ] |
23 | | - print(f"Running: {' '.join(cmd)}") |
24 | | - result = subprocess.run(cmd) |
25 | | - if result.returncode != 0: |
26 | | - print(f"Command failed: {' '.join(cmd)}") |
| 11 | +# Import codefiles |
| 12 | +from run_experiment import run_experiment, EVALUATIONS_PER_RUN |
| 13 | +from analyze_experiment import main |
| 14 | + |
| 15 | +def ga_comp_run_experiment(model, optimizer): |
| 16 | + try: |
| 17 | + if optimizer.startswith("ga"): # Only try GA optimizers |
| 18 | + run_experiment( |
| 19 | + model_key=model, |
| 20 | + optimizer_name=optimizer, |
| 21 | + num_runs=1, |
| 22 | + n_jobs=1, |
| 23 | + base_seed=42, |
| 24 | + evaluations=EVALUATIONS_PER_RUN |
| 25 | + ) |
| 26 | + except Exception as e: |
| 27 | + print(f"Error running experiment for {model} with {optimizer}: {e}") |
27 | 28 | return False |
28 | 29 | return True |
29 | 30 |
|
30 | | -def analyze_experiment(model, optimizer): |
| 31 | +def ga_comp_analyze_experiment(model, optimizer): |
31 | 32 | experiment_name = f"{model}_{optimizer}_experiment" |
32 | | - cmd = [ |
33 | | - "uv", "run", # Using 'uv run' to ensure virtual environment is activated |
34 | | - "./scripts/analyze_experiment.py", |
35 | | - "--experiment-name", |
36 | | - experiment_name |
37 | | - ] |
38 | | - print(f"Analyzing by script: {' '.join(cmd)}") |
39 | | - result = subprocess.run(cmd) |
40 | | - if result.returncode != 0: |
41 | | - print(f"Command failed: {' '.join(cmd)}") |
| 33 | + try: |
| 34 | + if optimizer.startswith("ga"): # Only try GA optimizers |
| 35 | + main( |
| 36 | + experiment=experiment_name, |
| 37 | + diagnose_pso=False |
| 38 | + ) |
| 39 | + except Exception as e: |
| 40 | + print(f"Error analyzing experiment for {model} with {optimizer}: {e}") |
42 | 41 | return False |
43 | 42 | return True |
44 | 43 |
|
@@ -79,11 +78,11 @@ def experiment_exists(modelName: str, optimizerName: str) -> bool: |
79 | 78 | continue |
80 | 79 |
|
81 | 80 | # Run experiment |
82 | | - run_success = run_experiment((model, optimizer)) |
| 81 | + run_success = ga_comp_run_experiment((model, optimizer)) |
83 | 82 |
|
84 | 83 | if run_success: |
85 | 84 | # Analyze immediately after successful run |
86 | | - analyze_success = analyze_experiment(model, optimizer) |
| 85 | + analyze_success = ga_comp_analyze_experiment(model, optimizer) |
87 | 86 | if not analyze_success: |
88 | 87 | print(f"WARNING: Analysis failed for {model}-{optimizer}") |
89 | 88 | failed_analyses.append(f"{model}-{optimizer}") |
|
0 commit comments