data_dir: 'model-Jun03'
random_seed: 1234

# Parameter for Approximation with Troubled Cell Detection
Approximation:
  plot_dir: 'fig-Jun03'

  schemes:
    Separation_Test:
      wave_speed: 1
      polynomial_degree: 2
      cfl_number: 0.2
      num_grid_cells: 32    # 40 elements work well for Condition 3
      final_time: 1
      left_bound: -1
      right_bound: 1
      verbose: True

      #detector: 'Theoretical'
      detector: 'ArtificialNeuralNetwork'
      detector_config:
        fold_len: 16
        whisker_len: 3
        add_reconstructions: True
        model_state: 'Adam.model.pt'

      init_cond: 'Sine'
      init_config:
        factor: 4
        left_factor: 3

      limiter: 'ModifiedMinMod'
      limiter_config:
        mod_factor: 0
        erase_degree: 0

      quadrature: 'Gauss'
      quadrature_config:
        num_nodes: 12

      update_scheme: 'SSPRK3'
    Test_Run:
      detector: 'Theoretical'

# Parameter for Training Data Generation
ANN_Data:
  sample_number: 100

  left_boundary: -1
  right_boundary: 1

  smooth_troubled_balance: 0.5

  stencil_length: 3
  add_reconstructions : True

  # Initial Conditions for Training Data
  functions:
    Sine:
      factor: 2
    Linear:
    Polynomial:
    Continuous:
    LinearAbsolut:
    HeavisideOneSided:
    HeavisideTwoSided:
      adjustment: 0

# Parameter for Model Training and Evaluation
ANN_Training:
  compare_normalization: True
  num_iterations: 2

  classification_colors:
    Accuracy: '#FF00FF'  # magenta
    Precision_Smooth: '#FF0000'  # red
    Precision_Troubled: '#8B0000'  # dark red
    Recall_Smooth: '#0000FF'  # blue
    Recall_Troubled: '#00008B'  # dark blue
    F-Score_Smooth: '#00FF00'  # green
    F-Score_Troubled: '#006400'  # dark green
    AUROC: '#FFFF00'  # yellow

  models:
    Adam:
      num_epochs: 1000
      threshold: 1.0e-5
      batch_size: 500
      model: ThreeLayerReLu
      model_config: {}
      loss_function: BCELoss
      optimizer: Adam
    SGD:
      num_epochs: 1000
      threshold: 1.0e-5
      batch_size: 500
      model: ThreeLayerReLu
      model_config: {}
      loss_function: BCELoss
      optimizer: SGD

# Loss Functions: BCELoss, BCEWithLogitsLoss,
# CrossEntropyLoss (not working), MSELoss (with reduction='sum')
# Optimizer: Adam, SGD