-
Notifications
You must be signed in to change notification settings - Fork 1
/
genetico.php
96 lines (69 loc) · 1.52 KB
/
genetico.php
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
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
<?php
include('openFile.php');
$population = 200;
$ages = 1000;
$parents = 120;
$mutants = 40;
$gens = array();
$fitness = array();
for($x=1;$x<140;$x++) {
$gens[] = $x;
}
for($x=0;$x<4;$x++) {
$gens[] = '#';
}
for($x=0;$x<$population;$x++){
$chrom[$x] = $gens;
shuffle($chrom[$x]);
}
/*
for($x=0;$x<$ages,$x++) {
$fitness = calFitness($chrom);
sort($fitness);
$fitness = array_slice($fitness,0,$parents);
$sons = genSons($fitness,$chrom);
$sons = change($sons,$mutants);
$chrom = $sons+parents+$chrom;
}
$fitness = calFitness($chrom);
sort $fitness;
echo $fitness[0];
}
*/
echo '<pre>';
print_r($class_array);
echo '</pre>';
//quanto menor melhor
function calFitness($chrom){
foreach($chrom as $key=>$value) {
$fitness[$k] = calFitnessTeachers($value);
$fitness[$k] += callFitnessWeekClasses($value);
}
}
function callFitnessWeekClasses($chrom) {
$chrom = explode_array($chrom);
for($x=0;$x<5;$x++) {
$valor = getValor($chrom[$x]);
if($valor < $maior || $maior != null)
$maior = $valor;
if($valor > $menor || $menor != null)
$menor = $valor;
}
}
function getValor($chrom) {
$valor = 0;
foreach($chrom as $key => $value) {
$valor += $class_array[$value][3];
}
return $valor;
}
function callFitnessWeekClasses($chrom) {
$value = 0;
$chrom = explode_array($chrom);
foreach($chrom as $key=>$value) {
$arr = gerTeachers($value);
$uniqueArr = array_unique($arr);
$value += $arr - $uniqueArr;
}
return $value;
}