Program Listing for File GDRelease.h#
↰ Return to documentation for file (includes\GDRelease.h
)
#ifndef GENERALMETAPOP_GDRELEASE_H
#define GENERALMETAPOP_GDRELEASE_H
#include <vector>
#include "Params.h"
#include "Patch.h"
class Patch;
class GDRelease {
public:
GDRelease(int num_driver_M, std::vector<int> rel_times): num_driver_M(num_driver_M), release_times(rel_times) {}
~GDRelease() {};
void release_gene_drive(int day, std::vector<Patch*> &sites);
protected:
int num_driver_M;
std::vector<int> release_times;
bool is_release_time(int day);
virtual std::vector<Patch*> select_driver_sites(int day, const std::vector<Patch*> &sites) = 0;
void put_driver_sites(std::vector<Patch*>& rel_sites);
};
class RandomGDRelease: public GDRelease {
public:
RandomGDRelease(ReleaseParams* params);
private:
int num_driver_sites;
std::vector<Patch*> select_driver_sites(int day, const std::vector<Patch*> &sites) override;
};
class SchedGDRelease: public GDRelease {
public:
SchedGDRelease(ReleaseParams* params, std::vector<int> rel_sites, std::vector<Patch*> &sites);
private:
std::vector<Patch*> release_sites;
std::vector<Patch*> select_driver_sites(int day, const std::vector<Patch*> &sites) override;
};
#endif //GENERALMETAPOP_GDRELEASE_H