source: trunk/Alps/examples/Abc/AbcSolution.h @ 277

Last change on this file since 277 was 277, checked in by andreasw, 13 years ago

first working version with autotools

File size: 2.6 KB
Line 
1/*===========================================================================*
2 * This file is part of the Abstract Library for Parallel Search (ALPS).     *
3 *                                                                           *
4 * ALPS is distributed under the Common Public License as part of the        *
5 * COIN-OR repository (http://www.coin-or.org).                              *
6 *                                                                           *
7 * Authors: Yan Xu, SAS Institute Inc.                                       *
8 *          Ted Ralphs, Lehigh University                                    *
9 *          Laszlo Ladanyi, IBM T.J. Watson Research Center                  *
10 *          Matthew Saltzman, Clemson University                             *
11 *                                                                           *
12 *                                                                           *
13 * Copyright (C) 2001-2004, International Business Machines                  *
14 * Corporation, Lehigh University, Yan Xu, Ted Ralphs, Matthew Salzman and   *
15 * others. All Rights Reserved.                                              *
16 *===========================================================================*/
17
18#ifndef AbcSolution_h
19#define AbcSolution_h
20
21#include "AlpsSolution.h"
22
23#include "AbcModel.h"
24
25/** This class holds a MIP feasible primal solution. */
26class AbcSolution : public AlpsSolution {
27 private:
28    int size_;
29    double* value_;
30    double objective_;
31   
32 public:
33    AbcSolution() 
34        : 
35        size_(0), 
36        value_(0), 
37        objective_() 
38        {}
39    AbcSolution(const int s, const double* val, const double obj) 
40        : 
41        size_(s)
42        { 
43            if (size_ >= 0) {
44                value_ = new double [size_];
45                memcpy(value_, val, sizeof(double) * size_);
46            }
47        }
48
49    ~AbcSolution() { 
50        if (value_ != 0) {
51            delete [] value_; 
52            value_ = 0;
53        }
54    }
55 
56    /** Get the objective value value */
57    double getObjValue() const { return objective_; }
58
59    virtual double getQuality() const { return getObjValue(); }
60 
61    /** Get the size of the solution */
62    int getSize() const { return size_; }
63   
64    /** Get the column solution */
65    const double* getColSolution() const 
66        { return value_; }
67   
68    /** Get item i in the solution vector */
69    double getColSolution(int i) const { return value_[i]; }
70   
71    /** Print out the solution.*/
72    virtual void print(std::ostream& os) const;
73 
74    /** The method that encodes the solution into a encoded object. */
75    virtual AlpsEncoded* encode() const;
76 
77    /** The method that decodes the solution from a encoded object. */
78    virtual AlpsKnowledge* decode(AlpsEncoded&) const;
79};
80
81#endif
Note: See TracBrowser for help on using the repository browser.