EigenOpt 1.0.0
Loading...
Searching...
No Matches
simplex_internal.hpp File Reference
#include <Eigen/Dense>
#include <string>
#include <vector>
#include "simplex_internal.hxx"
Include dependency graph for simplex_internal.hpp:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  EigenOpt::simplex::internal::VariableDomain
 Auxiliay structure to store the domain of a variable. More...
 

Namespaces

namespace  EigenOpt
 Main namespace of this project, containing all utilities.
 
namespace  EigenOpt::simplex
 Contains functions to solve linear programming problems with the Simplex method.
 
namespace  EigenOpt::simplex::internal
 Utility functions used by the Simplex algorithm.
 

Functions

template<class Scalar >
bool EigenOpt::simplex::internal::deduce_variables_domains (const Eigen::Matrix< Scalar, Eigen::Dynamic, Eigen::Dynamic > &C, const Eigen::Matrix< Scalar, Eigen::Dynamic, 1 > &d, const Scalar &small_number, std::vector< VariableDomain > &domains, std::string &halt_reason)
 Given a set of inequality constraints, deduce the domain of the decision variables.
 
template<class Scalar >
Eigen::Matrix< Scalar, Eigen::Dynamic, Eigen::Dynamic > EigenOpt::simplex::internal::transformation_matrix_from_domains (const std::vector< VariableDomain > &domains)
 Calculate a transformation matrix so that \(\bm{x}=\bm{T}\bm{w}\), \(w \geq 0\).
 
template<class Scalar >
bool EigenOpt::simplex::internal::transformation_matrix (const Eigen::Matrix< Scalar, Eigen::Dynamic, Eigen::Dynamic > &C, const Eigen::Matrix< Scalar, Eigen::Dynamic, 1 > &d, const Scalar &small_number, Eigen::Matrix< Scalar, Eigen::Dynamic, Eigen::Dynamic > &T, std::string &halt_reason)
 Calculate a transformation matrix so that \(\bm{x}=\bm{T}\bm{w}\), \(w \geq 0\).
 
template<class Scalar >
void EigenOpt::simplex::internal::create_tableau (const Eigen::Matrix< Scalar, Eigen::Dynamic, Eigen::Dynamic > &C, const Eigen::Matrix< Scalar, Eigen::Dynamic, 1 > &d, Eigen::Matrix< Scalar, Eigen::Dynamic, Eigen::Dynamic > &tableau, std::vector< int > &basic_variables)
 Create a Simplex Tableau given a set of inequality constraints.
 
template<class Scalar >
void EigenOpt::simplex::internal::eliminate_objective (Eigen::Matrix< Scalar, Eigen::Dynamic, Eigen::Dynamic > &tableau, const std::vector< int > &basic_variables)
 Use Gaussian elimination on the last row of the tableau.
 
template<class Scalar >
void EigenOpt::simplex::internal::pivot (Eigen::Matrix< Scalar, Eigen::Dynamic, Eigen::Dynamic > &tableau, int entering_variable, int leaving_variable)
 Perform a pivot operation between a basic and a non-basic variable.
 
template<class Scalar >
bool EigenOpt::simplex::internal::simplex (Eigen::Matrix< Scalar, Eigen::Dynamic, Eigen::Dynamic > &tableau, std::vector< int > &basic_variables, const Scalar &small_number, std::string &halt_reason)
 Perform successive pivot operations until a termination condition is met.
 
template<class Scalar >
bool EigenOpt::simplex::internal::two_steps_method (const Eigen::Matrix< Scalar, Eigen::Dynamic, 1 > &objective, Eigen::Matrix< Scalar, Eigen::Dynamic, Eigen::Dynamic > &tableau, std::vector< int > &basic_variables, unsigned int na, const Scalar &small_number, std::string &halt_reason)
 Solve a minimization problem using the two-steps Simplex method.
 
template<class Scalar >
bool EigenOpt::simplex::internal::penalty_method (const Eigen::Matrix< Scalar, Eigen::Dynamic, 1 > &objective, Eigen::Matrix< Scalar, Eigen::Dynamic, Eigen::Dynamic > &tableau, std::vector< int > &basic_variables, unsigned int na, const Scalar &small_number, const Scalar &large_number, std::string &halt_reason)
 Solve a minimization problem using the penalty Simplex method.