Loading...
Searching...
No Matches
GAP_Instance.h
1//
2// Created by henri on 20/09/22.
3//
4
5#ifndef OPTIMIZE_INSTANCE_H
6#define OPTIMIZE_INSTANCE_H
7
8#include <vector>
9#include <string>
10
11namespace idol::Problems::GAP {
12 class Instance;
13 Instance read_instance(const std::string& t_filename);
14
15 Instance generate_instance_Chu_and_Beasley_1997_C(unsigned int t_n_machines, unsigned int t_n_jobs);
16}
17
22protected:
23 std::vector<std::vector<double>> m_costs;
24 std::vector<std::vector<double>> m_resource_consumptions;
25 std::vector<double> m_capacities;
26public:
27 Instance(unsigned int t_n_agents, unsigned int t_n_jobs);
28
29 Instance(const Instance&) = default;
30 Instance(Instance&&) noexcept = default;
31
32 Instance& operator=(const Instance&) = default;
33 Instance& operator=(Instance&&) noexcept = default;
34
35 ~Instance() = default;
36 [[nodiscard]] unsigned int n_agents() const { return m_costs.size(); }
37 [[nodiscard]] unsigned int n_jobs() const { return m_costs[0].size(); }
38 [[nodiscard]] double cost(unsigned int t_agent, unsigned int t_job) const { return m_costs[t_agent][t_job]; }
39 [[nodiscard]] double resource_consumption(unsigned int t_agent, unsigned int t_job) const { return m_resource_consumptions[t_agent][t_job]; }
40 [[nodiscard]] double capacity(unsigned int t_agent) const { return m_capacities[t_agent]; }
41
42 void set_cost(unsigned int t_agent, unsigned int t_job, double t_value) { m_costs[t_agent][t_job] = t_value; }
43 void set_resource_consumption(unsigned int t_agent, unsigned int t_job, double t_value) { m_resource_consumptions[t_agent][t_job] = t_value; }
44 void set_capacity(unsigned int t_agent, double t_value) { m_capacities[t_agent] = t_value; }
45};
46
47namespace idol::Problems::GAP {
48 std::ostream& operator<<(std::ostream& t_os, const idol::Problems::GAP::Instance& t_instance);
49}
50
51#endif //OPTIMIZE_INSTANCE_H