Files
general-solver/inc/solver.hpp
2025-05-19 14:02:28 +08:00

35 lines
569 B
C++

#pragma once
#include <common.hpp>
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<size_t, size_t>& p);
void _gaussian(std::pair<size_t, size_t> p);
Var* vars;
matrix mt;
size_t cn, bn;
std::vector<int> basic;
rtn rtn_;
double res_;
int sense;
};
}