Program Listing for File utils.h
↰ Return to documentation for file (include/support/utils.h
)
/* #############################################
* This file is part of
* ZERO
*
* Copyright (c) 2020
* Released under the Creative Commons
* CC BY-NC-SA 4.0 License
*
* Find out more at
* https://github.com/ds4dm/ZERO
* #############################################*/
#pragma once
#include "coin/CoinPackedMatrix.hpp"
#include "coin/CoinPackedVector.hpp"
#include "zero.h"
#include <armadillo>
#include <fstream>
#include <set>
#include <zero.h>
namespace Utils {
arma::mat resizePatch(const arma::mat &mat, const unsigned int nR, const unsigned int nC);
arma::vec resizePatch(const arma::vec &mat, const unsigned int nR);
bool containsRow(const arma::sp_mat &A, const arma::vec &row, const double tol = 1e-6);
bool containsElement(const arma::vec &b, const double &element, const double tol = 1e-6);
bool containsConstraint(const arma::sp_mat &A,
const arma::vec & b,
const arma::vec & lhs,
const double & rhs,
const double tol = 1e-6);
bool containsConstraint(const arma::sp_mat &A,
const arma::vec & b,
const arma::sp_mat &lhs,
const double & rhs,
const double tol = 1e-6);
// Saving and retrieving an arma::vec
void appendSave(const arma::vec & matrix,
const std::string &out,
const std::string &header = "",
bool erase = false);
long int appendRead(arma::vec & matrix,
const std::string &in,
long int pos,
const std::string &header = "");
// Saving and retrieving an arma::sp_mat
void appendSave(const arma::sp_mat &matrix,
const std::string & out,
const std::string & header = "",
bool erase = false);
long int appendRead(arma::sp_mat & matrix,
const std::string &in,
long int pos,
const std::string &header = "");
// Saving and retrieving an std::vector<double>
void appendSave(const std::vector<double> v,
const std::string out,
const std::string header = "",
bool erase = false);
long int appendRead(std::vector<double> &v,
const std::string in,
long int pos,
const std::string header = "");
// Saving std::string
void appendSave(const std::string &v, const std::string &out, bool erase = false);
long int appendRead(std::string &v, const std::string &in, long int pos);
// Saving A long int
void appendSave(const long int v,
const std::string &out,
const std::string &header = "",
bool erase = false);
long int
appendRead(long int &v, const std::string &in, long int pos, const std::string &header = "");
// Saving A unsigned int
void appendSave(const unsigned int v,
const std::string &out,
const std::string &header = "",
bool erase = false);
long int
appendRead(unsigned int &v, const std::string &in, long int pos, const std::string &header = "");
bool isZero(const arma::mat &M, double tol = 1e-6) noexcept;
bool isZero(const arma::sp_mat &M, double tol = 1e-6) noexcept;
void sortByKey(perps &P);
VariableBounds intersectBounds(const VariableBounds &bA, const VariableBounds &bB);
CoinPackedMatrix armaToCoinSparse(const arma::sp_mat &A);
std::vector<CoinPackedVector> armaToCoinPackedVector(const arma::sp_mat &A);
std::string printBounds(const VariableBounds &bounds);
arma::vec normalizeVec(const arma::vec &v);
void normalizeIneq(arma::vec &lhs, double &rhs, bool force);
double round_nplaces(const double &value, const int &numDecimals = 5);
void addSparseConstraints(const arma::sp_mat &A,
const arma::vec & b,
GRBVar * x,
const std::string & basename,
GRBModel * model,
int sense,
GRBVar * z);
arma::sp_mat resizePatch(const arma::sp_mat &mat, const unsigned int nR, const unsigned int nC);
int vecToBin(const arma::vec &x);
int nonzeroDecimals(const double num, const int decimalBound = 6);
bool isEqualAbs(const double a, const double b, const double tol = 1e-6);
bool isEqualRel(const double a, const double b, const double percent = (1 - 1e-4));
bool isEqual(const double a,
const double b,
const double tol = 1e-6,
const double percent = (1 - 1e-4));
arma::sp_mat clearMatrix(const arma::sp_mat &A, double tol=1e-6, double percent=1-1e-6);
arma::vec clearVector(const arma::vec &b, double tol=1e-6, double percent=1-1e-6);
int getSign(double val);
} // namespace Utils
// namespace Utils