Files
Atomizer/.claude/skills/archive/guided-study-wizard.md
Antoine d1261d62fd refactor: Major project cleanup and reorganization
## Removed Duplicate Directories
- Deleted old `dashboard/` (replaced by atomizer-dashboard)
- Deleted old `mcp_server/` Python tools (moved model_discovery to optimization_engine)
- Deleted `tests/mcp_server/` (obsolete tests)
- Deleted `launch_dashboard.bat` (old launcher)

## Consolidated Code
- Moved `mcp_server/tools/model_discovery.py` to `optimization_engine/model_discovery/`
- Updated import in `optimization_config_builder.py`
- Deleted stub `extract_mass.py` (use extract_mass_from_bdf instead)
- Deleted unused `intelligent_setup.py` and `hybrid_study_creator.py`
- Archived `result_extractors/` to `archive/deprecated/`

## Documentation Cleanup
- Deleted deprecated `docs/06_PROTOCOLS_DETAILED/` (14 files)
- Archived dated dev docs to `docs/08_ARCHIVE/sessions/`
- Archived old plans to `docs/08_ARCHIVE/plans/`
- Updated `docs/protocols/README.md` with SYS_15

## Skills Consolidation
- Archived redundant study creation skills to `.claude/skills/archive/`
- Kept `core/study-creation-core.md` as canonical

## Housekeeping
- Updated `.gitignore` to prevent `nul` and `_dat_run*.dat`

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-12 11:24:02 -05:00

326 lines
8.0 KiB
Markdown

