source: stable/1.15/Clp/src/ClpConstraintQuadratic.hpp @ 1989

Last change on this file since 1989 was 1665, checked in by lou, 9 years ago

Add EPL license notice in src.

  • Property svn:keywords set to Id
File size: 3.5 KB
Line 
1/* $Id: ClpConstraintQuadratic.hpp 1665 2011-01-04 17:55:54Z forrest $ */
2// Copyright (C) 2007, International Business Machines
3// Corporation and others.  All Rights Reserved.
4// This code is licensed under the terms of the Eclipse Public License (EPL).
5
6#ifndef ClpConstraintQuadratic_H
7#define ClpConstraintQuadratic_H
8
9#include "ClpConstraint.hpp"
10
11//#############################################################################
12
13/** Quadratic Constraint Class
14
15*/
16
17class ClpConstraintQuadratic : public ClpConstraint {
18
19public:
20
21     ///@name Stuff
22     //@{
23
24
25     /** Fills gradient.  If Quadratic then solution may be NULL,
26         also returns true value of function and offset so we can use x not deltaX in constraint
27         If refresh is false then uses last solution
28         Uses model for scaling
29         Returns non-zero if gradient udefined at current solution
30     */
31     virtual int gradient(const ClpSimplex * model,
32                          const double * solution,
33                          double * gradient,
34                          double & functionValue ,
35                          double & offset,
36                          bool useScaling = false,
37                          bool refresh = true) const ;
38     /// Resize constraint
39     virtual void resize(int newNumberColumns) ;
40     /// Delete columns in  constraint
41     virtual void deleteSome(int numberToDelete, const int * which) ;
42     /// Scale constraint
43     virtual void reallyScale(const double * columnScale) ;
44     /** Given a zeroed array sets nonquadratic columns to 1.
45         Returns number of nonquadratic columns
46      */
47     virtual int markNonlinear(char * which) const ;
48     /** Given a zeroed array sets possible nonzero coefficients to 1.
49         Returns number of nonzeros
50      */
51     virtual int markNonzero(char * which) const;
52     //@}
53
54
55     ///@name Constructors and destructors
56     //@{
57     /// Default Constructor
58     ClpConstraintQuadratic();
59
60     /// Constructor from quadratic
61     ClpConstraintQuadratic(int row, int numberQuadraticColumns, int numberColumns,
62                            const CoinBigIndex * start,
63                            const int * column, const double * element);
64
65     /** Copy constructor .
66     */
67     ClpConstraintQuadratic(const ClpConstraintQuadratic & rhs);
68
69     /// Assignment operator
70     ClpConstraintQuadratic & operator=(const ClpConstraintQuadratic& rhs);
71
72     /// Destructor
73     virtual ~ClpConstraintQuadratic ();
74
75     /// Clone
76     virtual ClpConstraint * clone() const;
77     //@}
78     ///@name Gets and sets
79     //@{
80     /// Number of coefficients
81     virtual int numberCoefficients() const;
82     /// Number of columns in constraint
83     inline int numberColumns() const {
84          return numberColumns_;
85     }
86     /// Column starts
87     inline CoinBigIndex * start() const {
88          return start_;
89     }
90     /// Columns
91     inline const int * column() const {
92          return column_;
93     }
94     /// Coefficients
95     inline const double * coefficient() const {
96          return coefficient_;
97     }
98     //@}
99
100     //---------------------------------------------------------------------------
101
102private:
103     ///@name Private member data
104     /// Column starts
105     CoinBigIndex * start_;
106     /// Column (if -1 then linear coefficient)
107     int * column_;
108     /// Coefficients
109     double * coefficient_;
110     /// Useful to have number of columns about
111     int numberColumns_;
112     /// Number of coefficients in gradient
113     int numberCoefficients_;
114     /// Number of quadratic columns
115     int numberQuadraticColumns_;
116     //@}
117};
118
119#endif
Note: See TracBrowser for help on using the repository browser.