Files
Atomizer/docs/FIX_VALIDATOR_PRUNING.md
Anto01 ca25fbdec5 fix: Remove arbitrary aspect ratio validation and add comprehensive pruning diagnostics
**Validation Changes (simulation_validator.py)**:
- Removed arbitrary aspect ratio limits (5.0-50.0) for circular_plate model
- User requirement: validation rules must be proposed, not automatic
- Validator now returns empty rules for circular_plate
- Relies solely on Optuna parameter bounds (user-defined feasibility)
- Fixed Unicode encoding issues in pruning_logger.py

**Root Cause Analysis**:
- 18-20% pruning in Protocol 10 tests was NOT validation failures
- All pruned trials had valid aspect ratios within bounds
- Root cause: pyNastran FATAL flag false positives
- Simulations succeeded but pyNastran rejected OP2 files

**New Modules**:
- pruning_logger.py: Comprehensive trial failure tracking
  - Logs validation, simulation, and OP2 extraction failures
  - Analyzes F06 files to detect false positives
  - Generates pruning_history.json and pruning_summary.json

- op2_extractor.py: Robust multi-strategy OP2 extraction
  - Standard OP2 read
  - Lenient read (debug=False)
  - F06 fallback parsing
  - Handles pyNastran FATAL flag issues

**Documentation**:
- SESSION_SUMMARY_NOV20.md: Complete session documentation
- FIX_VALIDATOR_PRUNING.md: Deprecated, retained for historical reference
- PRUNING_DIAGNOSTICS.md: Usage guide for pruning diagnostics
- STUDY_CONTINUATION_STANDARD.md: API documentation

**Impact**:
- Clean separation: parameter bounds = feasibility, validator = genuine failures
- Expected pruning reduction from 18% to <2% with robust extraction
- ~4-5 minutes saved per 50-trial study
- All optimization trials contribute valid data

**User Requirements Established**:
1. No arbitrary checks without user approval
2. Validation rules must be visible in optimization_config.json
3. Parameter bounds already define feasibility constraints
4. Physics-based constraints need clear justification
2025-11-20 20:25:33 -05:00

3.9 KiB

Validator Pruning Investigation - November 20, 2025

DEPRECATED - This document is retained for historical reference only.

Status: Investigation completed. Aspect ratio validation approach was abandoned.


Original Problem

The v2.1 and v2.2 tests showed 18-20% pruning rate. Investigation revealed two separate issues:

Issue 1: Validator Not Enforcing Rules (FIXED, then REMOVED)

The _validate_circular_plate_aspect_ratio() method initially returned only warnings, not rejections.

Fix Applied: Changed to return hard rejections for aspect ratio violations.

Result: All pruned trials in v2.2 still had VALID aspect ratios (5.0-50.0 range).

Conclusion: Aspect ratio violations were NOT the cause of pruning.

Issue 2: pyNastran False Positives (ROOT CAUSE)

All pruned trials failed due to pyNastran FATAL flag sensitivity:

  • Nastran simulations succeeded (F06 files have no errors)
  • ⚠️ FATAL flag in OP2 header (benign warning)
  • pyNastran throws exception when reading OP2
  • Valid trials incorrectly marked as failed

Evidence: All 9 pruned trials in v2.2 had:

  • is_pynastran_fatal_flag: true
  • f06_has_fatal_errors: false
  • Valid aspect ratios within bounds

Final Solution (Post-v2.3)

Aspect Ratio Validation REMOVED

After deploying v2.3 with aspect ratio validation, user feedback revealed:

User Requirement: "I never asked for this check, where does that come from?"

Issue: Arbitrary aspect ratio limits (5.0-50.0) without:

  • User approval
  • Physical justification for circular plate modal analysis
  • Visibility in optimization_config.json

Fix Applied:

  • Removed ALL aspect ratio validation from circular_plate model type
  • Validator now returns empty rules {}
  • Relies solely on Optuna parameter bounds (50-150mm diameter, 2-10mm thickness)

User Requirements Established:

  1. No arbitrary checks - validation rules must be proposed, not automatic
  2. Configurable validation - rules should be visible in optimization_config.json
  3. Parameter bounds suffice - ranges already define feasibility
  4. Physical justification required - any constraint needs clear reasoning

Real Solution: Robust OP2 Extraction

Module: optimization_engine/op2_extractor.py

Multi-strategy extraction that handles pyNastran issues:

  1. Standard OP2 read
  2. Lenient read (debug=False, skip benign flags)
  3. F06 fallback parsing

See PRUNING_DIAGNOSTICS.md for details.


Lessons Learned

  1. Validator is for simulation failures, not arbitrary physics assumptions

    • Parameter bounds already define feasible ranges
    • Don't add validation rules without user approval
  2. 18% pruning was pyNastran false positives, not validation issues

    • All pruned trials had valid parameters
    • Robust extraction eliminates these false positives
  3. Transparency is critical

    • Validation rules must be visible in optimization_config.json
    • Arbitrary constraints confuse users and reject valid designs

Current State

File: simulation_validator.py

if model_type == 'circular_plate':
    # NOTE: Only use parameter bounds for validation
    # No arbitrary aspect ratio checks - let Optuna explore the full parameter space
    # Modal analysis is robust and doesn't need strict aspect ratio limits
    return {}

Impact: Clean separation of concerns

  • Parameter bounds = Feasibility (user-defined ranges)
  • Validator = Genuine simulation failures (e.g., mesh errors, solver crashes)

References