43 #ifndef SHARK_MODELS_PROJECTBUDGETMAINTENANCESTRATEGY_H 44 #define SHARK_MODELS_PROJECTBUDGETMAINTENANCESTRATEGY_H 63 template<
class InputType>
67 typedef typename DataType::element_type
ElementType;
84 virtual void addToModel (ModelType& model,
InputType const& alpha, ElementType
const& supportVector) {
91 {
return "ProjectBudgetMaintenanceStrategy"; }
109 typedef typename DataType::element_type ElementType;
128 virtual void addToModel (ModelType& model, InputType
const& alpha, ElementType
const& supportVector) {
136 model.
basis().
element(maxIndex - 1) = supportVector.input;
137 row (model.
alpha(), maxIndex - 1) = alpha;
140 size_t firstIndex = 0;
141 double firstAlpha = 0;
146 if (firstAlpha == 0.0f)
150 model.
basis().
element(firstIndex) = supportVector.input;
151 row (model.
alpha(), firstIndex) = alpha;
154 row (model.
alpha(), maxIndex - 1).clear();
168 std::vector<RealVector> singlePointVector (1,model.
basis().
element(firstIndex));
169 std::vector<unsigned int> singlePointLabel (1, 0);
172 row (singlePointExpansion.alpha(), 0) =
row (model.
alpha(), firstIndex);
180 RealVector point(inputDimension * (maxIndex - 1));
183 size_t linearIndex = 0;
184 for(std::size_t t = 0; t < maxIndex; t++){
193 RealMatrix projectedAlphas = distance.findOptimalBeta(point);
200 for (std::size_t j = 0; j < maxIndex; j++)
206 for (std::size_t c = 0; c < model.
alpha().size2(); c++)
207 model.
alpha(j, c) += projectedAlphas(linearIndex, c);
213 model.
basis().
element(firstIndex) = supportVector.input;
214 row (model.
alpha(), firstIndex) = alpha;
217 row (model.
alpha(), maxIndex - 1).clear();
223 {
return "ProjectBudgetMaintenanceStrategy"; }