/usr/include/coin/ClpAmplObjective.hpp is in coinor-libcbc-dev 2.5.0-2.3.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 | /* $Id: ClpAmplObjective.hpp 1173 2009-06-04 09:44:10Z forrest $ */
// Copyright (C) 2007, International Business Machines
// Corporation and others. All Rights Reserved.
#ifndef ClpAmplObjective_H
#define ClpAmplObjective_H
#include "ClpObjective.hpp"
#include "CoinPackedMatrix.hpp"
//#############################################################################
/** Ampl Objective Class
*/
class ClpAmplObjective : public ClpObjective {
public:
///@name Stuff
//@{
/** Returns gradient. If Ampl then solution may be NULL,
also returns an offset (to be added to current one)
If refresh is false then uses last solution
Uses model for scaling
includeLinear 0 - no, 1 as is, 2 as feasible
*/
virtual double * gradient(const ClpSimplex * model,
const double * solution, double & offset, bool refresh,
int includeLinear = 2);
/// Resize objective
/** Returns reduced gradient.Returns an offset (to be added to current one).
*/
virtual double reducedGradient(ClpSimplex * model, double * region,
bool useFeasibleCosts);
/** Returns step length which gives minimum of objective for
solution + theta * change vector up to maximum theta.
arrays are numberColumns+numberRows
Also sets current objective, predicted and at maximumTheta
*/
virtual double stepLength(ClpSimplex * model,
const double * solution,
const double * change,
double maximumTheta,
double & currentObj,
double & predictedObj,
double & thetaObj);
/// Return objective value (without any ClpModel offset) (model may be NULL)
virtual double objectiveValue(const ClpSimplex * model, const double * solution) const ;
virtual void resize(int newNumberColumns) ;
/// Delete columns in objective
virtual void deleteSome(int numberToDelete, const int * which) ;
/// Scale objective
virtual void reallyScale(const double * columnScale) ;
/** Given a zeroed array sets nonlinear columns to 1.
Returns number of nonlinear columns
*/
virtual int markNonlinear(char * which);
/// Say we have new primal solution - so may need to recompute
virtual void newXValues() ;
//@}
///@name Constructors and destructors
//@{
/// Default Constructor
ClpAmplObjective();
/// Constructor from ampl info
ClpAmplObjective(void * amplInfo);
/** Copy constructor .
*/
ClpAmplObjective(const ClpAmplObjective & rhs);
/// Assignment operator
ClpAmplObjective & operator=(const ClpAmplObjective& rhs);
/// Destructor
virtual ~ClpAmplObjective ();
/// Clone
virtual ClpObjective * clone() const;
//@}
///@name Gets and sets
//@{
/// Linear objective
double * linearObjective() const;
//@}
//---------------------------------------------------------------------------
private:
///@name Private member data
/// Saved offset
double offset_;
/// Ampl info
void * amplObjective_;
/// Objective
double * objective_;
/// Gradient
double * gradient_;
//@}
};
#endif
|