调整表达式运算错误,重新排版代码,优化单纯形搜索过程

This commit is contained in:
LU
2026-10-09 16:44:19 +08:00
parent 2d11592fd3
commit d469796009
8 changed files with 485 additions and 489 deletions
+42 -46
View File
@@ -3,60 +3,56 @@
namespace sv {
class LinSolver {
public:
friend class Model;
LinSolver();
~LinSolver();
class LinSolver {
public:
friend class Model;
LinSolver();
~LinSolver();
LinSolver(const LinSolver& solver);
LinSolver& operator=(const LinSolver& solver);
LinSolver(const LinSolver &solver);
LinSolver &operator=(const LinSolver &solver);
Var* addVars(int col, VarType type);
Var& getVar(int idx);
void addConstr(const Expr& expr, ConstrOper sense, double rhs);
void setObjective(Expr obje, int sense = MDL_MAXIMIZE);
void print();
Var *addVars(int col, VarType type);
Var &getVar(int idx);
void addConstr(const Expr &expr, ConstrOper sense, double rhs);
void setObjective(Expr obje, int sense = MDL_MAXIMIZE);
void print();
double get(DoubleAttr attr);
int get(IntAttr attr);
double get(DoubleAttr attr);
int get(IntAttr attr);
rtn optimize();
protected:
rtn optimize();
double _simplex();
rtn _pivot(std::pair<size_t, size_t>& p);
rtn feasible_solution();
void _gaussian(std::pair<size_t, size_t> p);
protected:
double _simplex();
rtn _pivot(std::pair<size_t, size_t> &p);
rtn feasible_solution();
void _gaussian(std::pair<size_t, size_t> p);
std::vector<std::pair<int, Var*>> vars;
std::vector<std::pair<int, Var *>> vars;
matrix table;
matrix ope_table;
size_t cn, bn;
std::vector<int> basic;
rtn rtn_;
double obj_;
int sense;
};
matrix table;
matrix ope_table;
size_t cn, bn;
std::vector<int> basic;
rtn rtn_;
double obj_;
int sense;
};
class Model
{
public:
Model();
rtn optimize();
Var* addVars(int col, VarType type);
void addConstr(const Expr& expr, ConstrOper sense, double rhs);
void setObjective(Expr obje, int sense = MDL_MAXIMIZE);
double get(DoubleAttr attr);
int get(IntAttr attr);
private:
LinSolver solver;
};
}
class Model {
public:
Model();
rtn optimize();
Var *addVars(int col, VarType type);
void addConstr(const Expr &expr, ConstrOper sense, double rhs);
void setObjective(Expr obje, int sense = MDL_MAXIMIZE);
double get(DoubleAttr attr);
int get(IntAttr attr);
private:
LinSolver solver;
};
} // namespace sv