# Guided Study Creation Wizard
**Version**: 1.0
**Purpose**: Interactive conversational wizard for creating new optimization studies from scratch.
---
## Overview
This skill provides a step-by-step guided experience for users who want to create a new optimization study. It asks focused questions to gather requirements, then generates the complete study configuration.
---
## Wizard Flow
### Phase 1: Understanding the Problem (Discovery)
Start with open-ended questions to understand what the user wants to optimize:
**Opening Prompt:**
```
I'll help you set up a new optimization study. Let's start with the basics:
1. **What are you trying to optimize?**
- Describe the physical system (e.g., "a telescope mirror", "a UAV arm", "a bracket")
2. **What's your goal?**
- Minimize weight? Maximize stiffness? Minimize stress? Multiple objectives?
3. **Do you have an NX model ready?**
- If yes, where is it located?
- If no, we can discuss what's needed
```
### Phase 2: Model Analysis (If NX model provided)
If user provides a model path:
1. **Check the model exists**
```python
# Verify path
model_path = Path(user_provided_path)
if model_path.exists():
# Proceed with analysis
else:
# Ask for correct path
```
2. **Extract expressions (design parameters)**
- List all NX expressions that could be design variables
- Ask user to confirm which ones to optimize
3. **Identify simulation setup**
- What solution types are present? (static, modal, buckling)
- What results are available?
### Phase 3: Define Objectives & Constraints
Ask focused questions:
```
Based on your model, I can see these results are available:
- Displacement (from static solution)
- Von Mises stress (from static solution)
- Natural frequency (from modal solution)
- Mass (from geometry)
**Questions:**
1. **Primary Objective** - What do you want to minimize/maximize?
Examples: "minimize tip displacement", "minimize mass"
2. **Secondary Objectives** (optional) - Any other goals?
Examples: "also minimize stress", "maximize first frequency"
3. **Constraints** - What limits must be respected?
Examples: "stress < 200 MPa", "frequency > 50 Hz", "mass < 2 kg"
```
### Phase 4: Define Design Space
For each design variable identified:
```
For parameter `{param_name}` (current value: {current_value}):
- **Minimum value**: (default: -20% of current)
- **Maximum value**: (default: +20% of current)
- **Type**: continuous or discrete?
```
### Phase 5: Optimization Settings
```
**Optimization Configuration:**
1. **Number of trials**: How thorough should the search be?
- Quick exploration: 50-100 trials
- Standard: 100-200 trials
- Thorough: 200-500 trials
- With neural acceleration: 500+ trials
2. **Protocol Selection** (I'll recommend based on your setup):
- Single objective → Protocol 10 (IMSO)
- Multi-objective (2-3 goals) → Protocol 11 (NSGA-II)
- Large-scale with NN → Protocol 12 (Hybrid)
3. **Neural Network Acceleration**:
- Enable if n_trials > 100 and you want faster iterations
```
### Phase 6: Summary & Confirmation
Present the complete configuration for user approval:
```
## Study Configuration Summary
**Study Name**: {study_name}
**Location**: studies/{study_name}/
**Model**: {model_path}
**Design Variables** ({n_vars} parameters):
| Parameter | Min | Max | Type |
|-----------|-----|-----|------|
| {name1} | {min1} | {max1} | continuous |
| ... | ... | ... | ... |
**Objectives**:
- {objective1}: {direction1}
- {objective2}: {direction2} (if multi-objective)
**Constraints**:
- {constraint1}
- {constraint2}
**Settings**:
- Protocol: {protocol}
- Trials: {n_trials}
- Sampler: {sampler}
- Neural Acceleration: {enabled/disabled}
---
Does this look correct?
- Type "yes" to generate the study files
- Type "change X" to modify a specific setting
- Type "start over" to begin again
```
### Phase 7: Generation
Once confirmed, generate:
1. Create study directory structure
2. Copy model files to working directory
3. Generate `optimization_config.json`
4. Generate `run_optimization.py`
5. Validate everything works
```
✓ Study created successfully!
**Next Steps:**
1. Review the generated files in studies/{study_name}/
2. Run a quick validation: `python run_optimization.py --validate`
3. Start optimization: `python run_optimization.py --start`
Or just tell me "start the optimization" and I'll handle it!
```
---
## Question Templates
### For Understanding Goals
- "What problem are you trying to solve?"
- "What makes a 'good' design for your application?"
- "Are there any hard limits that must not be exceeded?"
- "Is this a weight reduction study, a performance study, or both?"
### For Design Variables
- "Which dimensions or parameters should I vary?"
- "Are there any parameters that must stay fixed?"
- "What are reasonable bounds for {parameter}?"
- "Should {parameter} be continuous or discrete (specific values only)?"
### For Constraints
- "What's the maximum stress this component can handle?"
- "Is there a minimum stiffness requirement?"
- "Are there weight limits?"
- "What frequency should the structure avoid (resonance concerns)?"
### For Optimization Settings
- "How much time can you allocate to this study?"
- "Do you need a quick exploration or thorough optimization?"
- "Is this a preliminary study or final optimization?"
---
## Default Configurations by Use Case
### Structural Weight Minimization
```json
{
"objectives": [
{"name": "mass", "direction": "minimize", "target": null}
],
"constraints": [
{"name": "max_stress", "type": "<=", "value": 200e6, "unit": "Pa"},
{"name": "max_displacement", "type": "<=", "value": 0.001, "unit": "m"}
],
"n_trials": 150,
"sampler": "TPE"
}
```
### Multi-Objective (Weight vs Performance)
```json
{
"objectives": [
{"name": "mass", "direction": "minimize"},
{"name": "max_displacement", "direction": "minimize"}
],
"n_trials": 200,
"sampler": "NSGA-II"
}
```
### Modal Optimization (Frequency Tuning)
```json
{
"objectives": [
{"name": "first_frequency", "direction": "maximize"}
],
"constraints": [
{"name": "mass", "type": "<=", "value": 5.0, "unit": "kg"}
],
"n_trials": 150,
"sampler": "TPE"
}
```
### Telescope Mirror (Zernike WFE)
```json
{
"objectives": [
{"name": "filtered_rms", "direction": "minimize", "unit": "nm"}
],
"constraints": [
{"name": "mass", "type": "<=", "value": null}
],
"extractor": "ZernikeExtractor",
"n_trials": 200,
"sampler": "NSGA-II"
}
```
---
## Error Handling
### Model Not Found
```
I couldn't find a model at that path. Let's verify:
- Current directory: {cwd}
- You specified: {user_path}
Could you check the path and try again?
Tip: Use an absolute path like "C:/Users/.../model.prt"
```
### No Expressions Found
```
I couldn't find any parametric expressions in this model.
For optimization, we need parameters defined as NX expressions.
Would you like me to explain how to add expressions to your model?
```
### Invalid Constraint
```
That constraint doesn't match any available results.
Available results from your model:
- {result1}
- {result2}
Which of these would you like to constrain?
```
---
## Integration with Dashboard
When running from the Atomizer dashboard with a connected Claude terminal:
1. **No study selected** → Offer to create a new study
2. **Study selected** → Use that study's context, offer to modify or run
The dashboard will display the study once created, showing real-time progress.
---
## Quick Commands
For users who know what they want:
- `create study {name} from {model_path}` - Skip to model analysis
- `quick setup` - Use all defaults, just confirm
- `copy study {existing} as {new}` - Clone an existing study as starting point
---
## Remember
- **Be conversational** - This is a wizard, not a form
- **Offer sensible defaults** - Don't make users specify everything
- **Validate as you go** - Catch issues early
- **Explain decisions** - Say why you recommend certain settings
- **Keep it focused** - One question at a time, don't overwhelm