#pragma once #include namespace sv { class Model { public: Model(); Var* addVars(int col); void addConstr(const Expr& expr, ConstrOper sense, double rhs); void setObjective(Expr obje, int sense = MDL_MAXIMIZE); void print(); rtn optimize(); double get(DoubleAttr attr); int get(IntAttr attr); private: double _simplex(); rtn _pivot(std::pair& p); void _gaussian(std::pair p); Var* vars; matrix mt; size_t cn, bn; std::vector basic; rtn rtn_; double res_; int sense; }; }