← Back to Tutorials
Intermediate• 20 minutes

Understanding Optimization Results

Learn to interpret results, explanations, convergence metrics, and audit trails.

Result Structure

Every Sematryx optimization returns a rich result object with the solution, performance metrics, explanations, and learning context:

Complete result structure
{
  "success": true,
  "best_solution": [0.35, 0.28, 0.37],
  "best_fitness": 847293.50,
  "evaluations": 1247,
  "duration_seconds": 2.34,
  
  "strategy_used": "cma_es",
  "convergence": {
    "converged": true,
    "iterations": 89,
    "improvement_rate": "exponential",
    "stagnation_count": 0
  },
  
  "explanation": {
    "summary": "Optimization converged successfully",
    "rationale": "CMA-ES selected for smooth landscape...",
    "alternatives_considered": [...],
    "audit_id": "aud_7x9k2m..."
  },
  
  "learning_context": {
    "prior_experience_used": true,
    "similar_problems_found": 3,
    "speedup_factor": 1.8
  },
  
  "constraints_satisfied": true,
  "constraint_violations": []
}

Accessing Results

Here's how to extract and use the different parts of the result:

Accessing result fields
from sematryx import optimize

result = optimize(
    objective_function=my_function,
    bounds=bounds,
    explanation_level=3
)

# === Core Results ===
print(f"Success: {result.success}")
print(f"Best solution: {result.solution}")
print(f"Objective value: {result.objective_value}")

# === Performance Metrics ===
print(f"Evaluations: {result.evaluations_used}")
print(f"Duration: {result.duration_seconds}s")
print(f"Strategy: {result.strategy_used}")

# === Explanations ===
print(f"Explanation: {result.explanation}")
if result.explanation_detail:
    print(f"Rationale: {result.explanation_detail.rationale}")
    print(f"Confidence: {result.explanation_detail.confidence_score}")
print(f"Audit ID: {result.audit_id}")

Convergence Analysis

The convergence object tells you how the optimization performed and whether the solution is reliable:

Analyzing convergence
# Check optimization success
if result.success:
    print("✓ Optimization found a solution")
else:
    print("⚠ Optimization did not succeed")
    print(f"  Check explanation: {result.explanation}")

# Performance metrics
print(f"Evaluations used: {result.evaluations_used}")
print(f"Duration: {result.duration_seconds:.2f}s")
print(f"Strategy: {result.strategy_used}")

# Detailed explanation if available
if result.explanation_detail:
    print(f"Convergence: {result.explanation_detail.convergence_reason}")
    print(f"Confidence: {result.explanation_detail.confidence_score}")
print(f"Improvement rate: {convergence['improvement_rate']}")

# Stagnation indicates potential local optima
if convergence['stagnation_count'] > 5:
    print("⚠ Multiple stagnation periods detected")
    print("  Consider: increase exploration or try different strategy")

Convergence Indicators

Exponential improvement: Problem is well-suited to the chosen strategy
Linear improvement: Normal difficulty, may benefit from more evaluations
Stagnation: Possible local optimum, consider multi-start or different strategy

Explanation Levels

The amount of explanation detail depends on your configured explanation_level:

Explanation levels comparison
# Level 1: Basic summary (fastest)
{
  "summary": "Converged in 234 evaluations using CMA-ES"
}

# Level 2: Add strategy rationale
{
  "summary": "Converged in 234 evaluations using CMA-ES",
  "rationale": "CMA-ES selected: smooth, unimodal, 10D problem"
}

# Level 3: Add alternatives considered (default)
{
  "summary": "...",
  "rationale": "...",
  "alternatives_considered": [
    {"strategy": "differential_evolution", "score": 0.72},
    {"strategy": "bayesian", "score": 0.68}
  ]
}

# Level 4: Full audit trail (compliance)
{
  "summary": "...",
  "rationale": "...",
  "alternatives_considered": [...],
  "audit_trail": [
    {"timestamp": "...", "event": "problem_analysis", "details": "..."},
    {"timestamp": "...", "event": "strategy_selection", "details": "..."},
    {"timestamp": "...", "event": "iteration_1", "best_fitness": 1000.5},
    ...
  ],
  "audit_id": "aud_7x9k2m...",
  "audit_hash": "sha256:..."
}

# Level 5: Research-grade (most detailed)
# Includes landscape analysis, hessian estimates, 
# sensitivity analysis, counterfactual reasoning

Constraint Analysis

For constrained optimization, the result includes detailed constraint satisfaction info:

Constraint results
# Check constraint satisfaction
if result['constraints_satisfied']:
    print("✓ All constraints satisfied")
else:
    print("✗ Some constraints violated:")
    for violation in result['constraint_violations']:
        print(f"  - {violation['constraint']}: {violation['violation_amount']}")

# For compliance applications, get detailed constraint analysis
if result['explanation'].get('constraint_analysis'):
    analysis = result['explanation']['constraint_analysis']
    for constraint in analysis:
        print(f"{constraint['name']}:")
        print(f"  Status: {constraint['status']}")
        print(f"  Margin: {constraint['margin']}")  # How close to boundary
        print(f"  Sensitivity: {constraint['sensitivity']}")  # Impact of relaxing

Learning Context

When adaptive learning is enabled, results include information about prior experience used:

Learning context
# Understanding learning context
learning = result['learning_context']

# Was prior experience used?
if learning['prior_experience_used']:
    print(f"✓ Leveraged {learning['similar_problems_found']} similar problems")
    print(f"  Estimated speedup: {learning['speedup_factor']}x")
    
    # What patterns were matched?
    for pattern in learning.get('patterns_matched', []):
        print(f"  Pattern: {pattern['signature']} (confidence: {pattern['confidence']})")
else:
    print("No similar problems found in learning store")
    print("This optimization will be stored for future use")

# Private vs public learning
print(f"Private patterns: {learning.get('private_patterns_matched', 0)}")
print(f"Public patterns: {learning.get('public_patterns_matched', 0)}")

Audit Trails (Compliance)

For regulated industries, every optimization has a tamper-evident audit trail that can be retrieved for compliance and auditing:

Audit trail retrieval
from sematryx import get_audit_trail

# Retrieve full audit trail by ID (for compliance)
audit = get_audit_trail(audit_id='aud_7x9k2m...')

# Audit contains complete decision history
print(f"Optimization ID: {audit['optimization_id']}")
print(f"Timestamp: {audit['timestamp']}")
print(f"User: {audit['user_id']}")
print(f"API Key: {audit['api_key_prefix']}...")

# Every decision is logged
for event in audit['events']:
    print(f"[{event['timestamp']}] {event['event_type']}")
    print(f"  Details: {event['details']}")
    print(f"  Hash: {event['event_hash']}")  # Tamper-evident

# Verify audit integrity
if audit['integrity_verified']:
    print("✓ Audit trail integrity verified")
else:
    print("✗ WARNING: Audit trail may have been tampered")

Audit Trail Features

  • Tamper-evident: Cryptographic hashes verify integrity
  • Complete history: Every decision logged with timestamps
  • Exportable: JSON format for compliance systems
  • Retention: Stored for your configured retention period

🎉 Next Steps

You now understand how to interpret Sematryx results. Next, explore domain-specific optimization for your industry.