51 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			C++
		
	
	
			
		
		
	
	
			51 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			C++
		
	
	
| /* ----------------------------------------------------------------------------
 | |
| 
 | |
|  * GTSAM Copyright 2010, Georgia Tech Research Corporation,
 | |
|  * Atlanta, Georgia 30332-0415
 | |
|  * All Rights Reserved
 | |
|  * Authors: Frank Dellaert, et al. (see THANKS for the full author list)
 | |
| 
 | |
|  * See LICENSE for the license information
 | |
| 
 | |
|  * -------------------------------------------------------------------------- */
 | |
| 
 | |
| /**
 | |
|  * @file     QPSolver.h
 | |
|  * @brief    Policy of ActiveSetSolver to solve Quadratic Programming Problems
 | |
|  * @author   Duy Nguyen Ta
 | |
|  * @author   Ivan Dario Jimenez
 | |
|  * @date     6/16/16
 | |
|  */
 | |
| 
 | |
| #pragma once
 | |
| 
 | |
| #include <gtsam_unstable/linear/QP.h>
 | |
| #include <gtsam_unstable/linear/ActiveSetSolver.h>
 | |
| #include <gtsam_unstable/linear/QPInitSolver.h>
 | |
| #include <limits>
 | |
| #include <algorithm>
 | |
| 
 | |
| namespace gtsam {
 | |
| 
 | |
| /// Policy for ActivetSetSolver to solve Linear Programming \sa QP problems
 | |
| struct QPPolicy {
 | |
|   /// Maximum alpha for line search x'=xk + alpha*p, where p is the cost gradient
 | |
|   /// For QP, maxAlpha = 1 is the minimum point of the quadratic cost
 | |
|   static constexpr double maxAlpha = 1.0;
 | |
| 
 | |
|   /// Simply the cost of the QP problem
 | |
|   static const GaussianFactorGraph buildCostFunction(const QP& qp,
 | |
|       const VectorValues& xk = VectorValues()) {
 | |
|     GaussianFactorGraph no_constant_factor;
 | |
|     for (auto factor : qp.cost) {
 | |
|       HessianFactor hf = static_cast<HessianFactor>(*factor);
 | |
|       no_constant_factor.push_back(hf);
 | |
|     }
 | |
|     return no_constant_factor;
 | |
|   }
 | |
| };
 | |
| 
 | |
| using QPSolver = ActiveSetSolver<QP, QPPolicy, QPInitSolver>;
 | |
| 
 | |
| }
 |