rework
This commit is contained in:
32 files changed
+75060
-630
No files matched your search
@@ -0,0 +1,64 @@
|
||||
#pragma once
|
||||
|
||||
#include <filesystem>
|
||||
|
||||
#include <functional>
|
||||
#include <variant>
|
||||
#include <vector>
|
||||
#include "autoopt/parabola_new.hpp"
|
||||
#include "autoopt/ellipse_new.hpp"
|
||||
#include "autoopt/importer.hpp"
|
||||
|
||||
namespace autoopt {
|
||||
|
||||
enum CurveType {
|
||||
Parabola,
|
||||
Ellipse
|
||||
};
|
||||
|
||||
using curves = std::variant<parabola_new, ellipse_new>;
|
||||
|
||||
struct optimizer {
|
||||
|
||||
public:
|
||||
void import_file(std::filesystem::path file_path);
|
||||
void set_lower_bound(double lb);
|
||||
void set_upper_bound(double ub);
|
||||
|
||||
void set_curve_type(int curve_type);
|
||||
void set_initial(size_t i, double value);
|
||||
void set_delta(size_t i, double value);
|
||||
void flip_curve();
|
||||
void calc_fit();
|
||||
|
||||
void set_plot_input_cb(std::function<void(Eigen::VectorXd xs, std::vector<Eigen::VectorXd> yss)> cb);
|
||||
void set_plot_slope_cb(std::function<void(Eigen::VectorXd xs, Eigen::VectorXd ys, Eigen::VectorXd ys_curve)> cb);
|
||||
void set_init_bounds_cb(std::function<void(double lb, double ub, double step)> cb);
|
||||
void set_update_table_cb(std::function<void(std::vector<std::tuple<std::string, double, double>> entries)> cb);
|
||||
void set_plot_error_cb(std::function<void(Eigen::VectorXd xs, Eigen::VectorXd ys)> cb);
|
||||
|
||||
private:
|
||||
struct data {
|
||||
raw_data _raw;
|
||||
double lb, ub;
|
||||
};
|
||||
std::optional<data> _data;
|
||||
std::optional<test_data> _test_data;
|
||||
curves _curve;
|
||||
std::optional<std::pair<Eigen::VectorXd, double>> _fit_result;
|
||||
|
||||
std::function<void(Eigen::VectorXd xs, std::vector<Eigen::VectorXd> yss)> _plot_input_cb;
|
||||
std::function<void(double lb, double ub, double step)> _init_bounds_cb;
|
||||
std::function<void(Eigen::VectorXd xs, Eigen::VectorXd ys, Eigen::VectorXd ys_curve)> _plot_slope_cb;
|
||||
std::function<void(std::vector<std::tuple<std::string, double, double>> entries)> _param_table_cb;
|
||||
std::function<void(Eigen::VectorXd xs, Eigen::VectorXd ys)> _plot_error_cb;
|
||||
|
||||
void update_test_data();
|
||||
void init_bounds_cb();
|
||||
void plot_input_cb();
|
||||
void plot_slope_cb();
|
||||
void update_table_cb();
|
||||
void plot_error_cb();
|
||||
};
|
||||
|
||||
} // namespace autoopt
|
||||
Reference in new issue
Block a user