Skip to main content

quantrs2_sim/qaoa_optimization/
qaoaoptimizer_adaptive_parameter_optimization_group.rs

1//! # QAOAOptimizer - adaptive_parameter_optimization_group Methods
2//!
3//! This module contains method implementations for `QAOAOptimizer`.
4//!
5//! 🤖 Generated with [SplitRS](https://github.com/cool-japan/splitrs)
6
7use crate::error::Result;
8use scirs2_core::random::prelude::*;
9
10use super::qaoaoptimizer_type::QAOAOptimizer;
11
12impl QAOAOptimizer {
13    /// Adaptive parameter optimization
14    pub(super) fn adaptive_parameter_optimization(&mut self, cost_history: &[f64]) -> Result<()> {
15        if cost_history.len() > 5 {
16            let recent_improvement =
17                cost_history[cost_history.len() - 1] - cost_history[cost_history.len() - 5];
18            if recent_improvement > 0.0 {
19                self.config.learning_rate *= 1.1;
20            } else {
21                self.config.learning_rate *= 0.9;
22            }
23        }
24        self.classical_parameter_optimization()
25    }
26}