# 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