salve amici, vi descrivo subito quale stranezza mi assilla.
ho un array che contiene dei valori numerici che confronto con un valore iniziale ad ogni iterazione del ciclo, se il valore dell'elemento corrente è superiore allora ne prendo uno a caso sempre dallo stesso array che però sia minore del valore iniziale e glielo sostituisco. il problema è che spesso non entra nell'if quando faccio il confronto con l'elemento iniziale.
ecco il codice
qui invece ecco l'output dell'esempio
il valore iniziale in questo esempio è 357614.48907738
il problema è nel secondo if, perchè nel primo ci entra però poi non capisco perchè non entra nel secondo if anche perchè il ciclo while per concludersi deve per forza entrare nel secondo if..aspetto vostri commenti
ho un array che contiene dei valori numerici che confronto con un valore iniziale ad ogni iterazione del ciclo, se il valore dell'elemento corrente è superiore allora ne prendo uno a caso sempre dallo stesso array che però sia minore del valore iniziale e glielo sostituisco. il problema è che spesso non entra nell'if quando faccio il confronto con l'elemento iniziale.
ecco il codice
PHP:
for($f=1;$f<=$N;$f++) {
if($newpop[$f]->fit>=$init_worst_fit) { // init_worst_fit è il valore iniziale
echo "entrata";
while($cond1!=1) {
$in=array_rand($support,1);
if($newpop[$in]->fit<$init_worst_fit) {
$newpop[$f]=$newpop[$in];
$cond1=1;
echo "cambiato";
}
}
}
}
qui invece ecco l'output dell'esempio
Codice:
352169.83981625 -->
346575.36416333 -->
334424.41142521 -->
333980.79978094 -->
347455.55627512 -->
329235.184671 -->
344214.14771903 -->
334424.41142521 -->
347258.837014 -->
358972.4508821 --> entrata cambiato
331137.5606518 -->
347719.44535414 -->
320607.87086469 -->
357797.45347006 --> entrata
334424.41142521 -->
335962.05633591 -->
332652.91897526 -->
347323.05322759 -->
347258.837014 -->
332692.38564749 -->
333980.79978094 -->
323466.10314394 -->
324734.99146442 -->
337893.50889831 -->
il valore iniziale in questo esempio è 357614.48907738
il problema è nel secondo if, perchè nel primo ci entra però poi non capisco perchè non entra nel secondo if anche perchè il ciclo while per concludersi deve per forza entrare nel secondo if..aspetto vostri commenti