|
|
|
|
@ -960,7 +960,7 @@ BOOL Colv_limp_thr::rellena_info_nw()
|
|
|
|
|
|
|
|
|
|
///////////////////////////////
|
|
|
|
|
//velocidad
|
|
|
|
|
if((olv_limp->iaso[ia].flgs & OLV_LIMP_FLG_CIRC_NONE) || ispedestrian)
|
|
|
|
|
if ((olv_limp->iaso[ia].flgs & OLV_LIMP_FLG_CIRC_NONE) || ispedestrian)
|
|
|
|
|
{
|
|
|
|
|
s= OLV_LIMP_VELO_CIRC_PEAT; //se le pone velo muy bajita para que intente no ir por ahí, porque son calles prohibidas
|
|
|
|
|
//a no ser que haya un contenedor
|
|
|
|
|
@ -970,6 +970,7 @@ BOOL Colv_limp_thr::rellena_info_nw()
|
|
|
|
|
{
|
|
|
|
|
s=dbf.getI(icampv);
|
|
|
|
|
}
|
|
|
|
|
s = dbf.getI(icampv);
|
|
|
|
|
if(s<=0)
|
|
|
|
|
{
|
|
|
|
|
s=OLV_LIMP_VELO_DEF;//pone por def
|
|
|
|
|
@ -977,7 +978,7 @@ BOOL Colv_limp_thr::rellena_info_nw()
|
|
|
|
|
|
|
|
|
|
olv_limp->iaso[ia].velReal = 1.0 * s * OLV_KMH2MS;;
|
|
|
|
|
if(cevita==0)
|
|
|
|
|
olv_limp->iaso[ia].inf_n.velo=1.0*s*OLV_KMH2MS;
|
|
|
|
|
olv_limp->iaso[ia].inf_n.velo= olv_limp->iaso[ia].velReal;
|
|
|
|
|
else if(cevita >0)
|
|
|
|
|
{
|
|
|
|
|
olv_limp->iaso[ia].inf_n.velo = 1.0 * cevita * s * OLV_KMH2MS;
|
|
|
|
|
@ -1195,6 +1196,14 @@ BOOL Colv_limp_thr::rellena_info_amb()
|
|
|
|
|
if(!olv_limp->barr_mix)
|
|
|
|
|
olv_limp->barr_mix=(barr_mix & (OLV_LIMP_FLG_AMB_APA | OLV_LIMP_FLG_AMB_BORD)) && (barr_mix & OLV_LIMP_FLG_AMB_ACE);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
if (olv_limp->uds_tto == OliviaDef::GeneralDef::OlvTipTtoMh_eje)
|
|
|
|
|
ancho = 1;
|
|
|
|
|
else if (olv_limp->uds_tto == OliviaDef::GeneralDef::OlvTipTtoM2h_eje)
|
|
|
|
|
ancho = olv_limp->ancho_via;
|
|
|
|
|
olv_limp->iaso[ia].inf_l.ancho = ancho;
|
|
|
|
|
}
|
|
|
|
|
if (icampoid >= 0)
|
|
|
|
|
{
|
|
|
|
|
olv_limp->iaso[ia].oid = dbf.getI(icampoid);
|
|
|
|
|
@ -1658,12 +1667,10 @@ BOOL Colv_limp_thr::replica_peat()
|
|
|
|
|
ient=olv_limp->carto.get(i);
|
|
|
|
|
if(!(olv_limp->iaso[ient.entity()->ref].flgs & OLV_LIMP_FLG_AMB_PEAT))
|
|
|
|
|
continue;
|
|
|
|
|
|
|
|
|
|
//Replica la peatonal
|
|
|
|
|
if(!ient.getCopy(&peatcp) || !olv_limp->carto.add(peatcp))
|
|
|
|
|
break;
|
|
|
|
|
ientcp=olv_limp->carto.get(olv_limp->carto.getNumberEntities()-1);
|
|
|
|
|
|
|
|
|
|
//Añade la info aso
|
|
|
|
|
info_aux.reset();
|
|
|
|
|
info_aux.flgs=OLV_LIMP_FLG_PEAT_REP;
|
|
|
|
|
@ -1936,6 +1943,7 @@ BOOL Colv_limp_thr::une_amb_nw(int soloi)
|
|
|
|
|
continue;
|
|
|
|
|
|
|
|
|
|
//Añade los segmentos a clase NW_union
|
|
|
|
|
|
|
|
|
|
add_uniones_obj(i);
|
|
|
|
|
}
|
|
|
|
|
//cuida si ha salido antes por falta de memo
|
|
|
|
|
@ -1947,7 +1955,6 @@ BOOL Colv_limp_thr::une_amb_nw(int soloi)
|
|
|
|
|
|
|
|
|
|
if(comp_lejos) //ojo
|
|
|
|
|
comprueba_aislados(olv_limp->inww_amb);
|
|
|
|
|
|
|
|
|
|
/////////////////////////////////////////////////////
|
|
|
|
|
//si hay algún ámbito asignado a una carretera de prohibido circular
|
|
|
|
|
//se le quita el flag a la carretera
|
|
|
|
|
@ -2134,6 +2141,8 @@ BOOL Colv_limp_thr::busca_inw_dmin_ejes(int i_amb)
|
|
|
|
|
ientamb=olv_limp->carto.getEntity(i_amb);
|
|
|
|
|
refamb=ientamb.entity()->ref;
|
|
|
|
|
npts=ientamb.getNumberPtos();
|
|
|
|
|
double* pi = ientamb.getPto(0);
|
|
|
|
|
double* pf = ientamb.getPto(npts-1);
|
|
|
|
|
////////////////////////////////////////////////////////////////////////
|
|
|
|
|
//Bucle por cada carretera de la nw
|
|
|
|
|
//empiezan donde acaban los ámbitos, y terminan en namb+nnw
|
|
|
|
|
@ -2143,9 +2152,14 @@ BOOL Colv_limp_thr::busca_inw_dmin_ejes(int i_amb)
|
|
|
|
|
refenw=ientnw.entity()->ref;
|
|
|
|
|
if(!(olv_limp->iaso[refenw].flgs & OLV_LIMP_FLG_NW))
|
|
|
|
|
continue; //no debería, pero por si acaso
|
|
|
|
|
|
|
|
|
|
if(olv_limp->iaso[refenw].oid==olv_limp->iaso[refamb].oid)
|
|
|
|
|
double* ei = ientnw.getPto(0);
|
|
|
|
|
double* ef = ientnw.getPto(ientnw.getNumberPtos()-1);
|
|
|
|
|
if (ei[0] == pi[0] && ef[0] == pf[0])
|
|
|
|
|
break;
|
|
|
|
|
/*
|
|
|
|
|
if(olv_limp->iaso[refenw].oid==olv_limp->iaso[refamb].oid)//todo a elena
|
|
|
|
|
break;
|
|
|
|
|
*/
|
|
|
|
|
}
|
|
|
|
|
if(inw>=olv_limp->n_amb+olv_limp->n_nw || pirate)
|
|
|
|
|
return FALSE;
|
|
|
|
|
@ -3883,7 +3897,7 @@ void Colv_limp_thr::calcula_ang_conj_sub(int ithr)
|
|
|
|
|
//marca las conjunciones que son adyacentes
|
|
|
|
|
conjs[i]=1;
|
|
|
|
|
|
|
|
|
|
for(j=i+1;j<nconj;j++)
|
|
|
|
|
for (j = i + 1; j<nconj; j++)
|
|
|
|
|
{
|
|
|
|
|
if(j==ic)
|
|
|
|
|
continue;
|
|
|
|
|
@ -4067,7 +4081,7 @@ double Colv_limp_thr::dame_ang_conj(int ic, int i, int j)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
ang=Colv_geom::ang_vect(v[0],v[1]);
|
|
|
|
|
if(ang> OLV_PI)
|
|
|
|
|
//if(ang> OLV_PI)
|
|
|
|
|
ang=OLV_PI-ang;
|
|
|
|
|
|
|
|
|
|
return ang;
|
|
|
|
|
@ -4148,23 +4162,131 @@ void Colv_limp_thr::revisa_calles_cortadas()
|
|
|
|
|
// return;
|
|
|
|
|
for(ic=0;ic<olv_limp->conjs.n;ic++)
|
|
|
|
|
{
|
|
|
|
|
Coste_modif coste_old;
|
|
|
|
|
nady=olv_limp->ang_conj[ic].nady;
|
|
|
|
|
/*if (nady == 1)
|
|
|
|
|
{
|
|
|
|
|
i = 0;
|
|
|
|
|
j = 0;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{*/
|
|
|
|
|
for (i = 0; i < nady; i++)
|
|
|
|
|
{
|
|
|
|
|
j = -1;
|
|
|
|
|
k = nady;
|
|
|
|
|
//localiza entrada a ic
|
|
|
|
|
if (olv_limp->cost_conj[olv_limp->ang_conj[ic].i_conjs[i]][ic] >= MAYUSCULO)
|
|
|
|
|
continue;
|
|
|
|
|
//localiza al menos una salida
|
|
|
|
|
for (j = 0; j < nady; j++)
|
|
|
|
|
{
|
|
|
|
|
//if (j == i) La salida puede ser tambien i
|
|
|
|
|
// continue;
|
|
|
|
|
|
|
|
|
|
if (olv_limp->cost_conj[ic][olv_limp->ang_conj[ic].i_conjs[j]] < MAYUSCULO &&
|
|
|
|
|
olv_limp->ang_conj[ic].angs[i][j])
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
//por cada entrada a ic al menos tiene que tener una salida
|
|
|
|
|
if (j >= nady)
|
|
|
|
|
{
|
|
|
|
|
//pone coste extra de i a ic
|
|
|
|
|
// coste_old.i = olv_limp->ang_conj[ic].i_conjs[i];
|
|
|
|
|
coste_old.i = olv_limp->ang_conj[ic].i_conjs[i];
|
|
|
|
|
coste_old.j = ic;
|
|
|
|
|
coste_old.coste = olv_limp->cost_conj[olv_limp->ang_conj[ic].i_conjs[i]][ic];
|
|
|
|
|
|
|
|
|
|
olv_limp->coste_modificado.push_back(coste_old);
|
|
|
|
|
olv_limp->cost_conj.set(olv_limp->ang_conj[ic].i_conjs[i], ic, coste_old.coste * 10);
|
|
|
|
|
|
|
|
|
|
//por la entrada i a ic es cortada, abre salidas
|
|
|
|
|
|
|
|
|
|
for (j = 0; j < nady; j++)
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
if (olv_limp->cost_conj[ic][olv_limp->ang_conj[ic].i_conjs[j]] < MAYUSCULO)
|
|
|
|
|
{
|
|
|
|
|
//abre salidas con un coste extra
|
|
|
|
|
olv_limp->ang_conj[ic].angs[i][j] = 1;
|
|
|
|
|
|
|
|
|
|
coste_old.i = ic;
|
|
|
|
|
coste_old.j = olv_limp->ang_conj[ic].i_conjs[j];
|
|
|
|
|
coste_old.coste = olv_limp->cost_conj[ic][olv_limp->ang_conj[ic].i_conjs[j]];
|
|
|
|
|
olv_limp->coste_modificado.push_back(coste_old);
|
|
|
|
|
olv_limp->cost_conj.set(ic, olv_limp->ang_conj[ic].i_conjs[j], coste_old.coste * 10);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
//}
|
|
|
|
|
/*
|
|
|
|
|
if(i<nady && k<nady)
|
|
|
|
|
{
|
|
|
|
|
//solo tiene una calle por donde volver
|
|
|
|
|
olv_limp->ang_conj[ic].angs[i][k] = 1;
|
|
|
|
|
if (olv_limp->cost_conj[ic][olv_limp->ang_conj[ic].i_conjs[k]] < MAYUSCULO)
|
|
|
|
|
{
|
|
|
|
|
coste_old.i = ic;
|
|
|
|
|
coste_old.j = olv_limp->ang_conj[ic].i_conjs[k];
|
|
|
|
|
olv_limp->coste_modificado.push_back(coste_old);
|
|
|
|
|
olv_limp->cost_conj.set(ic, olv_limp->ang_conj[ic].i_conjs[k], olv_limp->cost_conj[ic][olv_limp->ang_conj[ic].i_conjs[k]] * 10);
|
|
|
|
|
}
|
|
|
|
|
if(olv_limp->cost_conj[olv_limp->ang_conj[ic].i_conjs[i]][ic] < MAYUSCULO)
|
|
|
|
|
{
|
|
|
|
|
coste_old.i = olv_limp->ang_conj[ic].i_conjs[i];
|
|
|
|
|
coste_old.j = ic;
|
|
|
|
|
olv_limp->coste_modificado.push_back(coste_old);
|
|
|
|
|
olv_limp->cost_conj.set(olv_limp->ang_conj[ic].i_conjs[i], ic, olv_limp->cost_conj[olv_limp->ang_conj[ic].i_conjs[i]][ic] * 10);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
*/
|
|
|
|
|
/*else
|
|
|
|
|
{
|
|
|
|
|
for (i = 0; i < nady; i++)
|
|
|
|
|
{
|
|
|
|
|
if (!(olv_limp->cost_conj[olv_limp->ang_conj[ic].i_conjs[i]][ic] < MAYUSCULO))
|
|
|
|
|
continue;
|
|
|
|
|
for (j = 0; j < nady; j++)
|
|
|
|
|
{
|
|
|
|
|
if (j == i)
|
|
|
|
|
continue;
|
|
|
|
|
if (!(olv_limp->cost_conj[ic][olv_limp->ang_conj[ic].i_conjs[j]] < MAYUSCULO))
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
if (j >= nady)
|
|
|
|
|
{
|
|
|
|
|
//de la conjunción i no se puede ir a otra que no sea ella misma
|
|
|
|
|
}
|
|
|
|
|
if (!olv_limp->ang_conj[ic].angs[i][j])
|
|
|
|
|
{
|
|
|
|
|
//comprueba si se puede ir de i a j o de j a i
|
|
|
|
|
if()
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
for(i=0;i<nady;i++)
|
|
|
|
|
{
|
|
|
|
|
for(j=0;j<nady;j++)
|
|
|
|
|
{
|
|
|
|
|
if (j == i)
|
|
|
|
|
continue;
|
|
|
|
|
if(!olv_limp->ang_conj[ic].angs[i][j])
|
|
|
|
|
{
|
|
|
|
|
//si el ángulo es prohibido, mira a ver si hay más conjunciones
|
|
|
|
|
for(k=0;k<nady;k++)
|
|
|
|
|
{
|
|
|
|
|
if (k == i || k==j)
|
|
|
|
|
continue;
|
|
|
|
|
if(olv_limp->ang_conj[ic].i_conjs[k]<0 || olv_limp->ang_conj[ic].i_conjs[k]>=olv_limp->conjs.n)
|
|
|
|
|
{
|
|
|
|
|
olvlog(LOG_TODO,"olv_limp_t","Ojo ang_conj fuera de límites ic %ld, k %ld",ic,k);
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
/*if(((k!=i) || (k!=j)) && (olv_limp->conjs.inc[olv_limp->ang_conj[ic].i_conjs[k]].n>1))
|
|
|
|
|
break;*/
|
|
|
|
|
/* if(((k!=i) || (k!=j)) && (olv_limp->conjs.inc[olv_limp->ang_conj[ic].i_conjs[k]].n>1))
|
|
|
|
|
break; /
|
|
|
|
|
if((olv_limp->ang_conj[ic].i_conjs[k]!=olv_limp->ang_conj[ic].i_conjs[i]) &&
|
|
|
|
|
(olv_limp->ang_conj[ic].i_conjs[k]!=olv_limp->ang_conj[ic].i_conjs[j]) &&
|
|
|
|
|
(olv_limp->cost_conj[ic][olv_limp->ang_conj[ic].i_conjs[k]]<MAYUSCULO) &&
|
|
|
|
|
@ -4174,6 +4296,105 @@ void Colv_limp_thr::revisa_calles_cortadas()
|
|
|
|
|
if(k>=nady)//estos nodos son los únicos que tiene para entrar y salir
|
|
|
|
|
{
|
|
|
|
|
olv_limp->ang_conj[ic].angs[i][j]=1;
|
|
|
|
|
//coste en calles cortadas
|
|
|
|
|
int rnw = -1;
|
|
|
|
|
Coste_modif coste_old;
|
|
|
|
|
coste_old.i = ic;
|
|
|
|
|
if (olv_limp->cost_conj[ic][olv_limp->ang_conj[ic].i_conjs[j]] < MAYUSCULO)
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
coste_old.j = j;
|
|
|
|
|
coste_old.coste = olv_limp->cost_conj[ic][olv_limp->ang_conj[ic].i_conjs[j]];
|
|
|
|
|
olv_limp->coste_modificado.push_back(coste_old);
|
|
|
|
|
olv_limp->cost_conj.set(ic, olv_limp->ang_conj[ic].i_conjs[j], olv_limp->cost_conj[ic][olv_limp->ang_conj[ic].i_conjs[j]] * 10);
|
|
|
|
|
}
|
|
|
|
|
if (i!=j && olv_limp->cost_conj[ic][olv_limp->ang_conj[ic].i_conjs[i]] < MAYUSCULO)
|
|
|
|
|
{
|
|
|
|
|
coste_old.j = i;
|
|
|
|
|
coste_old.coste = olv_limp->cost_conj[ic][olv_limp->ang_conj[ic].i_conjs[i]];
|
|
|
|
|
olv_limp->coste_modificado.push_back(coste_old);
|
|
|
|
|
olv_limp->cost_conj.set(ic, olv_limp->ang_conj[ic].i_conjs[i], olv_limp->cost_conj[ic][olv_limp->ang_conj[ic].i_conjs[i]] * 10);
|
|
|
|
|
if (olv_limp->conjs.inc[olv_limp->ang_conj[ic].i_conjs[i]].n == 1)
|
|
|
|
|
rnw = olv_limp->conjs.inc[olv_limp->ang_conj[ic].i_conjs[i]].refnw0;
|
|
|
|
|
}
|
|
|
|
|
/*if (rnw != -1)
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
}*
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}*/
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
//*************************************************************************************
|
|
|
|
|
/**
|
|
|
|
|
* Resvisa los ángulos, de forma que si hay algún giro "prohibido" de 180º, en caso
|
|
|
|
|
* de que sean calles cortadas o sin salida, los pone a ok
|
|
|
|
|
*/
|
|
|
|
|
void Colv_limp_thr::revisa_calles_cortadas_old()
|
|
|
|
|
{
|
|
|
|
|
int ic, i, j, k, nady;
|
|
|
|
|
//if(olv_limp->res_circ==OLV_RES_NO)
|
|
|
|
|
// return;
|
|
|
|
|
for (ic = 0; ic < olv_limp->conjs.n; ic++)
|
|
|
|
|
{
|
|
|
|
|
nady = olv_limp->ang_conj[ic].nady;
|
|
|
|
|
|
|
|
|
|
for (i = 0; i < nady; i++)
|
|
|
|
|
{
|
|
|
|
|
for (j = 0; j < nady; j++)
|
|
|
|
|
{
|
|
|
|
|
if (j == i)
|
|
|
|
|
continue;
|
|
|
|
|
if (!olv_limp->ang_conj[ic].angs[i][j])
|
|
|
|
|
{
|
|
|
|
|
//si el ángulo es prohibido, mira a ver si hay más conjunciones
|
|
|
|
|
for (k = 0; k < nady; k++)
|
|
|
|
|
{
|
|
|
|
|
if (k == i || k == j)
|
|
|
|
|
continue;
|
|
|
|
|
if (olv_limp->ang_conj[ic].i_conjs[k] < 0 || olv_limp->ang_conj[ic].i_conjs[k] >= olv_limp->conjs.n)
|
|
|
|
|
{
|
|
|
|
|
olvlog(LOG_TODO, "olv_limp_t", "Ojo ang_conj fuera de límites ic %ld, k %ld", ic, k);
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
/*if(((k!=i) || (k!=j)) && (olv_limp->conjs.inc[olv_limp->ang_conj[ic].i_conjs[k]].n>1))
|
|
|
|
|
break;*/
|
|
|
|
|
if ((olv_limp->ang_conj[ic].i_conjs[k] != olv_limp->ang_conj[ic].i_conjs[i]) &&
|
|
|
|
|
(olv_limp->ang_conj[ic].i_conjs[k] != olv_limp->ang_conj[ic].i_conjs[j]) &&
|
|
|
|
|
(olv_limp->cost_conj[ic][olv_limp->ang_conj[ic].i_conjs[k]] < MAYUSCULO) &&
|
|
|
|
|
(olv_limp->conjs.inc[olv_limp->ang_conj[ic].i_conjs[k]].n > 1))
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
if (k >= nady)//estos nodos son los únicos que tiene para entrar y salir
|
|
|
|
|
{
|
|
|
|
|
olv_limp->ang_conj[ic].angs[i][j] = 1;
|
|
|
|
|
//coste en calles cortadas
|
|
|
|
|
int rnw = -1;
|
|
|
|
|
Coste_modif coste_old;
|
|
|
|
|
coste_old.i = ic;
|
|
|
|
|
if (olv_limp->cost_conj[ic][olv_limp->ang_conj[ic].i_conjs[j]] < MAYUSCULO)
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
coste_old.j = j;
|
|
|
|
|
coste_old.coste = olv_limp->cost_conj[ic][olv_limp->ang_conj[ic].i_conjs[j]];
|
|
|
|
|
olv_limp->coste_modificado.push_back(coste_old);
|
|
|
|
|
olv_limp->cost_conj.set(ic, olv_limp->ang_conj[ic].i_conjs[j], olv_limp->cost_conj[ic][olv_limp->ang_conj[ic].i_conjs[j]] * 10);
|
|
|
|
|
}
|
|
|
|
|
if (i != j && olv_limp->cost_conj[ic][olv_limp->ang_conj[ic].i_conjs[i]] < MAYUSCULO)
|
|
|
|
|
{
|
|
|
|
|
coste_old.j = i;
|
|
|
|
|
coste_old.coste = olv_limp->cost_conj[ic][olv_limp->ang_conj[ic].i_conjs[i]];
|
|
|
|
|
olv_limp->coste_modificado.push_back(coste_old);
|
|
|
|
|
olv_limp->cost_conj.set(ic, olv_limp->ang_conj[ic].i_conjs[i], olv_limp->cost_conj[ic][olv_limp->ang_conj[ic].i_conjs[i]] * 10);
|
|
|
|
|
if (olv_limp->conjs.inc[olv_limp->ang_conj[ic].i_conjs[i]].n == 1)
|
|
|
|
|
rnw = olv_limp->conjs.inc[olv_limp->ang_conj[ic].i_conjs[i]].refnw0;
|
|
|
|
|
}
|
|
|
|
|
/*if (rnw != -1)
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
}*/
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
@ -7906,7 +8127,6 @@ BOOL Colv_limp_thr::planifica_fin()
|
|
|
|
|
//Si es barrido mixto hay que copiar la info en las que no se ha sectorizado
|
|
|
|
|
if(olv_limp->barr_mix)
|
|
|
|
|
copia_info_barr_mix();
|
|
|
|
|
|
|
|
|
|
///////////////////////////////////
|
|
|
|
|
//prepara los datos para guardarlos
|
|
|
|
|
if(!genera_rut_ctrl(olv_limp->nsec, olv_limp->plan, FALSE))
|
|
|
|
|
@ -8037,6 +8257,16 @@ BOOL Colv_limp_thr::genera_planif_aux(int is, Info_sec *ss, Info_planif *pp, int
|
|
|
|
|
is_uno=FALSE;
|
|
|
|
|
ref_nw=0;
|
|
|
|
|
//////////////////////////////////////////////////////////////////
|
|
|
|
|
//recompone costes
|
|
|
|
|
/*int cmn = olv_limp->coste_modificado.size();
|
|
|
|
|
for (int i = 0; i < olv_limp->coste_modificado.size(); i++)
|
|
|
|
|
{
|
|
|
|
|
Coste_modif cm = olv_limp->coste_modificado[i];
|
|
|
|
|
olv_limp->cost_conj.set(cm.i, cm.j, cm.coste);
|
|
|
|
|
}*/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if(nsecu==1)
|
|
|
|
|
{
|
|
|
|
|
@ -8223,7 +8453,15 @@ BOOL Colv_limp_thr::genera_planif_aux(int is, Info_sec *ss, Info_planif *pp, int
|
|
|
|
|
}
|
|
|
|
|
else//es carretera
|
|
|
|
|
{
|
|
|
|
|
//todo_costes_virtuales
|
|
|
|
|
ref_nw=ref_j;
|
|
|
|
|
if (olv_limp->iaso[ref_nw].inf_n.velo != olv_limp->iaso[ref_nw].velReal && olv_limp->iaso[ref_nw].velReal>0)
|
|
|
|
|
{
|
|
|
|
|
//poner coste real
|
|
|
|
|
cost = ltot / olv_limp->iaso[ref_nw].velReal;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
tp=OLV_PLAN_TIP_NW;
|
|
|
|
|
dt=OLV_DESP;
|
|
|
|
|
}
|
|
|
|
|
|