Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030 #include <ifopt/variable_set.h>
00031 #include <ifopt/constraint_set.h>
00032 #include <ifopt/cost_term.h>
00033
00034
00035 namespace ifopt {
00036
00037 VariableSet::VariableSet(int n_var, const std::string& name)
00038 : Component(n_var, name)
00039 {
00040 }
00041
00042 ConstraintSet::ConstraintSet (int row_count, const std::string& name)
00043 : Component(row_count, name)
00044 {
00045 }
00046
00047 ConstraintSet::Jacobian
00048 ConstraintSet::GetJacobian () const
00049 {
00050 Jacobian jacobian(GetRows(), variables_->GetRows());
00051
00052 int col = 0;
00053 for (const auto& vars : variables_->GetComponents()) {
00054
00055 int n = vars->GetRows();
00056 Jacobian jac = Jacobian(GetRows(), n);
00057
00058 FillJacobianBlock(vars->GetName(), jac);
00059
00060
00061 for (int k=0; k<jac.outerSize(); ++k)
00062 for (Jacobian::InnerIterator it(jac,k); it; ++it)
00063 jacobian.coeffRef(it.row(), col+it.col()) = it.value();
00064
00065 col += n;
00066 }
00067
00068 return jacobian;
00069 }
00070
00071 void
00072 ConstraintSet::LinkWithVariables(const VariablesPtr& x)
00073 {
00074 variables_ = x;
00075 InitVariableDependedQuantities(x);
00076 }
00077
00078 CostTerm::CostTerm (const std::string& name) :ConstraintSet(1, name)
00079 {
00080 }
00081
00082 CostTerm::VectorXd
00083 CostTerm::GetValues() const
00084 {
00085 VectorXd cost(1);
00086 cost(0) = GetCost();
00087 return cost;
00088 }
00089
00090 CostTerm::VecBound
00091 CostTerm::GetBounds() const
00092 {
00093 return VecBound(GetRows(), NoBound);
00094 }
00095
00096
00097 }