Multi fidelity and expert priors

import logging
from warnings import warn

import numpy as np

import neps


def evaluate_pipeline(float1, float2, integer1, fidelity):
    objective_to_minimize = -float(np.sum([float1, float2, integer1])) / fidelity
    return objective_to_minimize


pipeline_space = dict(
    float1=neps.Float(
        lower=1,
        upper=1000,
        log=False,
        prior=600,
        prior_confidence="medium",
    ),
    float2=neps.Float(
        lower=-10,
        upper=10,
        prior=0,
        prior_confidence="medium",
    ),
    integer1=neps.Integer(
        lower=0,
        upper=50,
        prior=35,
        prior_confidence="low",
    ),
    fidelity=neps.Integer(
        lower=1,
        upper=10,
        is_fidelity=True,
    ),
)

logging.basicConfig(level=logging.INFO)
neps.run(
    evaluate_pipeline=evaluate_pipeline,
    pipeline_space=pipeline_space,
    root_directory="results/multifidelity_priors",
    max_evaluations_total=25,  # For an alternate stopping method see multi_fidelity.py
)