C++ Reference
C++ Reference: Algorithms
knapsack_solver.h
Go to the documentation of this file.
virtual void GetLowerAndUpperBoundWhenItem(int item_id, bool is_item_in, int64_t *lower_bound, int64_t *upper_bound)
virtual int64_t Solve(TimeLimit *time_limit, bool *is_solution_optimal)=0
virtual ~BaseKnapsackSolver()
Definition: knapsack_solver.h:577
virtual void Init(const std::vector< int64_t > &profits, const std::vector< std::vector< int64_t > > &weights, const std::vector< int64_t > &capacities)=0
BaseKnapsackSolver(const std::string &solver_name)
Definition: knapsack_solver.h:575
virtual std::string GetName() const
Definition: knapsack_solver.h:597
virtual bool best_solution(int item_id) const =0
KnapsackCapacityPropagator(const KnapsackState &state, int64_t capacity)
bool UpdatePropagator(bool revert, const KnapsackAssignment &assignment) override
void CopyCurrentStateToSolutionPropagator(std::vector< bool > *solution) const override
void ComputeProfitBounds() override
~KnapsackCapacityPropagator() override
void InitPropagator() override
int GetNextItemId() const override
Definition: knapsack_solver.h:537
~KnapsackGenericSolver() override
KnapsackGenericSolver(const std::string &solver_name)
int GetNumberOfItems() const
Definition: knapsack_solver.h:621
void Init(const std::vector< int64_t > &profits, const std::vector< std::vector< int64_t > > &weights, const std::vector< int64_t > &capacities) override
int64_t Solve(TimeLimit *time_limit, bool *is_solution_optimal) override
bool best_solution(int item_id) const override
Definition: knapsack_solver.h:636
void GetLowerAndUpperBoundWhenItem(int item_id, bool is_item_in, int64_t *lower_bound, int64_t *upper_bound) override
void set_primary_propagator_id(int primary_propagator_id)
Definition: knapsack_solver.h:629
void Init(const std::vector< int64_t > &profits, const std::vector< int64_t > &weights)
int64_t current_profit() const
Definition: knapsack_solver.h:465
void CopyCurrentStateToSolution(bool has_one_propagator, std::vector< bool > *solution) const
virtual bool UpdatePropagator(bool revert, const KnapsackAssignment &assignment)=0
virtual void InitPropagator()=0
virtual void ComputeProfitBounds()=0
virtual int GetNextItemId() const =0
const KnapsackState & state() const
Definition: knapsack_solver.h:496
const std::vector< KnapsackItemPtr > & items() const
Definition: knapsack_solver.h:497
int64_t profit_upper_bound() const
Definition: knapsack_solver.h:467
virtual void CopyCurrentStateToSolutionPropagator(std::vector< bool > *solution) const =0
virtual ~KnapsackPropagator()
int64_t profit_lower_bound() const
Definition: knapsack_solver.h:466
void set_profit_lower_bound(int64_t profit)
Definition: knapsack_solver.h:499
KnapsackPropagator(const KnapsackState &state)
bool Update(bool revert, const KnapsackAssignment &assignment)
void set_profit_upper_bound(int64_t profit)
Definition: knapsack_solver.h:500
int64_t current_profit() const
Definition: knapsack_solver.h:345
void set_current_profit(int64_t profit)
Definition: knapsack_solver.h:346
int next_item_id() const
Definition: knapsack_solver.h:351
void set_next_item_id(int id)
Definition: knapsack_solver.h:352
int64_t profit_upper_bound() const
Definition: knapsack_solver.h:348
KnapsackSearchNode(const KnapsackSearchNode *const parent, const KnapsackAssignment &assignment)
void set_profit_upper_bound(int64_t profit)
Definition: knapsack_solver.h:349
const KnapsackAssignment & assignment() const
Definition: knapsack_solver.h:343
const KnapsackSearchNode *const parent() const
Definition: knapsack_solver.h:342
const KnapsackSearchNode & via() const
Definition: knapsack_solver.h:397
KnapsackSearchPath(const KnapsackSearchNode &from, const KnapsackSearchNode &to)
const KnapsackSearchNode * MoveUpToDepth(const KnapsackSearchNode &node, int depth) const
const KnapsackSearchNode & from() const
Definition: knapsack_solver.h:396
const KnapsackSearchNode & to() const
Definition: knapsack_solver.h:398
This library solves knapsack problems.
Definition: knapsack_solver.h:115
KnapsackSolver(SolverType solver_type, const std::string &solver_name)
bool BestSolutionContains(int item_id) const
Returns true if the item 'item_id' is packed in the optimal knapsack.
KnapsackSolver(const std::string &solver_name)
void set_time_limit(double time_limit_seconds)
Time limit in seconds.
Definition: knapsack_solver.h:233
int64_t Solve()
Solves the problem and returns the profit of the optimal solution.
@ KNAPSACK_DYNAMIC_PROGRAMMING_SOLVER
Dynamic Programming approach for single dimension problems.
Definition: knapsack_solver.h:145
@ KNAPSACK_DIVIDE_AND_CONQUER_SOLVER
Divide and Conquer approach for single dimension problems.
Definition: knapsack_solver.h:196
@ KNAPSACK_64ITEMS_SOLVER
Optimized method for single dimension small problems.
Definition: knapsack_solver.h:137
bool IsSolutionOptimal() const
Returns true if the solution was proven optimal.
Definition: knapsack_solver.h:222
std::string GetName() const
void set_use_reduction(bool use_reduction)
Definition: knapsack_solver.h:226
bool use_reduction() const
Definition: knapsack_solver.h:225
virtual ~KnapsackSolver()
void Init(const std::vector< int64_t > &profits, const std::vector< std::vector< int64_t > > &weights, const std::vector< int64_t > &capacities)
Initializes the solver and enters the problem to be solved.
KnapsackState()
int GetNumberOfItems() const
Definition: knapsack_solver.h:423
void Init(int number_of_items)
bool is_bound(int id) const
Definition: knapsack_solver.h:424
bool UpdateState(bool revert, const KnapsackAssignment &assignment)
Definition: dense_doubly_linked_list.h:21
KnapsackAssignment(int _item_id, bool _is_in)
Definition: knapsack_solver.h:294
double GetEfficiency(int64_t profit_max) const
Definition: knapsack_solver.h:315
KnapsackItem(int _id, int64_t _weight, int64_t _profit)
Definition: knapsack_solver.h:313