| 159 | * Free-form name field for this client. |
| 160 | */ |
| 161 | struct Client |
| 162 | { |
| 163 | Coordinate const x; |
| 164 | Coordinate const y; |
| 165 | Duration const serviceDuration; |
| 166 | Duration const twEarly; // Earliest possible start of service |
| 167 | Duration const twLate; // Latest possible start of service |
| 168 | std::vector<Load> const delivery; |
| 169 | std::vector<Load> const pickup; |
| 170 | Duration const releaseTime; // Earliest possible time to leave depot |
| 171 | Cost const prize; // Prize for visiting this client |
| 172 | bool const required; // Must client be in solution? |
| 173 | std::optional<size_t> const group; // Optional client group membership |
| 174 | char const *name; // Client name (for reference) |
| 175 | |
| 176 | Client(Coordinate x, |
| 177 | Coordinate y, |
| 178 | std::vector<Load> delivery = {}, |
| 179 | std::vector<Load> pickup = {}, |
| 180 | Duration serviceDuration = 0, |
| 181 | Duration twEarly = 0, |
| 182 | Duration twLate = std::numeric_limits<Duration>::max(), |
| 183 | Duration releaseTime = 0, |
| 184 | Cost prize = 0, |
| 185 | bool required = true, |
| 186 | std::optional<size_t> group = std::nullopt, |
| 187 | std::string name = ""); |
| 188 | |
| 189 | bool operator==(Client const &other) const; |
| 190 | |
| 191 | Client(Client const &client); |
| 192 | Client(Client &&client); |
| 193 | |
| 194 | Client &operator=(Client const &client) = delete; |
| 195 | Client &operator=(Client &&client) = delete; |
| 196 | |
| 197 | ~Client(); |
| 198 | }; |
| 199 | |
| 200 | /** |
| 201 | * ClientGroup( |
no outgoing calls