Line data Source code
1 : #pragma once 2 : 3 : #include <ctpl_stl.h> 4 : 5 : #include "Log/ProgressLogger.hpp" 6 : #include "Opt/UnivariateSolver.hpp" 7 : #include "Static/Demand.hpp" 8 : #include "Static/Solution.hpp" 9 : #include "Static/algos/AllOrNothing.hpp" 10 : #include "Static/algos/FrankWolfe.hpp" 11 : #include "Static/supply/NetworkDifferentiable.hpp" 12 : 13 : namespace Static { 14 0 : class ConjugateFrankWolfe: private FrankWolfe { 15 : const NetworkDifferentiable *supplyDifferentiable; 16 : 17 : public: 18 : ConjugateFrankWolfe( 19 : AllOrNothing &aon, 20 : Opt::UnivariateSolver &solver, 21 : Log::ProgressLogger &logger 22 : ); 23 : 24 : using FrankWolfe::setIterations; 25 : using FrankWolfe::setStopCriteria; 26 : 27 : Solution solve( 28 : const NetworkDifferentiable &network, 29 : const Demand &demand, 30 : const Solution &startingSolution 31 : ); 32 : 33 : protected: 34 : virtual double getExpectedIterations(); 35 : 36 : virtual Solution step1(); 37 : }; 38 : } // namespace Static