1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
use crate::exam::ExamProblemRecipe; use crate::homonym::HomonymProblemRecipe; use crate::multi_exam::MultiExamProblemRecipe; use kurobako_core::epi::problem::ExternalProgramProblemRecipe; use kurobako_core::problem::{BoxProblem, ProblemRecipe}; use kurobako_core::Result; use kurobako_problems::{deepobs, fc_net, ffmpeg, lightgbm, nasbench, sigopt, synthetic}; use serde::{Deserialize, Serialize}; use structopt::StructOpt; #[derive(Debug, Clone, StructOpt, Serialize, Deserialize)] #[serde(rename_all = "kebab-case")] #[structopt(rename_all = "kebab-case")] pub enum KurobakoProblemRecipe { Command(ExternalProgramProblemRecipe), Sigopt(sigopt::SigoptProblemRecipe), Nasbench(nasbench::NasbenchProblemRecipe), FcNet(fc_net::FcNetProblemRecipe), Ffmpeg(ffmpeg::FfmpegProblemRecipe), Lightgbm(lightgbm::LightgbmProblemRecipe), Deepobs(deepobs::DeepobsProblemRecipe), Synthetic(synthetic::SyntheticProblemRecipe), Exam(ExamProblemRecipe), MultiExam(MultiExamProblemRecipe), Homonym(HomonymProblemRecipe), } impl ProblemRecipe for KurobakoProblemRecipe { type Problem = BoxProblem; fn create_problem(&self) -> Result<Self::Problem> { match self { KurobakoProblemRecipe::Command(p) => track!(p.create_problem().map(BoxProblem::new)), KurobakoProblemRecipe::Sigopt(p) => track!(p.create_problem().map(BoxProblem::new)), KurobakoProblemRecipe::Nasbench(p) => track!(p.create_problem().map(BoxProblem::new)), KurobakoProblemRecipe::FcNet(p) => track!(p.create_problem().map(BoxProblem::new)), KurobakoProblemRecipe::Ffmpeg(p) => track!(p.create_problem().map(BoxProblem::new)), KurobakoProblemRecipe::Lightgbm(p) => track!(p.create_problem().map(BoxProblem::new)), KurobakoProblemRecipe::Deepobs(p) => track!(p.create_problem().map(BoxProblem::new)), KurobakoProblemRecipe::Synthetic(p) => track!(p.create_problem().map(BoxProblem::new)), KurobakoProblemRecipe::Exam(p) => track!(p.create_problem().map(BoxProblem::new)), KurobakoProblemRecipe::MultiExam(p) => track!(p.create_problem().map(BoxProblem::new)), KurobakoProblemRecipe::Homonym(p) => track!(p.create_problem().map(BoxProblem::new)), } } }