if (is_null($dd)) {
     $dd = new OppSimilarita();
     $dd->setCaricaFromId($politici[$i]['id']);
     $dd->setCaricaToId($politici[$i]['id']);
 }
 $dd->save();
 $dd = null;
 unset($dd);
 for ($j = $i + 1; $j < $ncariche; $j++) {
     $d = OppSimilaritaPeer::retrieveByPK($politici[$i]['id'], $politici[$j]['id']);
     if (is_null($d)) {
         $d = new OppSimilarita();
         $d->setCaricaFromId($politici[$i]['id']);
         $d->setCaricaToId($politici[$j]['id']);
     }
     $d->setVotingSimilarity(OppSimilaritaPeer::similarityForVotes($politici[$i], $politici[$j], $ramo) / $ncariche);
     $d->save();
     // scrittura elemento simmetrico
     $ds = OppSimilaritaPeer::retrieveByPK($politici[$j]['id'], $politici[$i]['id']);
     if (is_null($ds)) {
         $ds = new OppSimilarita();
         $ds->setCaricaFromId($d->getCaricaToId());
         $ds->setCaricaToId($d->getCaricaFromId());
     }
     $ds->setVotingSimilarity($d->getVotingSimilarity());
     $ds->save();
     $ds = null;
     unset($ds);
     $d = null;
     unset($d);
 }