-
Notifications
You must be signed in to change notification settings - Fork 1
/
pedigreeobject.run.cpp
71 lines (59 loc) · 2.14 KB
/
pedigreeobject.run.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
/* file: pedigreeobject.run.cpp
Copyright (C) 2008 Ville-Petteri Makinen
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the
Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
CITATION (if not provided by software website)
Makinen V-P, software name, URL:http://www.iki.fi/~vpmakine/
CONTACT (if not provided by citation)
Ville-Petteri Makinen
Folkhalsan Research Center
Biomedicum Helsinki P.O.Box 63
Haartmaninkatu 8 00014, Helsinki, Finland
Tel: +358 9 191 25462
Fax: +358 9 191 25452
WWW: http://www.iki.fi/~vpmakine
*/
#include "pedigreeobject.h"
/*
*
*/
bool
PedigreeObject::run() {
int seed = (int)(cfg["RandomSeed"].number(1));
time_t start = time(NULL);
float time_limit = (float)(cfg["TimeLimit"].number(1));
map<string, Family>::iterator pos;
if(emblems.size() < 1) return false;
if(families.size() < 1) return false;
if(cfg["TimeLimit"].size() < 1)
time_limit = 5.0*(families.size());
if(verbose_mode) cout << "\nComputing layout:\n";
for(pos = families.begin(); pos != families.end(); pos++) {
Family& fam = pos->second;
time_t now = time(NULL);
float grace = time_limit*(fam.size())/(emblems.size());
unsigned int n = fam.simulate(grace, seed, verbose_mode);
if(verbose_mode) {
if(n > 0)
cout << '\t' << fam.name() << '\t' << n << '\t'
<< "iterations in " << difftime(time(NULL), now) << "s\n";
else
cout << "\t...\n";
}
}
if(verbose_mode) {
cout << "\tLayout computed in "
<< difftime(time(NULL), start) << "s.\n";
}
return true;
}