// Copyright 2022 wanderer // SPDX-License-Identifier: GPL-3.0-or-later package main import ( "flag" "log" "sync" "git.dotya.ml/wanderer/math-optim/algo" "git.dotya.ml/wanderer/math-optim/report" ) var version = "development" func run() { log.Println("starting math-optim version", "'"+version+"'") doPrint := flag.Bool("printreport", true, "print report.tex to console") generate := flag.Bool("generate", true, "run algos and generate plot pics/statistical tables (anew)") // TODO(me): add flag for plot output format: -plotout=(svg,eps,pdf) flag.Parse() if *generate { // atm we're only doing Random search and SHC algoCount := 2 var wg sync.WaitGroup wg.Add(algoCount) var m sync.Mutex go algo.DoRandomSearch(&wg, &m) go algo.DoStochasticHillClimbing(&wg, &m) // go algo.DoStochasticHillClimbing100Neigh(&wg, &m) wg.Wait() pL, benchCount := algo.PrepComparisonOfMeans(&wg) report.SaveComparisonOfMeans(*pL, benchCount) report.SaveTexAllPics() report.SaveTexAllTables() } report.SaveAndPrint(*doPrint) log.Println("looks like we're done") log.Println("run an equivalent of `pdflatex -clean -shell-escape -interaction=nonstopmode ./report.tex` to get a pdf") }