Main Page   Class Hierarchy   Compound List   File List   Contact   Download   Symbolic Constraints   Examples  

scil.c

00001 #line 187 "lw/scil.lw"
00002 #include<scil/scil.h>
00003 
00004 using namespace SCIL;
00005 using namespace LEDA;
00006 
00007 ILP_Problem_::ILP_Problem_(Opt_Sense os_, subproblem* b, 
00008                           Subproblem_Generator* sg,
00009                           Subproblem_Selector* ss, Solution_Saver* s) 
00010   : os(os_), root(b), sub_gen(sg), sub_sel(ss), sol_save(s)
00011 { };
00012 
00013 ILP_Problem_::ILP_Problem_() {
00014   root=0;
00015   sub_gen=0;
00016   sub_sel=0;
00017   sol_save=0;
00018 };
00019 
00020 #line 210 "lw/scil.lw"
00021 void ILP_Problem_::optimize() {
00022   subproblem_result bs;
00023   subproblem* act_bound=root;
00024   root->add_sym_constraint(int_cons);
00025   nSP=0;
00026 
00027   while(act_bound!=nil) {
00028     cout<<nSP<<"th subproblem "<<act_bound->rank()<<" rank "
00029         <<sol_save->obj_value()<<" best known solution\n";
00030 
00031     bs=act_bound->compute(sol_save);
00032 
00033     if(bs==br_branch) {
00034       nSP+=sub_gen->generate(act_bound, sub_sel);
00035     };
00036 
00037     if((bs==br_fathom) && (act_bound!=root))
00038       delete act_bound;
00039 
00040     act_bound=sub_sel->select();
00041     if(act_bound!=nil) act_bound->expand();
00042   }
00043 }
00044 
00045 
00046 #line 240 "lw/scil.lw"
00047 var ILP_Problem_::add_binary_variable(double d) {
00048   return root->add_binary_variable(d);
00049 };
00050 
00051 var ILP_Problem_::add_integer_variable(double d, int lb, int ub) {
00052   return root->add_integer_variable(d, lb, ub);
00053 };
00054 
00055 var ILP_Problem_::add_continous_variable(double d, double lb, double ub) {
00056   return root->add_continous_variable(d, lb, ub);
00057 };
00058 
00059 var ILP_Problem_::add_integer_variable(var_obj* va) {
00060   return root->add_integer_variable(va);
00061 };
00062 
00063 var ILP_Problem_::add_continous_variable(var_obj* va) {
00064   return root->add_continous_variable(va);
00065 };
00066 
00067 cons ILP_Problem_::add_basic_constraint(cons_sense s, double d) {
00068   return root->add_basic_constraint(s, d);
00069 };
00070 
00071 cons ILP_Problem_::add_basic_constraint(cons_obj* co) {
00072   return root->add_basic_constraint(co);
00073 };
00074 
00075 void ILP_Problem_::add_sym_constraint(sym_constraint* sc) {
00076   root->add_sym_constraint(sc);
00077 };
00078 
00079 double ILP_Problem_::solution(var v) {
00080   return sol_save->get_value(v);
00081 };
00082 
00083 Integrality_Constraint* ILP_Problem_::integrality_constraint() {
00084   return int_cons;
00085 };

Generated on Tue Nov 16 15:18:21 2004 for SCIL by doxygen1.2.16