/*****************************************************************//**
 * \file   PricingProblem.h
 * \brief  Our pricing sub-problem that computes the columns (groups) of minimum reduced cost.
 * 
 * \author talmefta
 * \date   June 2022
 *********************************************************************/
#ifndef PRICINGPROBLEM_H
#define PRICINGPROBLEM_H

#include "PricingSubProblem.h"
#include "Instance.h"
#include "Exchange.h"
#include "DualSolution.h"

/**
 * \class PricingProblem.
 * \brief Our pricing sub-problem that computes the columns (groups) of minimum reduced cost.
 * \details Inherets from PricingSubProblem<Instance, vector<Group>, DualSolution>
 */
class PricingProblem :
    public PricingSubProblem<Instance, vector<Exchange>, DualSolution, GRBConstr> {
public:
	/**
	 * Constructor with the reference to the studied instance and a pointer to the head of chain of responsibility algorithm.
	 *
	 * \param instance: Instance&
	 */
    PricingProblem(Instance& instance);

	/**
	 * Destructor.
	 * 
	 */
    ~PricingProblem();

	/**
	 * Set method of columns.
	 * 
	 * \param new_columns
	 */
	void set_columns(const vector<Exchange>& new_columns);

	/**
	 * Adds column to the set of columns.
	 * 
	 * \param column: const Group& column
	 */
	void add_column(const Exchange& column);

};

#endif //PRICINGPROBLEM_H