[Lemon-commits] alpar: r3097 - hugo/trunk/lemon
Lemon SVN
svn at lemon.cs.elte.hu
Mon Dec 4 14:13:14 CET 2006
Author: alpar
Date: Mon Dec 4 14:13:14 2006
New Revision: 3097
Modified:
hugo/trunk/lemon/lp_glpk.cc
hugo/trunk/lemon/lp_glpk.h
Log:
Copy constructor for LpGlpk
Modified: hugo/trunk/lemon/lp_glpk.cc
==============================================================================
--- hugo/trunk/lemon/lp_glpk.cc (original)
+++ hugo/trunk/lemon/lp_glpk.cc Mon Dec 4 14:13:14 2006
@@ -31,6 +31,37 @@
messageLevel(0);
}
+ LpGlpk::LpGlpk(const LpGlpk &glp) : Parent(glp),
+ lp(lpx_create_prob()) {
+ ///\todo constrol function for this:
+ lpx_set_int_parm(lp, LPX_K_DUAL, 1);
+ messageLevel(0);
+ //Coefficient matrix, row bounds
+ lpx_add_rows(lp, lpx_get_num_rows(glp.lp));
+ lpx_add_cols(lp, lpx_get_num_cols(glp.lp));
+ int len;
+ int ind[1+lpx_get_num_cols(glp.lp)];
+ Value val[1+lpx_get_num_cols(glp.lp)];
+ for (int i=1;i<=lpx_get_num_rows(glp.lp);++i)
+ {
+ len=lpx_get_mat_row(glp.lp,i,ind,val);
+ lpx_set_mat_row(lp, i,len,ind,val);
+ lpx_set_row_bnds(lp,i,lpx_get_row_type(glp.lp,i),
+ lpx_get_row_lb(glp.lp,i),lpx_get_row_ub(glp.lp,i));
+ }
+
+ //Objective function, coloumn bounds
+ lpx_set_obj_dir(lp, lpx_get_obj_dir(glp.lp));
+ //Objectif function's constant term treated separately
+ lpx_set_obj_coef(lp,0,lpx_get_obj_coef(glp.lp,0));
+ for (int i=1;i<=lpx_get_num_cols(glp.lp);++i)
+ {
+ lpx_set_obj_coef(lp,i,lpx_get_obj_coef(glp.lp,i));
+ lpx_set_col_bnds(lp,i,lpx_get_col_type(glp.lp,i),
+ lpx_get_col_lb(glp.lp,i),lpx_get_col_ub(glp.lp,i));
+ }
+ }
+
LpGlpk::~LpGlpk() {
lpx_delete_prob(lp);
}
@@ -47,7 +78,7 @@
LpSolverBase &LpGlpk::_newLp()
{
- LpGlpk* newlp=new LpGlpk();
+ LpGlpk* newlp=new LpGlpk;
return *newlp;
}
@@ -55,33 +86,7 @@
LpSolverBase &LpGlpk::_copyLp()
{
- LpGlpk* newlp=new LpGlpk();
-
- //Coefficient matrix, row bounds
- lpx_add_rows(newlp->lp, lpx_get_num_rows(lp));
- lpx_add_cols(newlp->lp, lpx_get_num_cols(lp));
- int len;
- int ind[1+lpx_get_num_cols(lp)];
- Value val[1+lpx_get_num_cols(lp)];
- for (int i=1;i<=lpx_get_num_rows(lp);++i){
- len=lpx_get_mat_row(lp,i,ind,val);
- lpx_set_mat_row(newlp->lp, i,len,ind,val);
- lpx_set_row_bnds(newlp->lp,i,lpx_get_row_type(lp,i),
- lpx_get_row_lb(lp,i),lpx_get_row_ub(lp,i));
- }
-
- //Objective function, coloumn bounds
- lpx_set_obj_dir(newlp->lp, lpx_get_obj_dir(lp));
- //Objectif function's constant term treated separately
- lpx_set_obj_coef(newlp->lp,0,lpx_get_obj_coef(lp,0));
- for (int i=1;i<=lpx_get_num_cols(lp);++i){
- lpx_set_obj_coef(newlp->lp,i,lpx_get_obj_coef(lp,i));
- lpx_set_col_bnds(newlp->lp,i,lpx_get_col_type(lp,i),
- lpx_get_col_lb(lp,i),lpx_get_col_ub(lp,i));
-
-
- }
-
+ LpGlpk* newlp=new LpGlpk(*this);
return *newlp;
}
Modified: hugo/trunk/lemon/lp_glpk.h
==============================================================================
--- hugo/trunk/lemon/lp_glpk.h (original)
+++ hugo/trunk/lemon/lp_glpk.h Mon Dec 4 14:13:14 2006
@@ -44,6 +44,7 @@
typedef LpSolverBase Parent;
LpGlpk();
+ LpGlpk(const LpGlpk &);
~LpGlpk();
protected:
@@ -108,7 +109,8 @@
///
///The presolver is off by default.
void presolver(bool b);
-
+
+ LPX *lpx() {return lp;}
};
} //END OF NAMESPACE LEMON
More information about the Lemon-commits
mailing list