ultraopt.utils.misc 源代码

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Author  : qichun tang
# @Date    : 2020-12-14
# @Contact    : qichun.tang@bupt.edu.cn
import os
import shutil
from fractions import Fraction

import numpy as np
from joblib import dump

from ultraopt.constants import Configs
from ultraopt.utils.logging_ import get_logger

inc_logger = get_logger("incumbent_trajectory")


[文档]def pbudget(budget: float): if Configs.FractionalBudget: if budget - float(int(budget)) == 0: return str(int(budget)) fraction = Fraction.from_float(budget) res = f"{fraction.numerator}/{fraction.denominator}" if Configs.AutoAdjustFractionalBudget and len(res) >= 8: Configs.FractionalBudget = False return pbudget(budget) else: return res return f"{budget:.2f}"
[文档]def get_max_SH_iter(min_budget, max_budget, eta): return -int(np.log(min_budget / max_budget) / np.log(eta)) + 1
[文档]def get_import_error(pkg_name): raise ImportError(f"Cannot import {pkg_name}! Execute 'pip install {pkg_name}' in shell.")
[文档]def dump_checkpoint(optimizer, checkpoint_file): # todo: using thread checkpoint_file_bak = checkpoint_file + ".bak" if os.path.exists(checkpoint_file_bak): os.remove(checkpoint_file_bak) if os.path.exists(checkpoint_file): shutil.move(checkpoint_file, checkpoint_file_bak) dump(optimizer, checkpoint_file)