From b2faedd28f24966d07d888047c40010bf3e9dd49 Mon Sep 17 00:00:00 2001 From: Sergey Lashin Date: Thu, 29 Nov 2018 17:21:49 +0700 Subject: [PATCH] The first Git version --- Deaf2.0/Deaf2.0.sln | 20 + Deaf2.0/Deaf2.0/Agent.cpp | 63 ++ Deaf2.0/Deaf2.0/Agent.h | 36 + Deaf2.0/Deaf2.0/Deaf2.0.vcxproj | 83 ++ Deaf2.0/Deaf2.0/Main.cpp | 15 + Deaf2.0/Deaf2.0/Processor.cpp | 734 ++++++++++++++++++ Deaf2.0/Deaf2.0/Processor.h | 11 + Deaf2.0/Deaf2.0/Settings.cpp | 39 + Deaf2.0/Deaf2.0/Settings.h | 43 + Makefile | 35 + Processor.cpp | 710 +++++++++++++++++ script1.txt | 32 + ... model (Ген, фен, яз_жест).pdf | Bin 0 -> 122070 bytes 13 files changed, 1821 insertions(+) create mode 100644 Deaf2.0/Deaf2.0.sln create mode 100644 Deaf2.0/Deaf2.0/Agent.cpp create mode 100644 Deaf2.0/Deaf2.0/Agent.h create mode 100644 Deaf2.0/Deaf2.0/Deaf2.0.vcxproj create mode 100644 Deaf2.0/Deaf2.0/Main.cpp create mode 100644 Deaf2.0/Deaf2.0/Processor.cpp create mode 100644 Deaf2.0/Deaf2.0/Processor.h create mode 100644 Deaf2.0/Deaf2.0/Settings.cpp create mode 100644 Deaf2.0/Deaf2.0/Settings.h create mode 100644 Makefile create mode 100644 Processor.cpp create mode 100644 script1.txt create mode 100644 Блок схема для Deafness model (Ген, фен, яз_жест).pdf diff --git a/Deaf2.0/Deaf2.0.sln b/Deaf2.0/Deaf2.0.sln new file mode 100644 index 0000000..f6e5653 --- /dev/null +++ b/Deaf2.0/Deaf2.0.sln @@ -0,0 +1,20 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 2012 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Deaf2.0", "Deaf2.0\Deaf2.0.vcxproj", "{532A4CEC-F8E9-467D-A01E-2E4D814E0D3F}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Win32 = Debug|Win32 + Release|Win32 = Release|Win32 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {532A4CEC-F8E9-467D-A01E-2E4D814E0D3F}.Debug|Win32.ActiveCfg = Debug|Win32 + {532A4CEC-F8E9-467D-A01E-2E4D814E0D3F}.Debug|Win32.Build.0 = Debug|Win32 + {532A4CEC-F8E9-467D-A01E-2E4D814E0D3F}.Release|Win32.ActiveCfg = Release|Win32 + {532A4CEC-F8E9-467D-A01E-2E4D814E0D3F}.Release|Win32.Build.0 = Release|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/Deaf2.0/Deaf2.0/Agent.cpp b/Deaf2.0/Deaf2.0/Agent.cpp new file mode 100644 index 0000000..4a09ba2 --- /dev/null +++ b/Deaf2.0/Deaf2.0/Agent.cpp @@ -0,0 +1,63 @@ +#include "Agent.h" +#include "Settings.h" +#include + +Agent::Agent(int fGene, int mGene, bool deaf, bool signL, float socialP){ + this->mGenome.assign(1, mGene); + this->fGenome.assign(1, fGene); + + this->isDeaf = deaf; + this->knowsSignLanguage = signL; + this->socialPosition = socialP; +// this->bachelority = bachelority; + this->fatherID = -1; + this->motherID = -1; + + this->alreadyMarried = false; +} + +Agent::Agent(Agent* father, int fID, Agent* mother, int mID){ + this->fatherID = fID; + this->motherID = mID; + + std::default_random_engine& generator = Settings::RANDOM_GENERATOR; + std::uniform_int_distribution distribution(0,1); // ERROR - + int mAllele = distribution(generator); + int fAllele = distribution(generator); + + + // + this->mGenome = (mAllele == 0 ? mother->mGenome : mother->fGenome); + this->fGenome = (fAllele == 0 ? father->mGenome : father->fGenome); + + // : + this->isDeaf = (this->mGenome.at(0) + this->fGenome.at(0)) > 1 ? true : false; + + + if(!this->isDeaf) + { + std::uniform_real_distribution distributionR(0.f,1.f); + float deafChance = distributionR(generator); + if(deafChance < Settings::SPONTANEOUS_DEAF) + this->isDeaf = true; + } + + // . + // , , + // ( ) + // 2018.11.20 + //this->knowsSignLanguage = (father->knowsSignLanguage && father->isDeaf + // || mother->knowsSignLanguage && mother->isDeaf); + + // ( ) + // : + std::normal_distribution distrN(0,0.1f); + float delta = distrN(generator); + this->socialPosition = 0.5f*(mother->socialPosition + father->socialPosition) + delta; + + this->alreadyMarried = false; + // + // delta = distribution(generator); + // this->bachelority = 0.5f*(mother->bachelority + father->bachelority) + delta; + // this->age = 0; +} diff --git a/Deaf2.0/Deaf2.0/Agent.h b/Deaf2.0/Deaf2.0/Agent.h new file mode 100644 index 0000000..9860ef3 --- /dev/null +++ b/Deaf2.0/Deaf2.0/Agent.h @@ -0,0 +1,36 @@ +#pragma once +#include + +class Agent{ + +protected: + std::vector mGenome; + std::vector fGenome; + + bool isDeaf; + bool knowsSignLanguage; + float socialPosition; +// float bachelority; + + int fatherID; + int motherID; +// int age; +// Agent* mate; +// Agent* father; +// Agent* mother; +// std::vector children; + +public: + Agent(int fGene, int mGene, bool deaf, bool signL, + float socialP); // + Agent(Agent*,int, Agent*, int); + bool deaf() const { return isDeaf;} + int getDeafAllelesCount() const { return mGenome.at(0)+fGenome.at(0);} + bool knowsSign() const { return knowsSignLanguage;} + int getFatherID() const { return fatherID;} + int getMotherID() const { return motherID;} + float getSocialP() const { return socialPosition;} + + void teachSignLanguage() { this->knowsSignLanguage = true;} + bool alreadyMarried; +}; \ No newline at end of file diff --git a/Deaf2.0/Deaf2.0/Deaf2.0.vcxproj b/Deaf2.0/Deaf2.0/Deaf2.0.vcxproj new file mode 100644 index 0000000..7438c83 --- /dev/null +++ b/Deaf2.0/Deaf2.0/Deaf2.0.vcxproj @@ -0,0 +1,83 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + + {532A4CEC-F8E9-467D-A01E-2E4D814E0D3F} + Deaf20 + + + + Application + true + v110 + MultiByte + + + Application + false + v110 + true + MultiByte + + + + + + + + + + + + + + + Level3 + Disabled + true + E:\Programming\boost_1_66_0;%(AdditionalIncludeDirectories) + + + true + + + + + Level3 + MaxSpeed + true + true + true + E:\Programming\boost_1_66_0;%(AdditionalIncludeDirectories) + + + true + true + true + E:\Programming\boost_1_66_0\lib32-msvc-11.0;E:\Programming\boost_1_66_0\libs;%(AdditionalLibraryDirectories) + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Deaf2.0/Deaf2.0/Main.cpp b/Deaf2.0/Deaf2.0/Main.cpp new file mode 100644 index 0000000..8601b3b --- /dev/null +++ b/Deaf2.0/Deaf2.0/Main.cpp @@ -0,0 +1,15 @@ +#include "Processor.h" +#include + +int main(int argc, char** argv){ + + std::string filename = ""; + if(argc >= 2) + filename = argv[1]; + + Processor p; + + p.run(filename); + + return 0; +} \ No newline at end of file diff --git a/Deaf2.0/Deaf2.0/Processor.cpp b/Deaf2.0/Deaf2.0/Processor.cpp new file mode 100644 index 0000000..102f9bc --- /dev/null +++ b/Deaf2.0/Deaf2.0/Processor.cpp @@ -0,0 +1,734 @@ +#include "Agent.h" +#include "Processor.h" +#include "Settings.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#ifdef LINUX +#define sscanf_s scanf +#endif + +void Processor::run(std::string fileName){ + if(fileName.size() > 1){ + this->initSettings(fileName); + } + else{ + //this->initSettings("D:/Projects/Deaf2.5/Deaf2.0/INIT.txt"); + //Settings::OUTPUT_FILE = "D:/model/Deaf2.0 by Sergey 06.08/OUTPUT/output.deaf25.txt"; + } + int initPopSizeM = Settings::INIT_POP_SIZE_M; + int initPopSizeW = Settings::INIT_POP_SIZE_W; + ///float deafAlleleRatio = Settings::DEAF_ALLELE_RATIO; + + float birthRateH = Settings::BIRTH_RATE_H; // + float birthRateD = Settings::BIRTH_RATE_D; // + + int maxGenerations = Settings::MAX_GENERATIONS; + + // + std::cout<<"Initializing output file..\t"; + std::ofstream outputFile(Settings::OUTPUT_FILE); + outputFile<<"Generation\tTotalPopulation\tMen\tWomen\tDeaf"; + outputFile<<"\tDD marriages\tDD children"; + outputFile<<"\tDH marriages\tDH children"; + outputFile<<"\tHH marriages\tHH children"; + outputFile<<"\tDA frequency\tDA homozygotes frequency"; + // TODO , + outputFile< > matrixCurrent; + //std::vector > matrixFuture; + + std::vector men; + std::vector women; + std::vector newMen; + std::vector newWomen; + + // - + std::vector deafMen; + std::vector deafWomen; + std::vector deafNewMen; + std::vector deafNewWomen; + + + std::default_random_engine& generator = Settings::RANDOM_GENERATOR; + //generator.seed(std::time(0)); + //RandomDevice::RandomDevice(unsigned long n) : rand_seed(n), engine(n){ } + + // + std::cout<<"Creating men..("< distrUI(0.f,1.f); + if(distrUI(generator) < Settings::SPONTANEOUS_DEAF) + isDeaf = true; + + float mean = isDeaf ? Settings::SOCIAL_MEAN_D : Settings::SOCIAL_MEAN_H; + float sigma= isDeaf ? Settings::SOCIAL_VAR_D : Settings::SOCIAL_VAR_H; + std::normal_distribution distN(mean, sigma); + float socialP = distN(generator); + + float signLangLevel = isDeaf ? Settings::SIGN_LANG_DEAF : Settings::SIGN_LANG_HEAR; + bool signL = distrUI(generator) < signLangLevel ? true: false; + + Agent* a = new Agent(alleleFather, alleleMother, isDeaf, signL, socialP); + men.push_back(a); + + if(isDeaf) + deafMen.push_back(a); + } // - + + // ( ) + for(int i = 0; i < heterozygores; i++){ + bool isDeaf = false; + int alleleFather = 1; // TODO: + int alleleMother = 0; + // - + std::uniform_real_distribution distrUI(0.f,1.f); + if(distrUI(generator) < Settings::SPONTANEOUS_DEAF) + isDeaf = true; + + float mean = isDeaf ? Settings::SOCIAL_MEAN_D : Settings::SOCIAL_MEAN_H; + float sigma= isDeaf ? Settings::SOCIAL_VAR_D : Settings::SOCIAL_VAR_H; + std::normal_distribution distN(mean, sigma); + float socialP = distN(generator); + + float signLangLevel = isDeaf ? Settings::SIGN_LANG_DEAF : Settings::SIGN_LANG_HEAR; + bool signL = distrUI(generator) < signLangLevel ? true: false; + + Agent* a = new Agent(alleleFather, alleleMother, isDeaf, signL, socialP); + men.push_back(a); + + if(isDeaf) + deafMen.push_back(a); + } // - + + // + for(int i = 0; i < deafHomozygotes; i++){ + bool isDeaf = true; + int alleleFather = 1; + int alleleMother = 1; + + float mean = isDeaf ? Settings::SOCIAL_MEAN_D : Settings::SOCIAL_MEAN_H; + float sigma= isDeaf ? Settings::SOCIAL_VAR_D : Settings::SOCIAL_VAR_H; + std::normal_distribution distN(mean, sigma); + float socialP = distN(generator); + + std::uniform_real_distribution distrUI(0.f,1.f); + float signLangLevel = isDeaf ? Settings::SIGN_LANG_DEAF : Settings::SIGN_LANG_HEAR; + bool signL = distrUI(generator) < signLangLevel ? true: false; + + Agent* a = new Agent(alleleFather, alleleMother, isDeaf, signL, socialP); + men.push_back(a); + + if(isDeaf) + deafMen.push_back(a); + }// - + std::random_shuffle(men.begin(), men.end()); + std::random_shuffle(deafMen.begin(), deafMen.end()); + // + std::cout<<"Done\n"; + + std::cout<<"Creating women..\t"; + // + deafHomozygotes = (int) (initPopSizeW*Settings::DEAF_HOMOZYGOTES); + hearHomozygotes = (int) (initPopSizeW*Settings::HEAR_HOMOZYGOTES); + heterozygores = initPopSizeW - deafHomozygotes - hearHomozygotes; + // ( ) + for(int i = 0; i < hearHomozygotes; i++){ + bool isDeaf = false; + int alleleFather = 0; + int alleleMother = 0; + // - + std::uniform_real_distribution distrUI(0.f,1.f); + if(distrUI(generator) < Settings::SPONTANEOUS_DEAF) + isDeaf = true; + + float mean = isDeaf ? Settings::SOCIAL_MEAN_D : Settings::SOCIAL_MEAN_H; + float sigma= isDeaf ? Settings::SOCIAL_VAR_D : Settings::SOCIAL_VAR_H; + std::normal_distribution distN(mean, sigma); + float socialP = distN(generator); + + float signLangLevel = isDeaf ? Settings::SIGN_LANG_DEAF : Settings::SIGN_LANG_HEAR; + bool signL = distrUI(generator) < signLangLevel ? true: false; + + Agent* a = new Agent(alleleFather, alleleMother, isDeaf, signL, socialP); + women.push_back(a); + + if(isDeaf) + deafWomen.push_back(a); + } // - + + // ( ) + for(int i = 0; i < heterozygores; i++){ + bool isDeaf = false; + int alleleFather = 1; // TODO: + int alleleMother = 0; + // - + std::uniform_real_distribution distrUI(0.f,1.f); + if(distrUI(generator) < Settings::SPONTANEOUS_DEAF) + isDeaf = true; + + float mean = isDeaf ? Settings::SOCIAL_MEAN_D : Settings::SOCIAL_MEAN_H; + float sigma= isDeaf ? Settings::SOCIAL_VAR_D : Settings::SOCIAL_VAR_H; + std::normal_distribution distN(mean, sigma); + float socialP = distN(generator); + + float signLangLevel = isDeaf ? Settings::SIGN_LANG_DEAF : Settings::SIGN_LANG_HEAR; + bool signL = distrUI(generator) < signLangLevel ? true: false; + + Agent* a = new Agent(alleleFather, alleleMother, isDeaf, signL, socialP); + women.push_back(a); + + if(isDeaf) + deafWomen.push_back(a); + } // - + + // + for(int i = 0; i < deafHomozygotes; i++){ + bool isDeaf = true; + int alleleFather = 1; + int alleleMother = 1; + + float mean = isDeaf ? Settings::SOCIAL_MEAN_D : Settings::SOCIAL_MEAN_H; + float sigma= isDeaf ? Settings::SOCIAL_VAR_D : Settings::SOCIAL_VAR_H; + std::normal_distribution distN(mean, sigma); + float socialP = distN(generator); + + std::uniform_real_distribution distrUI(0.f,1.f); + float signLangLevel = isDeaf ? Settings::SIGN_LANG_DEAF : Settings::SIGN_LANG_HEAR; + bool signL = distrUI(generator) < signLangLevel ? true: false; + + Agent* a = new Agent(alleleFather, alleleMother, isDeaf, signL, socialP); + women.push_back(a); + + if(isDeaf) + deafWomen.push_back(a); + }// - + std::random_shuffle(women.begin(), women.end()); + std::random_shuffle(deafWomen.begin(), deafWomen.end()); + // + std::cout<<"Done\n"; + + std::cout<<"\nMain cycle\n"; + // + for(int gen = 0; gen < maxGenerations; gen++){ + std::cout<<"Generation\t"< vect(women.size(),0.0f); + //matrixCurrent.assign(men.size(),vect); + //std::cout<<"\tDone\n"; + + // + + // - <, > + std::cout<<"\tInitializing settledPairs\t"; + std::uniform_real_distribution distrUI(0.f,1.f); + std::cout<<"."; + std::vector > > settledPairs(men.size()); + std::cout<<"."; + for(int i = 0; i < settledPairs.size(); i++){ + float f = distrUI(generator); + int sign = f < 0.5f ? -1 : 1; + int candidatePairs = Settings::CANDIDATE_PAIRS_MEAN + + (int)(sign*f*Settings::CANDIDATE_PAIRS_VAR); + + // TODO: + int left = i - candidatePairs/2; + int right = i + candidatePairs/2; + + // HACK: 2018/11/23 + if(men.at(i)->deaf() && Settings::DEAF_COMMUNITY_MODEL == 1){ + left = 0; + right = women.size() - 1; + candidatePairs = women.size(); + } + + if(left < 0){ + right -= left; + left = 0; + } + if(right >= women.size()){ + right = women.size() - 1; + left = right - candidatePairs; + } + + std::vector > pairs(candidatePairs); + for(unsigned int p = 0; p < pairs.size(); p++){ + pairs.at(p).first = left; + // - + //matrixCurrent.at(i).at(left) + pairs.at(p).second = esteem(men.at(i),women.at(left)); + left++; + } + settledPairs.at(i) = pairs; + } + // (END) + std::cout<<"Done\n"; + // + // + /*for(unsigned int m = 0; m < men.size(); m++){ + // + for(unsigned int w = 0; w < women.size(); w++){ + if(matrixCurrent.at(m).at(w) >= 0.0f) + matrixCurrent.at(m).at(w) = esteem(men.at(m),women.at(w)); + } + } */ + // + +/* std::cout<<"\tGenerating offsprings\t"; + // , + // + std::cout << "MENS" << std::endl; + for (auto m = 0; m < settledPairs.size(); ++m) + { + std::cout << "MEN: " << m << ": "; + for (auto w = 0; w < settledPairs[m].size(); ++w) + { + std::cout << settledPairs[m][w].first << " : " << settledPairs[m][w].second << "; "; + } + std::cout << std::endl; + } +*/ + + + for(int m = 0; m < men.size(); m++){ + + // + int bestW = 0; + float bestScore = 0.0f; + + /* + for(int w = 0; w < women.size(); w++){ + if(matrixCurrent.at(m).at(w) > bestScore){ + bestScore = matrixCurrent.at(m).at(w); + bestW = w; + } + } // + **/ + // + for(unsigned int p = 0; p < settledPairs.at(m).size(); p++){ + unsigned int w = settledPairs.at(m).at(p).first; + + if(women.at(w)->alreadyMarried) + continue; + + if(settledPairs.at(m).at(p).second/*matrixCurrent.at(m).at(w)*/ > bestScore){ + bestScore = settledPairs.at(m).at(p).second; //matrixCurrent.at(m).at(w); + bestW = w; + } + } + + // (END) + + if(bestScore <= 0.0f) + continue; // + + // , + int* mariage = &marriageHH; + int* childrenType = &childrenHH; + + float meanChildren = birthRateH; + if((men.at(m)->deaf() && !women.at(bestW)->deaf()) || + (!men.at(m)->deaf() && women.at(bestW)->deaf())){ + mariage = &marriageDH; + childrenType = &childrenDH; + } + if(men.at(m)->deaf() && women.at(bestW)->deaf()){ + mariage = &marriageDD; + childrenType = &childrenDD; + } + if(men.at(m)->deaf() || women.at(bestW)->deaf()){ + meanChildren = birthRateD; + } + + float correction = (Settings::BETA_A+Settings::BETA_B)/Settings::BETA_A*meanChildren; + float fChildren = 1.0f; + +#ifndef LINUX + std::_Beta_distribution distrB(Settings::BETA_A,Settings::BETA_B); + fChildren = distrB(generator)*correction; // +#endif + +#ifdef LINUX + boost::random::random_device rng; + boost::random::uniform_real_distribution<> uniform(0,1); + + boost::math::beta_distribution<> distrB(Settings::BETA_A,Settings::BETA_B); + fChildren = quantile(distrB, uniform(rng)) * correction; +#endif + + int children = (int) std::floor(fChildren+0.5f); + (*mariage)++; + (*childrenType) += children; + + // TODO: - + + std::vector newSibs; // + std::vector deafSibs;// + + for(int i = 0; i < children; i++){ + Agent* newAgent = new Agent(men.at(m), m, women.at(bestW), bestW); + newSibs.push_back(newAgent); + if(newAgent->deaf()){ + deafSibs.push_back(newAgent); + } + // + std::uniform_int_distribution distrUI(0,1); + if(distrUI(generator) == 0){ + newMen.push_back(newAgent); + } + else{ + newWomen.push_back(newAgent); + } + } + // + // 1 - - + if(men.at(m)->deaf() || women.at(bestW)->deaf()){ + if(men.at(m)->knowsSign() || women.at(bestW)->knowsSign()){ + for(auto i = 0; i < newSibs.size(); i++){ + newSibs.at(i)->teachSignLanguage(); + } + } + } + + // 2 - + else if(deafSibs.size() > 0){ + std::uniform_real_distribution distrUF(0.f,1.f); + // ) + bool sibsKnowSL = false; + // + for(auto i = 0; i < deafSibs.size(); i++){ + if(distrUF(generator) <= Settings::SIGN_LANG_DEAF){ + deafSibs.at(i)->teachSignLanguage(); + sibsKnowSL = true; + } + } + // + for(auto i = 0; i < newSibs.size(); i++){ + if(!newSibs.at(i)->deaf() && distrUF(generator) <= Settings::SIGN_LANG_HEAR){ + newSibs.at(i)->teachSignLanguage(); + sibsKnowSL = true; + } + } + // ) + if(men.at(m)->knowsSign() || women.at(bestW)->knowsSign() || sibsKnowSL){ + for(auto i = 0; i < newSibs.size(); i++){ + newSibs.at(i)->teachSignLanguage(); + } + } + } + + // 3 - + else { + std::uniform_real_distribution distrUF(0.f,1.f); + for(auto i = 0; i < newSibs.size(); i++){ + if(distrUF(generator) <= Settings::SIGN_LANG_HEAR){ + newSibs.at(i)->teachSignLanguage(); + } + } + } + // (END) + + // + women.at(bestW)->alreadyMarried = true; + //for(int i = m; i < men.size(); i++){ + // matrixCurrent.at(i).at(bestW) = -100.0f; + //} + } // + std::cout<<"Done\n"; + + std::cout<<"\tSaving model state\t"; + // + int totalP = men.size()+women.size(); + outputFile<deaf()) + totalDeaf++; + } + for(auto i = 0; i < women.size(); i++){ + if(women.at(i)->deaf()) + totalDeaf++; + } + outputFile<<"\t"<getDeafAllelesCount(); + deafAllelesTotal += deafAlleles; + //int increase = deafAllelesTotal == 2 ? 1 : 0; + deafHomoz += deafAlleles/2; + } + for(unsigned int i = 0; i< women.size(); i++){ + int deafAlleles = women.at(i)->getDeafAllelesCount(); + deafAllelesTotal += deafAlleles; + //int increase = deafAllelesTotal == 2 ? 1 : 0; + deafHomoz += deafAlleles/2; + } + + outputFile<<"\t"<getFatherID() == woman->getFatherID() || + man->getMotherID() == woman->getMotherID()) && woman->getMotherID() != -1){ + return -50.f; + } + + if(man->deaf() == woman->deaf()){ + if(man->deaf()){ + ans += 2*Settings::WEIGHT_PHENO_D; + float sum1 = man->knowsSign() ? Settings::WEIGHT_SIGN_D : 0; + float sum2 = woman->knowsSign() ? Settings::WEIGHT_SIGN_D : 0; + ans += sum1+sum2; + } + else{ + ans += 2*Settings::WEIGHT_PHENO_H; + } + } + else{ + if(man->knowsSign() && woman->knowsSign()){ + ans += Settings::WEIGHT_SIGN_D + Settings::WEIGHT_SIGN_H; + } + } + + if(man->getSocialP() + woman->getSocialP() > ans) + return 0.0f; + + return ans; +} + +void Processor::initSettings(std::string fileName){ + std::vector script; +// std::ifstream file(fileName.c_str()); +// std::string str; + +// while(getline(file,str)){ +// if(str.length() > 2) +// script.push_back(str); +// } +// file.close(); + + // process Script + unsigned int curLine; + for(curLine = 0; curLine < script.size(); curLine++){ + if(script.at(curLine).at(0) == '/' || script.at(curLine).at(0) == '#') + continue; + + std::vector tokensVector; // Search for tokens + //boost::split(tokensVector, script.at(curLine), boost::is_any_of("=") ); + boost::split(tokensVector, script.at(curLine), std::bind2nd(std::equal_to(), '=')); + + std::string instr = tokensVector.at(0); + boost::to_lower(instr); + boost::trim(instr); + + // + if(instr == "generations" || instr == "iterations" ){ + int iter = Settings::MAX_GENERATIONS; + sscanf_s(tokensVector.at(1).c_str(),"%d", &iter); + Settings::MAX_GENERATIONS = iter; + } + if(instr == "init_pop_men"){ + int pop = Settings::INIT_POP_SIZE_M; + sscanf_s(tokensVector.at(1).c_str(),"%d", &pop); + Settings::INIT_POP_SIZE_M = pop; + } + if(instr == "init_pop_women"){ + int pop = Settings::INIT_POP_SIZE_W; + sscanf_s(tokensVector.at(1).c_str(),"%d", &pop); + Settings::INIT_POP_SIZE_W = pop; + } + if(instr == "candidate_pairs_mean"){ + int cand = Settings::CANDIDATE_PAIRS_MEAN; + sscanf_s(tokensVector.at(1).c_str(),"%d", &cand); + Settings::CANDIDATE_PAIRS_MEAN = cand; + } + if(instr == "candidate_pairs_var"){ + int cand = Settings::CANDIDATE_PAIRS_VAR; + sscanf_s(tokensVector.at(1).c_str(),"%d", &cand); + Settings::CANDIDATE_PAIRS_VAR = cand; + } + else if(instr == "spontaneous_deaf"){ + float deaf = Settings::SPONTANEOUS_DEAF; + sscanf_s(tokensVector.at(1).c_str(),"%f", &deaf); + Settings::SPONTANEOUS_DEAF = deaf; + } + else if(instr == "deaf_allele_ratio"){ + float deaf = Settings::DEAF_ALLELE_RATIO; + sscanf_s(tokensVector.at(1).c_str(),"%f", &deaf); + Settings::DEAF_ALLELE_RATIO = deaf; + } + else if(instr == "deaf_homozygotes"){ + float deaf = Settings::DEAF_HOMOZYGOTES; + sscanf_s(tokensVector.at(1).c_str(),"%f", &deaf); + Settings::DEAF_HOMOZYGOTES = deaf; + } + else if(instr == "hear_homozygotes"){ + float hear = Settings::HEAR_HOMOZYGOTES; + sscanf_s(tokensVector.at(1).c_str(),"%f", &hear); + Settings::HEAR_HOMOZYGOTES = hear; + } + else if(instr == "birth_rate_hearing" || instr == "birth_rate_h"){ + float rate = Settings::BIRTH_RATE_H; + sscanf_s(tokensVector.at(1).c_str(),"%f", &rate); + Settings::BIRTH_RATE_H = rate; + } + else if(instr == "birth_rate_deaf" || instr == "birth_rate_d"){ + float rate = Settings::BIRTH_RATE_D; + sscanf_s(tokensVector.at(1).c_str(),"%f", &rate); + Settings::BIRTH_RATE_D = rate; + } + else if(instr == "beta_a"){ + float rate = Settings::BETA_A; + sscanf_s(tokensVector.at(1).c_str(),"%f", &rate); + Settings::BETA_A = rate; + } + else if(instr == "beta_b"){ + float rate = Settings::BETA_B; + sscanf_s(tokensVector.at(1).c_str(),"%f", &rate); + Settings::BETA_B = rate; + } + else if(instr == "social_mean_h" || instr == "social_mean_hearing"){ + float rate = Settings::SOCIAL_MEAN_H; + sscanf_s(tokensVector.at(1).c_str(),"%f", &rate); + Settings::SOCIAL_MEAN_H = rate; + } + else if(instr == "social_mean_d" || instr == "social_mean_deaf"){ + float rate = Settings::SOCIAL_MEAN_D; + sscanf_s(tokensVector.at(1).c_str(),"%f", &rate); + Settings::SOCIAL_MEAN_D = rate; + } + else if(instr == "social_var_h" || instr == "social_var_hearing"){ + float rate = Settings::SOCIAL_VAR_H; + sscanf_s(tokensVector.at(1).c_str(),"%f", &rate); + Settings::SOCIAL_VAR_H = rate; + } + else if(instr == "social_var_d" || instr == "social_var_deaf"){ + float rate = Settings::SOCIAL_VAR_D; + sscanf_s(tokensVector.at(1).c_str(),"%f", &rate); + Settings::SOCIAL_VAR_D = rate; + } + else if(instr == "weight_phenotype_hearing" || instr == "weight_pheno_h"){ + float rate = Settings::WEIGHT_PHENO_H; + sscanf_s(tokensVector.at(1).c_str(),"%f", &rate); + Settings::WEIGHT_PHENO_H = rate; + } + else if(instr == "weight_phenotype_deaf" || instr == "weight_pheno_d"){ + float rate = Settings::WEIGHT_PHENO_D; + sscanf_s(tokensVector.at(1).c_str(),"%f", &rate); + Settings::WEIGHT_PHENO_D = rate; + } + else if(instr == "weight_sign_h" || instr == "weight_sign_hearing"){ + float rate = Settings::WEIGHT_SIGN_H; + sscanf_s(tokensVector.at(1).c_str(),"%f", &rate); + Settings::WEIGHT_SIGN_H = rate; + } + else if(instr == "weight_sign_d" || instr == "weight_sign_deaf"){ + float rate = Settings::WEIGHT_SIGN_D; + sscanf_s(tokensVector.at(1).c_str(),"%f", &rate); + Settings::WEIGHT_SIGN_D = rate; + } + else if(instr == "sign_lang_d" || instr == "sign_lang_deaf"){ + float rate = Settings::SIGN_LANG_DEAF; + sscanf_s(tokensVector.at(1).c_str(),"%f", &rate); + Settings::SIGN_LANG_DEAF = rate; + } + else if(instr == "sign_lang_h" || instr == "sign_lang_hear"){ + float rate = Settings::SIGN_LANG_HEAR; + sscanf_s(tokensVector.at(1).c_str(),"%f", &rate); + Settings::SIGN_LANG_HEAR = rate; + } + else if(instr == "output" || instr == "output_file"){ + std::string file = tokensVector.at(1); + boost::trim(file); + Settings::OUTPUT_FILE = file; + } + /*if(instr == "fullstat"){ + int flag = 0; + sscanf_s(tokensVector.at(1).c_str(),"%d", &flag); + if(flag != 0) + Settings::WRITE_FULL_STATISTICS_TO_FILE = true; + }*/ + /*else if(instr == "birth" || instr == "birthrate" || instr == "birth_rate" ){ + double rate = Settings::BirthRate; + sscanf_s(tokensVector.at(1).c_str(),"%lg", &rate); + Settings::BirthRate = rate; + }*/ + } // (END) for(curLine = 0; curLine < script.size(); curLine++) + +} \ No newline at end of file diff --git a/Deaf2.0/Deaf2.0/Processor.h b/Deaf2.0/Deaf2.0/Processor.h new file mode 100644 index 0000000..a5680c9 --- /dev/null +++ b/Deaf2.0/Deaf2.0/Processor.h @@ -0,0 +1,11 @@ +#pragma once +#include "Agent.h" +#include + +class Processor{ +public: +// Processor(); + void run(std::string file = ""); + void initSettings(std::string file); + float esteem(Agent*, Agent*); +}; \ No newline at end of file diff --git a/Deaf2.0/Deaf2.0/Settings.cpp b/Deaf2.0/Deaf2.0/Settings.cpp new file mode 100644 index 0000000..ca1bafe --- /dev/null +++ b/Deaf2.0/Deaf2.0/Settings.cpp @@ -0,0 +1,39 @@ +#include "Settings.h" +#include + +int Settings::MAX_GENERATIONS = 10; +int Settings::INIT_POP_SIZE_M = 5000; +int Settings::INIT_POP_SIZE_W = 5000; + +int Settings::CANDIDATE_PAIRS_MEAN = 100; +int Settings::CANDIDATE_PAIRS_VAR = 30; + +float Settings::SPONTANEOUS_DEAF = 0.001f; +float Settings::DEAF_ALLELE_RATIO = 0.1f; +float Settings::DEAF_HOMOZYGOTES = 0.05f; +float Settings::HEAR_HOMOZYGOTES = 0.65f; + +float Settings::BIRTH_RATE_H = 2.3f; // +float Settings::BIRTH_RATE_D = 2.1f; // + +float Settings::BETA_A = 2.0f; +float Settings::BETA_B = 5.0f; + +float Settings::SOCIAL_MEAN_H = 0.3f; +float Settings::SOCIAL_VAR_H = 0.05f; +float Settings::SOCIAL_MEAN_D = 0.3f; +float Settings::SOCIAL_VAR_D = 0.05f; + +float Settings::WEIGHT_PHENO_H = 0.7f; +float Settings::WEIGHT_SIGN_H = 0.3f; +float Settings::WEIGHT_PHENO_D = 0.58f; +float Settings::WEIGHT_SIGN_D = 0.42f; + +float Settings::SIGN_LANG_DEAF = 0.8f; +float Settings::SIGN_LANG_HEAR = 0.01f; + +std::default_random_engine Settings::RANDOM_GENERATOR(time(0)); + +int Settings::DEAF_COMMUNITY_MODEL = 1; + +std::string Settings::OUTPUT_FILE = "output.deaf2.0.csv"; \ No newline at end of file diff --git a/Deaf2.0/Deaf2.0/Settings.h b/Deaf2.0/Deaf2.0/Settings.h new file mode 100644 index 0000000..489d2db --- /dev/null +++ b/Deaf2.0/Deaf2.0/Settings.h @@ -0,0 +1,43 @@ +#pragma once +#include +#include + +class Settings{ +public: + static int MAX_GENERATIONS; + static int INIT_POP_SIZE_M; + static int INIT_POP_SIZE_W; + + static int CANDIDATE_PAIRS_MEAN; + static int CANDIDATE_PAIRS_VAR; + + static float SPONTANEOUS_DEAF; + static float DEAF_ALLELE_RATIO; + static float DEAF_HOMOZYGOTES; + static float HEAR_HOMOZYGOTES; + + static float BIRTH_RATE_H; // + static float BIRTH_RATE_D; // + + static float BETA_A; + static float BETA_B; + + static float SOCIAL_MEAN_H; + static float SOCIAL_VAR_H; + static float SOCIAL_MEAN_D; + static float SOCIAL_VAR_D; + + static float WEIGHT_PHENO_H; + static float WEIGHT_SIGN_H; + static float WEIGHT_PHENO_D; + static float WEIGHT_SIGN_D; + + static float SIGN_LANG_DEAF; + static float SIGN_LANG_HEAR; + + static std::default_random_engine RANDOM_GENERATOR; + + static int DEAF_COMMUNITY_MODEL; // 0 - , 1 - , 2 - + + static std::string OUTPUT_FILE; +}; \ No newline at end of file diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..9b34829 --- /dev/null +++ b/Makefile @@ -0,0 +1,35 @@ +CXX = g++ +CXXFLAGS = -O2 -g -Wall -fmessage-length=0 +CXXFLAGS = -std=gnu++11 -O2 -Wall -fmessage-length=0 + +#OBJS = DEC-0.0.o + +SRCS = Agent.cpp +SRCS += Main.cpp +SRCS += Processor.cpp +SRCS += Settings.cpp +#SRCS += + +OBJS+= ${SRCS:.cpp=.o} + +.SUFFIXES : .cpp +%.o : %.cpp + $(CXX) $(CXXFLAGS) -c $< -o $@ + + +LIBS = -lboost_random + +TARGET = Deaf-2.0 + +$(TARGET): $(OBJS) + $(CXX) -o $(TARGET) $(OBJS) $(LIBS) + +all: $(TARGET) + +clean: + rm -f $(OBJS) $(TARGET) + + +#LDFLAGS = -lm #-Lutil -Lutil/stemloop -Lutil/tscore +#FORTCFLAGS = + diff --git a/Processor.cpp b/Processor.cpp new file mode 100644 index 0000000..44da1b6 --- /dev/null +++ b/Processor.cpp @@ -0,0 +1,710 @@ +#include "Agent.h" +#include "Processor.h" +#include "Settings.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#define sscanf_s scanf + + + +boost::random::random_device rng; +boost::random::uniform_real_distribution<> uniform(0,1); + +void Processor::run(std::string fileName){ + + if(fileName.size() > 1){ + this->initSettings(fileName); + } + else{ + this->initSettings("C:/Deafness modelling/Deaf2.0 20.11.18/INIT.txt"); + //Settings::OUTPUT_FILE = "D:/model/Deaf2.0 by Sergey 06.08/OUTPUT/output.deaf25.txt"; + } + int initPopSizeM = Settings::INIT_POP_SIZE_M; + int initPopSizeW = Settings::INIT_POP_SIZE_W; + ///float deafAlleleRatio = Settings::DEAF_ALLELE_RATIO; + + float birthRateH = Settings::BIRTH_RATE_H; // + float birthRateD = Settings::BIRTH_RATE_D; // + + int maxGenerations = Settings::MAX_GENERATIONS; + + // + std::cout<<"Initializing output file..\t"; + std::ofstream outputFile(Settings::OUTPUT_FILE); + outputFile<<"Generation\tTotalPopulation\tMen\tWomen\tDeaf"; + outputFile<<"\tDD marriages\tDD children"; + outputFile<<"\tDH marriages\tDH children"; + outputFile<<"\tHH marriages\tHH children"; + outputFile<<"\tDA frequency\tDA homozygotes frequency"; + // TODO , + outputFile< > matrixCurrent; + //std::vector > matrixFuture; + + std::vector men; + std::vector women; + std::vector newMen; + std::vector newWomen; + + std::default_random_engine& generator = Settings::RANDOM_GENERATOR; + //generator.seed(std::time(0)); + //RandomDevice::RandomDevice(unsigned long n) : rand_seed(n), engine(n){ } + + // + std::cout<<"Creating men..("< distrUI(0.f,1.f); + if(distrUI(generator) < Settings::SPONTANEOUS_DEAF) + isDeaf = true; + + float mean = isDeaf ? Settings::SOCIAL_MEAN_D : Settings::SOCIAL_MEAN_H; + float sigma= isDeaf ? Settings::SOCIAL_VAR_D : Settings::SOCIAL_VAR_H; + std::normal_distribution distN(mean, sigma); + float socialP = distN(generator); + + float signLangLevel = isDeaf ? Settings::SIGN_LANG_DEAF : Settings::SIGN_LANG_HEAR; + bool signL = distrUI(generator) < signLangLevel ? true: false; + + Agent* a = new Agent(alleleFather, alleleMother, isDeaf, signL, socialP); + men.push_back(a); + } // - + + // ( ) + for(int i = 0; i < heterozygores; i++){ + bool isDeaf = false; + int alleleFather = 1; // TODO: + int alleleMother = 0; + // - + std::uniform_real_distribution distrUI(0.f,1.f); + if(distrUI(generator) < Settings::SPONTANEOUS_DEAF) + isDeaf = true; + + float mean = isDeaf ? Settings::SOCIAL_MEAN_D : Settings::SOCIAL_MEAN_H; + float sigma= isDeaf ? Settings::SOCIAL_VAR_D : Settings::SOCIAL_VAR_H; + std::normal_distribution distN(mean, sigma); + float socialP = distN(generator); + + float signLangLevel = isDeaf ? Settings::SIGN_LANG_DEAF : Settings::SIGN_LANG_HEAR; + bool signL = distrUI(generator) < signLangLevel ? true: false; + + Agent* a = new Agent(alleleFather, alleleMother, isDeaf, signL, socialP); + men.push_back(a); + } // - + + // + for(int i = 0; i < deafHomozygotes; i++){ + bool isDeaf = true; + int alleleFather = 1; + int alleleMother = 1; + + float mean = isDeaf ? Settings::SOCIAL_MEAN_D : Settings::SOCIAL_MEAN_H; + float sigma= isDeaf ? Settings::SOCIAL_VAR_D : Settings::SOCIAL_VAR_H; + std::normal_distribution distN(mean, sigma); + float socialP = distN(generator); + + std::uniform_real_distribution distrUI(0.f,1.f); + float signLangLevel = isDeaf ? Settings::SIGN_LANG_DEAF : Settings::SIGN_LANG_HEAR; + bool signL = distrUI(generator) < signLangLevel ? true: false; + + Agent* a = new Agent(alleleFather, alleleMother, isDeaf, signL, socialP); + men.push_back(a); + }// - + std::random_shuffle(men.begin(), men.end()); + // + std::cout<<"Done\n"; + + std::cout<<"Creating women..\t"; + // + deafHomozygotes = (int) (initPopSizeW*Settings::DEAF_HOMOZYGOTES); + hearHomozygotes = (int) (initPopSizeW*Settings::HEAR_HOMOZYGOTES); + heterozygores = initPopSizeW - deafHomozygotes - hearHomozygotes; + // ( ) + for(int i = 0; i < hearHomozygotes; i++){ + bool isDeaf = false; + int alleleFather = 0; + int alleleMother = 0; + // - + std::uniform_real_distribution distrUI(0.f,1.f); + if(distrUI(generator) < Settings::SPONTANEOUS_DEAF) + isDeaf = true; + + float mean = isDeaf ? Settings::SOCIAL_MEAN_D : Settings::SOCIAL_MEAN_H; + float sigma= isDeaf ? Settings::SOCIAL_VAR_D : Settings::SOCIAL_VAR_H; + std::normal_distribution distN(mean, sigma); + float socialP = distN(generator); + + float signLangLevel = isDeaf ? Settings::SIGN_LANG_DEAF : Settings::SIGN_LANG_HEAR; + bool signL = distrUI(generator) < signLangLevel ? true: false; + + Agent* a = new Agent(alleleFather, alleleMother, isDeaf, signL, socialP); + women.push_back(a); + } // - + + // ( ) + for(int i = 0; i < heterozygores; i++){ + bool isDeaf = false; + int alleleFather = 1; // TODO: + int alleleMother = 0; + // - + std::uniform_real_distribution distrUI(0.f,1.f); + if(distrUI(generator) < Settings::SPONTANEOUS_DEAF) + isDeaf = true; + + float mean = isDeaf ? Settings::SOCIAL_MEAN_D : Settings::SOCIAL_MEAN_H; + float sigma= isDeaf ? Settings::SOCIAL_VAR_D : Settings::SOCIAL_VAR_H; + std::normal_distribution distN(mean, sigma); + float socialP = distN(generator); + + float signLangLevel = isDeaf ? Settings::SIGN_LANG_DEAF : Settings::SIGN_LANG_HEAR; + bool signL = distrUI(generator) < signLangLevel ? true: false; + + Agent* a = new Agent(alleleFather, alleleMother, isDeaf, signL, socialP); + women.push_back(a); + } // - + + // + for(int i = 0; i < deafHomozygotes; i++){ + bool isDeaf = true; + int alleleFather = 1; + int alleleMother = 1; + + float mean = isDeaf ? Settings::SOCIAL_MEAN_D : Settings::SOCIAL_MEAN_H; + float sigma= isDeaf ? Settings::SOCIAL_VAR_D : Settings::SOCIAL_VAR_H; + std::normal_distribution distN(mean, sigma); + float socialP = distN(generator); + + std::uniform_real_distribution distrUI(0.f,1.f); + float signLangLevel = isDeaf ? Settings::SIGN_LANG_DEAF : Settings::SIGN_LANG_HEAR; + bool signL = distrUI(generator) < signLangLevel ? true: false; + + Agent* a = new Agent(alleleFather, alleleMother, isDeaf, signL, socialP); + women.push_back(a); + }// - + std::random_shuffle(women.begin(), women.end()); + // + std::cout<<"Done\n"; + + std::cout<<"\nMain cycle\n"; + // + for(int gen = 0; gen < maxGenerations; gen++){ + std::cout<<"Generation\t"< vect(women.size(),0.0f); + //matrixCurrent.assign(men.size(),vect); + std::cout<<"\tDone\n"; + + // - <, > + std::cout<<"\tInitializing settledPairs\t"; + std::uniform_real_distribution distrUI(0.f,1.f); + std::cout<<"."; + std::vector > > settledPairs(men.size()); + std::cout<<"."; + for(int i = 0; i < settledPairs.size(); i++){ + float f = distrUI(generator); + int sign = f < 0.5f ? -1 : 1; + int candidatePairs = Settings::CANDIDATE_PAIRS_MEAN + + (int)(sign*f*Settings::CANDIDATE_PAIRS_VAR); + + // TODO: + int left = i - candidatePairs/2; + int right = i + candidatePairs/2; + + // HACK: 2018/11/23 + if(Settings::DEAF_COMMUNITY_MODEL == 1){ + left = 0; + right = women.size() - 1; + } + + if(left < 0){ + right -= left; + left = 0; + } + if(right >= women.size()){ + right = women.size() - 1; + left = right - candidatePairs; + } + + std::vector > pairs(candidatePairs); + for(unsigned int p = 0; p < pairs.size(); p++){ + pairs.at(p).first = left; + // - + //matrixCurrent.at(i).at(left) + pairs.at(p).second = esteem(men.at(i),women.at(left)); + left++; + } + settledPairs.at(i) = pairs; + } + // (END) + std::cout<<"Done\n"; + // + // + /*for(unsigned int m = 0; m < men.size(); m++){ + // + for(unsigned int w = 0; w < women.size(); w++){ + if(matrixCurrent.at(m).at(w) >= 0.0f) + matrixCurrent.at(m).at(w) = esteem(men.at(m),women.at(w)); + } + } */ + // + +/* std::cout<<"\tGenerating offsprings\t"; + // , + // + std::cout << "MENS" << std::endl; + for (auto m = 0; m < settledPairs.size(); ++m) + { + std::cout << "MEN: " << m << ": "; + for (auto w = 0; w < settledPairs[m].size(); ++w) + { + std::cout << settledPairs[m][w].first << " : " << settledPairs[m][w].second << "; "; + } + std::cout << std::endl; + } +*/ + + + for(int m = 0; m < men.size(); m++){ + + // + int bestW = 0; + float bestScore = 0.0f; + + /* + for(int w = 0; w < women.size(); w++){ + if(matrixCurrent.at(m).at(w) > bestScore){ + bestScore = matrixCurrent.at(m).at(w); + bestW = w; + } + } // + **/ + + // ! + + + + + + + // + + + + + + for(unsigned int p = 0; p < settledPairs.at(m).size(); p++){ + unsigned int w = settledPairs.at(m).at(p).first; + + if(women.at(w)->alreadyMarried) + continue; + + if(settledPairs.at(m).at(p).second/*matrixCurrent.at(m).at(w)*/ > bestScore){ + bestScore = settledPairs.at(m).at(p).second; //matrixCurrent.at(m).at(w); + bestW = w; + } + } + + // (END) + + if(bestScore <= 0.0f) + continue; // + + // , + int* mariage = &marriageHH; + int* childrenType = &childrenHH; + + float meanChildren = birthRateH; + if((men.at(m)->deaf() && !women.at(bestW)->deaf()) || + (!men.at(m)->deaf() && women.at(bestW)->deaf())){ + mariage = &marriageDH; + childrenType = &childrenDH; + } + if(men.at(m)->deaf() && women.at(bestW)->deaf()){ + mariage = &marriageDD; + childrenType = &childrenDD; + } + if(men.at(m)->deaf() || women.at(bestW)->deaf()){ + meanChildren = birthRateD; + } + + boost::math::beta_distribution<> distrB(Settings::BETA_A,Settings::BETA_B); + float correction = (Settings::BETA_A+Settings::BETA_B)/Settings::BETA_A*meanChildren; + // FOR WINDOWS float fChildren = distrB(generator)*correction; // + float fChildren = quantile(distrB, uniform(rng)) * correction; + int children = (int) std::floor(fChildren+0.5f); + + (*mariage)++; + (*childrenType) += children; + + // TODO: - + + std::vector newSibs; // + std::vector deafSibs;// + + for(int i = 0; i < children; i++){ + Agent* newAgent = new Agent(men.at(m), m, women.at(bestW), bestW); + newSibs.push_back(newAgent); + if(newAgent->deaf()){ + deafSibs.push_back(newAgent); + } + // + std::uniform_int_distribution distrUI(0,1); + if(distrUI(generator) == 0){ + newMen.push_back(newAgent); + } + else{ + newWomen.push_back(newAgent); + } + } + // + // 1 - - + if(men.at(m)->deaf() || women.at(bestW)->deaf()){ + if(men.at(m)->knowsSign() || women.at(bestW)->knowsSign()){ + for(auto i = 0; i < newSibs.size(); i++){ + newSibs.at(i)->teachSignLanguage(); + } + } + } + + // 2 - + else if(deafSibs.size() > 0){ + std::uniform_real_distribution distrUF(0.f,1.f); + // ) + bool sibsKnowSL = false; + // + for(auto i = 0; i < deafSibs.size(); i++){ + if(distrUF(generator) <= Settings::SIGN_LANG_DEAF){ + deafSibs.at(i)->teachSignLanguage(); + sibsKnowSL = true; + } + } + // + for(auto i = 0; i < newSibs.size(); i++){ + if(!newSibs.at(i)->deaf() && distrUF(generator) <= Settings::SIGN_LANG_HEAR){ + newSibs.at(i)->teachSignLanguage(); + sibsKnowSL = true; + } + } + // ) + if(men.at(m)->knowsSign() || women.at(bestW)->knowsSign() || sibsKnowSL){ + for(auto i = 0; i < newSibs.size(); i++){ + newSibs.at(i)->teachSignLanguage(); + } + } + } + + // 3 - + else { + std::uniform_real_distribution distrUF(0.f,1.f); + for(auto i = 0; i < newSibs.size(); i++){ + if(distrUF(generator) <= Settings::SIGN_LANG_HEAR){ + newSibs.at(i)->teachSignLanguage(); + } + } + } + // (END) + + // + women.at(bestW)->alreadyMarried = true; + //for(int i = m; i < men.size(); i++){ + // matrixCurrent.at(i).at(bestW) = -100.0f; + //} + } // + std::cout<<"Done\n"; + + std::cout<<"\tSaving model state\t"; + // + int totalP = men.size()+women.size(); + outputFile<deaf()) + totalDeaf++; + } + for(auto i = 0; i < women.size(); i++){ + if(women.at(i)->deaf()) + totalDeaf++; + } + outputFile<<"\t"<getDeafAllelesCount(); + deafAllelesTotal += deafAlleles; + //int increase = deafAllelesTotal == 2 ? 1 : 0; + deafHomoz += deafAlleles/2; + } + for(unsigned int i = 0; i< women.size(); i++){ + int deafAlleles = women.at(i)->getDeafAllelesCount(); + deafAllelesTotal += deafAlleles; + //int increase = deafAllelesTotal == 2 ? 1 : 0; + deafHomoz += deafAlleles/2; + } + + outputFile<<"\t"<getFatherID() == woman->getFatherID() || + man->getMotherID() == woman->getMotherID()) && woman->getMotherID() != -1){ + return -50.f; + } + + if(man->deaf() == woman->deaf()){ + if(man->deaf()){ + ans += 2*Settings::WEIGHT_PHENO_D; + float sum1 = man->knowsSign() ? Settings::WEIGHT_SIGN_D : 0; + float sum2 = woman->knowsSign() ? Settings::WEIGHT_SIGN_D : 0; + ans += sum1+sum2; + } + else{ + ans += 2*Settings::WEIGHT_PHENO_H; + } + } + else{ + if(man->knowsSign() && woman->knowsSign()){ + ans += Settings::WEIGHT_SIGN_D + Settings::WEIGHT_SIGN_H; + } + } + + if(man->getSocialP() + woman->getSocialP() > ans) + return 0.0f; + + return ans; +} + +void Processor::initSettings(std::string fileName){ + std::vector script; + std::ifstream file(fileName.c_str()); + std::string str; + + while(getline(file,str)){ + if(str.length() > 2) + script.push_back(str); + } + file.close(); + + // process Script + unsigned int curLine; + for(curLine = 0; curLine < script.size(); curLine++){ + if(script.at(curLine).at(0) == '/' || script.at(curLine).at(0) == '#') + continue; + + std::vector tokensVector; // Search for tokens + //boost::split(tokensVector, script.at(curLine), boost::is_any_of("=") ); + boost::split(tokensVector, script.at(curLine), std::bind2nd(std::equal_to(), '=')); + + std::string instr = tokensVector.at(0); + boost::to_lower(instr); + boost::trim(instr); + + // + if(instr == "generations" || instr == "iterations" ){ + int iter = Settings::MAX_GENERATIONS; + sscanf_s(tokensVector.at(1).c_str(),"%d", &iter); + Settings::MAX_GENERATIONS = iter; + } + if(instr == "init_pop_men"){ + int pop = Settings::INIT_POP_SIZE_M; + sscanf_s(tokensVector.at(1).c_str(),"%d", &pop); + Settings::INIT_POP_SIZE_M = pop; + } + if(instr == "init_pop_women"){ + int pop = Settings::INIT_POP_SIZE_W; + sscanf_s(tokensVector.at(1).c_str(),"%d", &pop); + Settings::INIT_POP_SIZE_W = pop; + } + if(instr == "candidate_pairs_mean"){ + int cand = Settings::CANDIDATE_PAIRS_MEAN; + sscanf_s(tokensVector.at(1).c_str(),"%d", &cand); + Settings::CANDIDATE_PAIRS_MEAN = cand; + } + if(instr == "candidate_pairs_var"){ + int cand = Settings::CANDIDATE_PAIRS_VAR; + sscanf_s(tokensVector.at(1).c_str(),"%d", &cand); + Settings::CANDIDATE_PAIRS_VAR = cand; + } + else if(instr == "spontaneous_deaf"){ + float deaf = Settings::SPONTANEOUS_DEAF; + sscanf_s(tokensVector.at(1).c_str(),"%f", &deaf); + Settings::SPONTANEOUS_DEAF = deaf; + } + else if(instr == "deaf_allele_ratio"){ + float deaf = Settings::DEAF_ALLELE_RATIO; + sscanf_s(tokensVector.at(1).c_str(),"%f", &deaf); + Settings::DEAF_ALLELE_RATIO = deaf; + } + else if(instr == "deaf_homozygotes"){ + float deaf = Settings::DEAF_HOMOZYGOTES; + sscanf_s(tokensVector.at(1).c_str(),"%f", &deaf); + Settings::DEAF_HOMOZYGOTES = deaf; + } + else if(instr == "hear_homozygotes"){ + float hear = Settings::HEAR_HOMOZYGOTES; + sscanf_s(tokensVector.at(1).c_str(),"%f", &hear); + Settings::HEAR_HOMOZYGOTES = hear; + } + else if(instr == "birth_rate_hearing" || instr == "birth_rate_h"){ + float rate = Settings::BIRTH_RATE_H; + sscanf_s(tokensVector.at(1).c_str(),"%f", &rate); + Settings::BIRTH_RATE_H = rate; + } + else if(instr == "birth_rate_deaf" || instr == "birth_rate_d"){ + float rate = Settings::BIRTH_RATE_D; + sscanf_s(tokensVector.at(1).c_str(),"%f", &rate); + Settings::BIRTH_RATE_D = rate; + } + else if(instr == "beta_a"){ + float rate = Settings::BETA_A; + sscanf_s(tokensVector.at(1).c_str(),"%f", &rate); + Settings::BETA_A = rate; + } + else if(instr == "beta_b"){ + float rate = Settings::BETA_B; + sscanf_s(tokensVector.at(1).c_str(),"%f", &rate); + Settings::BETA_B = rate; + } + else if(instr == "social_mean_h" || instr == "social_mean_hearing"){ + float rate = Settings::SOCIAL_MEAN_H; + sscanf_s(tokensVector.at(1).c_str(),"%f", &rate); + Settings::SOCIAL_MEAN_H = rate; + } + else if(instr == "social_mean_d" || instr == "social_mean_deaf"){ + float rate = Settings::SOCIAL_MEAN_D; + sscanf_s(tokensVector.at(1).c_str(),"%f", &rate); + Settings::SOCIAL_MEAN_D = rate; + } + else if(instr == "social_var_h" || instr == "social_var_hearing"){ + float rate = Settings::SOCIAL_VAR_H; + sscanf_s(tokensVector.at(1).c_str(),"%f", &rate); + Settings::SOCIAL_VAR_H = rate; + } + else if(instr == "social_var_d" || instr == "social_var_deaf"){ + float rate = Settings::SOCIAL_VAR_D; + sscanf_s(tokensVector.at(1).c_str(),"%f", &rate); + Settings::SOCIAL_VAR_D = rate; + } + else if(instr == "weight_phenotype_hearing" || instr == "weight_pheno_h"){ + float rate = Settings::WEIGHT_PHENO_H; + sscanf_s(tokensVector.at(1).c_str(),"%f", &rate); + Settings::WEIGHT_PHENO_H = rate; + } + else if(instr == "weight_phenotype_deaf" || instr == "weight_pheno_d"){ + float rate = Settings::WEIGHT_PHENO_D; + sscanf_s(tokensVector.at(1).c_str(),"%f", &rate); + Settings::WEIGHT_PHENO_D = rate; + } + else if(instr == "weight_sign_h" || instr == "weight_sign_hearing"){ + float rate = Settings::WEIGHT_SIGN_H; + sscanf_s(tokensVector.at(1).c_str(),"%f", &rate); + Settings::WEIGHT_SIGN_H = rate; + } + else if(instr == "weight_sign_d" || instr == "weight_sign_deaf"){ + float rate = Settings::WEIGHT_SIGN_D; + sscanf_s(tokensVector.at(1).c_str(),"%f", &rate); + Settings::WEIGHT_SIGN_D = rate; + } + else if(instr == "sign_lang_d" || instr == "sign_lang_deaf"){ + float rate = Settings::SIGN_LANG_DEAF; + sscanf_s(tokensVector.at(1).c_str(),"%f", &rate); + Settings::SIGN_LANG_DEAF = rate; + } + else if(instr == "sign_lang_h" || instr == "sign_lang_hear"){ + float rate = Settings::SIGN_LANG_HEAR; + sscanf_s(tokensVector.at(1).c_str(),"%f", &rate); + Settings::SIGN_LANG_HEAR = rate; + } + else if(instr == "output" || instr == "output_file"){ + std::string file = tokensVector.at(1); + boost::trim(file); + Settings::OUTPUT_FILE = file; + } + /*if(instr == "fullstat"){ + int flag = 0; + sscanf_s(tokensVector.at(1).c_str(),"%d", &flag); + if(flag != 0) + Settings::WRITE_FULL_STATISTICS_TO_FILE = true; + }*/ + /*else if(instr == "birth" || instr == "birthrate" || instr == "birth_rate" ){ + double rate = Settings::BirthRate; + sscanf_s(tokensVector.at(1).c_str(),"%lg", &rate); + Settings::BirthRate = rate; + }*/ + } // (END) for(curLine = 0; curLine < script.size(); curLine++) + +} diff --git a/script1.txt b/script1.txt new file mode 100644 index 0000000..72444f5 --- /dev/null +++ b/script1.txt @@ -0,0 +1,32 @@ +// Deaf2.0 + +generations = 20 + +init_pop_men = 1000000 +init_pop_women = 1000000 + +spontaneous_deaf = 0.0012 +MAX_GENERATIONS = 20 + +CANDIDATE_PAIRS_MEAN = 100 +CANDIDATE_PAIRS_VAR = 30 + +SPONTANEOUS_DEAF = 0.001f +DEAF_ALLELE_RATIO = 0.1f +DEAF_HOMOZYGOTES = 0.25f + +BIRTH_RATE_H = 2.05f +BIRTH_RATE_D = 2.05f + +BETA_A = 2.0f +BETA_B = 5.0f + +SOCIAL_MEAN_H = 0.3f +SOCIAL_VAR_H = 0.05f +SOCIAL_MEAN_D = 0.3f +SOCIAL_VAR_D = 0.05f + +WEIGHT_PHENO_H = 0.7f +WEIGHT_SIGN_H = 0.3f +WEIGHT_PHENO_D = 0.58f +WEIGHT_SIGN_D = 0.42f \ No newline at end of file diff --git a/Блок схема для Deafness model (Ген, фен, яз_жест).pdf b/Блок схема для Deafness model (Ген, фен, яз_жест).pdf new file mode 100644 index 0000000000000000000000000000000000000000..7cc8efeb3c1e8d35824845c8249936fdaaf37565 GIT binary patch literal 122070 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