Download fiabili.procedur

Back to the list

   1 : * FIABILI   PROCEDUR  CHLOE     01/10/30    21:17:45     4221           
   2 : debproc fiabili   tab*table;
   3 : *
   4 : nfois1=dime tab . points_initiaux;
   5 : si (non (exis tab resu));
   6 : tab . resu =table;
   7 : finsi;
   8 : tab . npar=2;
   9 : verbose=faux;
  10 : nbflim = dime (tab . fct_limite);
  11 : nbva = dime (tab .  param_va);
  12 : S3=-0.7071067811865475d0;
  13 : si (non (exis tab . resu limite));
  14 :       tab . resu . limite = table;
  15 :       repe bou4 nbflim;
  16 :       tab . resu . limite . &bou4 = prog;
  17 :       fin bou4;
  18 :       repe bou5 nbva;
  19 :            tab . resu . (extr &bou5 (tab . noms_des_variables))
  20 :            =prog;
  21 :      fin bou5;
  22 :      tab . resu . distance = prog;
  23 : finsi;
  24 : 
  25 : comp1=0;
  26 : comp2=0;
  27 : si (non (exis tab exploration));
  28 : tab . exploration = faux;
  29 : finsi;
  30 : si (tab . exploration);
  31 : nbx = dime tab . resu . limite . 1;
  32 : it1=0;
  33 : xdmin=1e6;
  34 : ndmin=0;
  35 : xproc=0;
  36 : xdist2=1e30;
  37 : mdist2=1e30;
  38 : xprocb=0;
  39 : xprocc=0;
  40 : xdist2=1e30;
  41 : mdist2b=1e30;
  42 : mdist2c=1e30;
  43 : 
  44 : repe bnbx nbx;
  45 : aa=extr &bnbx tab . resu . limite . 1;
  46 : si ( dist2 0);
  99 :     si (> (extr &bnbx tab . resu . limite . 1) 0);
 100 :     si (< dist2  mdist2);
 101 : ee=extr &bnbx tab . resu . distance;
 102 : ff=extr ndmin tab . resu . distance;
 103 :     si (< ee ff);
 104 :        mdist2=dist2;
 105 :        xproc=&bnbx;
 106 :     finsi;
 107 :     finsi;
 108 :     sinon;
 109 :        si (< dist2 mdist2b);
 110 :        mdist2b=dist2;
 111 :        xprocb=&bnbx;
 112 :        finsi;
 113 :        si (> dist2 mdist2b);
 114 :        si (< dist2 mdist2c);
 115 :           mdist2c=dist2;
 116 :           xprocc=&bnbx;
 117 :        finsi;
 118 :        finsi;
 119 :     finsi;
 120 :     finsi;
 121 : finsi; 
 122 : fin bnbx;
 123 : *
 124 :    xvar1 = table;
 125 :    xvar2 = table;
 126 :    xvar3 = table;
 127 :    xvar4 = table;
 128 : 
 129 : repe bou5 nbva ;
 130 : si (>  ndmin 0);
 131 : xvar1 . &bou5 = extr ndmin
 132 : tab . resu . (extr &bou5 tab . noms_des_variables);
 133 : finsi;
 134 : si (> xproc 0);
 135 : xvar2 . &bou5 = extr xproc
 136 : tab . resu . (extr &bou5 tab . noms_des_variables);
 137 : finsi;
 138 : si (> xprocb 0);
 139 : xvar3 . &bou5 = extr xprocb
 140 : tab . resu . (extr &bou5 tab . noms_des_variables);
 141 : finsi;
 142 : si (> xprocc 0);
 143 : xvar4 . &bou5 = extr xprocc
 144 : tab . resu . (extr &bou5 tab . noms_des_variables);
 145 : finsi;
 146 : si (>  ndmin 0);
 147 : si (> xproc 0);
 148 : si (< xvar1 . &bou5 xvar2 . &bou5);
 149 :    remp &bou5 tab . param_optimisation . vxmax (xvar2 . &bou5);
 150 :    tab . resu . reprise . vxmax . &bou5 =xvar2 . &bou5;
 151 : finsi;
 152 : si (> xvar1 . &bou5 xvar2 . &bou5);
 153 :    remp &bou5 tab . param_optimisation . vxmin (xvar2 . &bou5);
 154 :    tab . resu . reprise . vxmin . &bou5 =xvar2 . &bou5;
 155 : finsi;
 156 : finsi;
 157 : si (> xprocb 0);
 158 : si (< xvar1 . &bou5 xvar3 . &bou5);
 159 :    remp &bou5 tab . param_optimisation . vxmax (xvar3 . &bou5);
 160 :    tab . resu . reprise . vxmax . &bou5 =xvar3 . &bou5;
 161 : finsi;
 162 : si (> xvar1 . &bou5 xvar3 . &bou5);
 163 :    remp &bou5 tab . param_optimisation . vxmin (xvar3 . &bou5);
 164 :    tab . resu . reprise . vxmin . &bou5 =xvar3 . &bou5;
 165 : finsi;
 166 : finsi;
 167 : aa = extr &bou5 tab . param_optimisation . vxmin;
 168 : bb = extr &bou5 tab . param_optimisation . vxmax;
 169 : si (> xprocc 0);
 170 : si (< aa xvar4 . &bou5);
 171 : si (> xvar1 . &bou5 xvar4 . &bou5);
 172 :    remp &bou5 tab . param_optimisation . vxmin (xvar4 . &bou5);
 173 :    tab . resu . reprise . vxmin . &bou5 =xvar4 . &bou5;
 174 : finsi;
 175 : finsi;
 176 : si (> bb xvar4 . &bou5);
 177 : si (< xvar1 . &bou5 xvar4 . &bou5);
 178 :    remp &bou5 tab . param_optimisation . vxmax (xvar4 . &bou5);
 179 :    tab . resu . reprise . vxmax . &bou5 =xvar4 . &bou5;
 180 : finsi;
 181 : finsi;
 182 : finsi;
 183 : finsi;
 184 : fin bou5;
 185 : tab . resu . reprise . dernier =entier (ndmin / (nbva + 1));
 186 : finsi;
 187 : 
 188 : 
 189 : 
 190 : 
 191 : 
 192 : 
 193 : repe bou1 nfois1;
 194 : * 
 195 : ii=&bou1;
 196 : si (non (exis tab . resu  reprise));
 197 : tab . resu . ii = table;
 198 : tab . resu . ii . indfiab=prog;
 199 : tab . resu . ii . proba_defaillance = prog;
 200 : repe bbou nbflim;
 201 : tab . resu . ii .  &bbou =table;
 202 : tab . resu . ii . &bbou . limite =prog;
 203 : tab . resu . ii . &bbou . grad_limite =table;
 204 : repe bbu1 nbva;
 205 : tab . resu . ii . &bbou . grad_limite . &bbu1 =prog;
 206 : fin bbu1;
 207 : fin bbou;
 208 : tab . resu . grad_distance =table;
 209 : repe bou5 nbva;
 210 : tab . resu . grad_distance . &bou5 = prog ;
 211 : fin bou5;
 212 : finsi;
 213 :  
 214 : *
 215 : *tab1 . vx0 contient les valeurs initiales des variables
 216 : *dans l espace centre reduit
 217 : tab1 =table vecteur;
 218 : tab1 . vx0 =table vecteur;
 219 : tab1 . vf = table vecteur;
 220 : tab1 . mc = table vecteur;
 221 : tab1 . vxmin = table vecteur;
 222 : tab1 . vxmax = table vecteur;
 223 : tab1 . vcmax = table vecteur;
 224 : *
 225 : repe bouc nbflim ;
 226 :    tab1 . mc . &bouc = table vecteur;
 227 : fin bouc;
 228 : si (exis (tab  . param_optimisation) methode);
 229 :    tab1 . methode = tab  . param_optimisation . methode  ;
 230 : finsi;
 231 : si (exis (tab  . param_optimisation)  t0);
 232 :    tab1 . t0 =tab  . param_optimisation . t0;
 233 : finsi;
 234 : si (exis (tab  . param_optimisation)  s0);
 235 :    tab1 . s0 =tab  . param_optimisation . s0;
 236 : finsi;
 237 : si (exis tab max_iteration);
 238 :     tab1 . maxiteration =  tab .param_optimisation . maxiteration;
 239 : finsi;
 240 : si (exis tab   max_iteration);
 241 :     nfois = tab .  max_iteration;
 242 : sinon;
 243 :     nfois=100;
 244 : finsi;
 245 : ************************************************************
 246 : *initialisation de tab1 . vxo, tab1 . vxmin; tab1 . vxmax
 247 : ************************************************************
 248 : repeter bou5 nbva;
 249 :     tab1 . vx0 . &bou5     = extr &bou5 (tab . points_initiaux . ii);
 250 :     tab1 .  vxmin . &bou5 
 251 :          = extr &bou5 (tab . param_optimisation . vxmin);
 252 :     tab1 .  vxmax . &bou5 
 253 :          = extr &bou5 (tab . param_optimisation . vxmax);
 254 : fin bou5;
 255 : si (exis (tab . resu)  'REPRISE');
 256 : si (ega tab . resu . reprise . dernier 0);
 257 :         der = entier (  (dime  tab . resu . limite . 1) / (nbva + 1));
 258 : sinon;
 259 :         der = tab . resu . reprise . dernier;
 260 : finsi;
 261 :    repe bou5 nbva;
 262 : 
 263 :         tab1 . vx0 . &bou5 = extr der
 264 :         tab . resu . ii . (extr &bou5 (tab . noms_des_variables));
 265 :         tab1 .  vxmin . &bou5 
 266 :              = tab . resu . reprise . vxmin . &bou5;
 267 :         tab1 .  vxmax . &bou5
 268 :              = tab . resu . reprise . vxmax . &bou5;
 269 :    fin bou5;
 270 :    idmin =  tab . resu . ii . atteint_en;
 271 :    zrepri = vrai; 
 272 :    
 273 : sinon;
 274 :       
 275 :       tab . resu . reprise = table ;
 276 :       tab . resu . reprise . vxmin = table;
 277 :       tab . resu . reprise . vxmax = table;
 278 :       der=0;
 279 :       zrepri=faux;
 280 : finsi;
 281 : 
 282 : ************************************************************
 283 : *auxvf contient d(distance) / du 
 284 : ************************************************************
 285 :  _tab12=table;
 286 : _tab12 . transformation_directe = vrai;
 287 :  _tab12 . points_espace_physique = tab . points_initiaux . ii;
 288 :  _tab12 . param_va= tab . param_va;
 289 : _tab12 . noms_des_variables = tab . noms_des_variables;
 290 : si (existe tab matcov);
 291 :     _tab12 . matcov= tab . matcov;
 292 :     nataf   _tab12 ;
 293 :     lr_a= _tab12 . matrice_de_decorrelation;
 294 :     u = _tab12 . points_espace_reference ;
 295 : sinon;
 296 :     nataf   _tab12;
 297 :     u = _tab12 . points_espace_reference ;
 298 : finsi;
 299 : ************************************************************
 300 : *calcul de la jacobienne de nataf du/dx
 301 : ************************************************************
 302 : *matrice identité dans bb et son équivalent en listreel dans lbb
 303 : aux = prog 1;
 304 : repeter bou7 nbva;
 305 :    j = &bou7 - 1;
 306 :    si (neg j 0);
 307 :       repeter bou8 j;
 308 :          aux = aux et (prog 0);
 309 :       fin bou8;
 310 :    finsi;
 311 :    si (neg &bou7 1);
 312 :       aux= aux et (prog 1);
 313 :    finsi;
 314 :    j=nbva - &bou7;
 315 :    si (neg j 0);
 316 :       repeter bou9 j;
 317 :          aux= aux et (prog 0);
 318 :       fin bou9;
 319 :    finsi;
 320 : fin bou7;
 321 : cc = vale dime;
 322 : si (EGA cc 2); 
 323 :    _p0=0 0;
 324 : sinon;
 325 :    opti dime 3;
 326 :    _p0=0 0 0;
 327 : finsi;
 328 : _mp0=manu poi1 _p0;
 329 : aa=tab . noms_des_variables;
 330 : *bb jamais utilise
 331 : bb=manu rigidite _mp0 aa dual aa aux ;
 332 : lbb=aux * 1.;
 333 : *lbb pas tres utile non plus
 334 : *fin matrice identite 
 335 : **
 336 : * 
 337 : 
 338 : 
 339 : 
 340 : 
 341 : **bb1 matrice triangulaire qui contient sur sa diagonale
 342 : ** les dui/dxi du cas independant
 343 : 
 344 : ************************************************************
 345 : *initialisation de tab1 . mc et tab1 . vcmax
 346 : ************************************************************
 347 : 
 348 : ************************************************************
 349 : *initialisation des tableaux resultats
 350 : ************************************************************
 351 : 
 352 : ************************************************************
 353 : *initialisation de , tab1 . vxmin; tab1 . vxmax
 354 : ************************************************************
 355 : tmin=table;
 356 : dmin=1e6;
 357 : dproc=1e50;
 358 : zstrat=faux;
 359 : zstra1=faux;
 360 : zstra2=faux;
 361 : si (zrepri);
 362 : zbouc=vrai;
 363 : prem=faux;
 364 : sinon;
 365 : zbouc=faux;
 366 : prem=vrai;
 367 : finsi;
 368 : detect=faux;
 369 : iproc=0;
 370 : oldidmin=0;
 371 : oldiproc=0;
 372 : xder=1;
 373 : xder1=0;
 374 : xder2=0;
 375 : xder3 = 0;
 376 : ************************************************************
 377 : repe bou10  nfois ;
 378 : ************************************************************
 379 : *
 380 : *      tab1 = exce tab1;
 381 : *
 382 : ************************************************************
 383 : * on essaye de reperer le flip-flop
 384 : *recuperation des variables dans tab1;
 385 : *on remplit les valeurs des fonctions et de leurs derivees
 386 : *
 387 : *d 'abord la distance
 388 : * 
 389 : *
 390 : _aux=prog;
 391 : repe bou25 nbva;
 392 :     _aux=_aux et (prog (  tab1 . vx0 . &bou25));
 393 : fin bou25;
 394 : x=_aux;
 395 : _tab12 . transformation_directe = vrai;
 396 : _tab12 . points_espace_physique = x;
 397 : si (exis tab matcov);
 398 :    nataf  _tab12  ;
 399 :    lr_a1 = _tab12 . matrice_de_decorrelation;
 400 :    u =_tab12 . points_espace_reference;
 401 : sinon;
 402 :    nataf    _tab12;
 403 :    u  =_tab12 . points_espace_reference;
 404 : finsi;
 405 : *
 406 : aux=0;
 407 : repeter bou2  nbva;
 408 :    auxx=extr &bou2 u;
 409 :    aux=aux+ (auxx * auxx);
 410 : fin bou2;
 411 : * calcul de la distance
 412 : aux=aux ** 0.5;
 413 : tab1 . vf . 0 =aux ;
 414 : *
 415 : * on recherche si on a deja trouve cette distance
 416 : *
 417 : si (> (&bou10 + der) (xder + 1 ));
 418 : repe xb11 ((&bou10 + der) - (xder + 1));
 419 :    aux1=extr ((&bou10 + der) - &xb11) tab . resu . ii . indfiab ;
 420 :   si (< (abs((aux - aux1)/aux))  1e-50);
 421 : xtab=table;
 422 : xnor=0;
 423 : repe bou5 nbva;
 424 : xtab . &bou5 =extr ((&bou10 + der) - &xb11)
 425 :  tab . resu . ii . (extr &bou5 (tab . noms_des_variables));
 426 : xnor=xnor +
 427 :  (abs( (xtab . &bou5 - tab1 . vx0 . &bou5)/tab1 . vx0 . &bou5));
 428 : fin bou5;
 429 :       si (< xnor 1e-50);
 430 :          xbouc=( &xb11);
 431 :          zbouc=vrai;
 432 :          detect=vrai;
 433 :       quitter xb11;
 434 :       finsi;
 435 :    finsi;
 436 : fin xb11;
 437 : finsi;
 438 : *
 439 : si (zbouc);
 440 :    zbouc=faux;
 441 :    xtab1=table;
 442 : 
 443 : repe bou5 nbva;
 444 :    xtab1 . &bou5 = 0;
 445 : fin bou5;
 446 : si ( ( (extr &xb12  tab . resu . ii . 1  . limite)  0);
 451 :       dist2=0;
 452 :       repe bou5 nbva;
 453 :          dist2=dist2 + ((extr  idmin  
 454 : tab . resu . ii . (extr &bou5 (tab . noms_des_variables)))
 455 : -
 456 : (extr  &xb12  
 457 : tab . resu . ii . (extr &bou5 (tab . noms_des_variables)))) ** 2;
 458 :      fin bou5;
 459 :      si (< dist2 dproc);
 460 :         dproc=dist2;
 461 :         iproc=&xb12;
 462 :      finsi;
 463 :    finsi;
 464 : fin xb12;
 465 :    si ((> iproc 0 ) et 
 466 : (non ((ega oldidmin idmin) et (ega oldiproc iproc)))
 467 : *et (faux)
 468 : *ou (ega xbouc 1)
 469 : );
 470 : *
 471 :    repe bou5 nbva;
 472 :         tab1 . vx0 . &bou5 =((extr idmin 
 473 :         tab . resu . ii . (extr &bou5 (tab . noms_des_variables)))
 474 : + 
 475 :            (extr iproc 
 476 :  tab . resu . ii . (extr &bou5 (tab . noms_des_variables)))) * 0.5; 
 477 :    fin bou5;
 478 : oldidmin=idmin;
 479 : oldiproc=iproc;
 480 :    repe bou5 nbva;
 481 :       si (< tab1 . vx0 . &bou5 tab1 . vxmin . &bou5);
 482 :          tab1 . vxmin . &bou5 = tab1 . vx0 . &bou5;
 483 :       finsi;
 484 :       si (> tab1 . vx0 . &bou5 tab1 . vxmax . &bou5);
 485 :          tab1 . vxmax . &bou5 = tab1 . vx0 . &bou5;
 486 :       finsi;
 487 :    fin bou5;
 488 : si (> xder1 1);
 489 :  si (< tab1 . t0 0.9);
 490 :    tt=mini (prog (tab1 . t0 + 0.1) 1);
 491 :  sinon;
 492 :     si (>eg tab1 . t0 0.95);
 493 :        mess 'on a du mal a converger';
 494 :        quitter bou10;
 495 :     finsi;
 496 :    tt=mini (prog (tab1 . t0 + 0.1) 1);
 497 :  finsi;
 498 : 
 499 :    tab1 . t0 =tt;
 500 :    tab  . param_optimisation . t0 =tt ;
 501 :  xder1 = 1;
 502 : finsi;
 503 : xder1=xder1 + 1;
 504 :    xder=(&bou10 + der);
 505 :    sinon;
 506 :    repe xb1 xbouc;
 507 :       repe bou5 nbva;
 508 :          xtab . &bou5 = extr ( (&bou10 + der) - (&xb1 ))
 509 :          tab . resu . ii . (extr &bou5 (tab . noms_des_variables));
 510 :         xtab1 . &bou5=xtab1 . &bou5  + (xtab . &bou5 / xbouc);
 511 :      fin bou5;
 512 :    fin xb1;
 513 :    repe bou5 nbva;
 514 :        tab1 . vx0 . &bou5 = xtab1 . &bou5;
 515 :    fin bou5;
 516 :    xder=(&bou10 + der);
 517 : si (> xder2 1);
 518 :  si (< tab1 . t0 0.9);
 519 :    tt=mini (prog (tab1 . t0 + 0.1) 1);
 520 :  sinon;
 521 :     si (>eg tab1 . t0 0.95);
 522 :        mess 'on a du mal a converger';
 523 :        quitter bou10;
 524 :     finsi;
 525 :    tt=mini (prog (tab1 . t0 + 0.1) 1);
 526 :  finsi;
 527 : 
 528 :    tab1 . t0 =tt;
 529 :    tab  . param_optimisation . t0 =tt ;
 530 :  xder2 = 0;
 531 : finsi;
 532 : xder2=xder2 + 1;
 533 :    finsi;
 534 : sinon;
 535 :    repe bou5 nbva;
 536 :         tab1 . vx0 . &bou5 = extr idmin 
 537 :         tab . resu . ii . (extr &bou5 (tab . noms_des_variables));
 538 :    fin bou5;
 539 : xder=(&bou10 + der);
 540 : *
 541 : si (> xder3 1);
 542 :  si (< tab1 . t0 0.9);
 543 :    tt=mini (prog (tab1 . t0 + 0.1) 1);
 544 :  sinon;
 545 :     si (>eg tab1 . t0 0.95);
 546 :        mess 'on a du mal a converger';
 547 :        quitter bou10;
 548 :     finsi;
 549 :    tt=mini (prog (tab1 . t0 + 0.1) 1);
 550 :  finsi;
 551 : 
 552 :    tab1 . t0 =tt;
 553 :    tab  . param_optimisation . t0 =tt ;
 554 :  xder3 = 1;
 555 : finsi;
 556 : xder3=xder3 + 1;
 557 : xder1 = 0;
 558 : xder2 = 0;
 559 : finsi;
 560 : *         tab . param_optimisation . methode = mov;
 561 : 
 562 : 
 563 : _aux=prog;
 564 : repe bou25 nbva;
 565 :     _aux=_aux et (prog (  tab1 . vx0 . &bou25));
 566 : fin bou25;
 567 : x=_aux;
 568 : _tab12 . transformation_directe = vrai;
 569 : _tab12 . points_espace_physique = x;
 570 : si (exis tab matcov);
 571 :    nataf  _tab12  ;
 572 :    lr_a1 = _tab12 . matrice_de_decorrelation;
 573 :    u =_tab12 . points_espace_reference;
 574 : sinon;
 575 :    nataf    _tab12;
 576 :    u  =_tab12 . points_espace_reference;
 577 : finsi;
 578 : *
 579 : aux=0;
 580 : repeter bou2  nbva;
 581 :    auxx=extr &bou2 u;
 582 :    aux=aux+ (auxx * auxx);
 583 : fin bou2;
 584 : * calcul de la distance
 585 : aux=aux ** 0.5;
 586 : tab1 . vf . 0 =aux ;
 587 : finsi;
 588 : 
 589 : *
 590 : auxvf=prog;
 591 : repeter bou3  nbva;
 592 :    auxx=extr &bou3 u;
 593 :    si (ega (tab1 . vf . 0) 0.);
 594 :       auxvf= auxvf et (prog 1);
 595 :    sinon;
 596 :       auxvf=auxvf et (prog ( (auxx) / (tab1 . vf . 0)));
 597 :    finsi;
 598 : fin bou3;
 599 : 
 600 : si (exis  tab matcov);
 601 :   bb_a1=manu rigidite _mp0 aa dual aa quel lr_a1 ;
 602 :     aux2 = manu chpo _mp0 1 (extr 1 aa) (extr 1 u) nature discret;
 603 :  si (neg nbva 1);
 604 :     repe bou12 (nbva - 1);
 605 :      aux2 = aux2 et 
 606 :   ( manu chpo _mp0 1  (extr (&bou12 + 1) aa) (extr (&bou12 + 1) u) 
 607 :      nature discret);
 608 :      fin bou12;
 609 :  finsi;
 610 :    u1 = bb_a1 * aux2;
 611 :    u2 =prog;
 612 :   repe bou13 nbva;
 613 :    u2=u2 et (prog (extr u1 _p0 (extr &bou13 aa))) ;
 614 :   fin bou13;
 615 : sinon;
 616 :   u2=u   ;
 617 : finsi;
 618 : 
 619 : aux1 =prog;
 620 : repeter bou6 nbva;
 621 : aab=extr &bou6 x;
 622 : tabz=tab . param_va . &bou6;
 623 :   tamp1 = fdens aab tabz;
 624 : aab=extr &bou6  u2;
 625 : tabz1=table;
 626 : tabz1 . typva = loi_normale_standard;
 627 :   tamp2 = fdens aab tabz1;
 628 :   aux1=aux1 et (prog (tamp1/tamp2));
 629 : fin bou6;
 630 : 
 631 : ************************************************************
 632 :   aux2 = manu chpo _mp0 1 (extr 1 aa) (extr 1 aux1) nature discret;
 633 : si (neg nbva 1);
 634 :     repe bou12 (nbva - 1);
 635 :      aux2 = aux2 et 
 636 : ( manu chpo _mp0 1  (extr (&bou12 + 1) aa) (extr (&bou12 + 1) aux1) 
 637 :      nature discret);
 638 :      fin bou12;
 639 : finsi;
 640 : ************************************************************
 641 : aux3=prog;
 642 : repe bo40 nbva;
 643 :   repe bo41 nbva;
 644 :    toto = (extr (nbva  * (&bo40 - 1) + &bo41) lbb) *
 645 :    (extr &bo40 aux1);
 646 :     aux3 = aux3 et (prog toto);
 647 :    fin bo41;
 648 : fin bo40;
 649 : bb1=manu rigidite _mp0 aa dual aa aux3 ;
 650 : ************************************************************
 651 : *calcul des derivees de la distance
 652 : ************************************************************
 653 : aux4 = manu chpo _mp0 1 (extr 1 aa) (extr 1 auxvf) nature discret;
 654 :   si (neg nbva 1);
 655 :     repe bou12 (nbva - 1);
 656 :      aux4 = aux4 et 
 657 :    (manu chpo _mp0 1  (extr (&bou12 + 1) aa) (extr (&bou12 + 1) auxvf) 
 658 :      nature discret);
 659 :      fin bou12;
 660 :   finsi;
 661 :    aux5b=bb1 * aux4;
 662 : si (existe tab matcov);
 663 :    aux5= resou bb_a1 aux5b;
 664 :    aux5b=aux5;
 665 : finsi;
 666 :    repeter bou5 nbva;
 667 :      aux6 = extr aux5b _p0 (extr &bou5 tab . noms_des_variables)  ;
 668 :      tab1 . vf .  &bou5 = aux6;
 669 :      tab . resu . grad_distance . &bou5 =
 670 : tab . resu . grad_distance . &bou5 et (prog aux6);
 671 :    fin bou5; 
 672 : ************************************************************************
 673 : *****************************************************************
 674 :  tab . resu . distance = tab . resu . distance et
 675 : (  prog tab1 . vf . 0) ;
 676 :       repe bou5 nbva;
 677 :           si (ega &bou5 1);
 678 :              comp1=comp1 + 1;
 679 :           finsi;
 680 :            tab . resu . (extr &bou5 (tab . noms_des_variables))
 681 :            =
 682 :            tab . resu . (extr &bou5 (tab . noms_des_variables))
 683 :            et (prog (extr &bou5 x));
 684 :      fin bou5;
 685 : si (non (existe  tab  grad_fct_limite ));
 686 :    h1=0.00001;
 687 :    lrx1=prog nbva * 0.;
 688 :    lr2=prog;
 689 :    REPETER bou5 nbva;
 690 :       lrx2=lrx1 * 1.;
 691 :       var = tab1 . vx0 . &bou5;
 692 :       var1=abs (var * h1);
 693 :       remp lrx2 &bou5 var1;
 694 :       x1 =x + lrx2;
 695 :           si (ega &bou5 1);
 696 :              comp1=comp1 + 1;
 697 :           finsi;
 698 :           repe bou5b nbva;
 699 :              tab . resu . (extr &bou5b (tab . noms_des_variables))
 700 :               =
 701 :              tab . resu . (extr &bou5b (tab . noms_des_variables))
 702 :              et (prog (extr &bou5b x1));
 703 :           fin bou5b;
 704 : 
 705 :       _tab12 . transformation_directe = vrai;
 706 :       _tab12 . points_espace_physique = x1;
 707 :       si (exis tab matcov);
 708 :          nataf  _tab12  ;
 709 :          lr_a1 = _tab12 . matrice_de_decorrelation;
 710 :          u =_tab12 . points_espace_reference;
 711 :       sinon;
 712 :          nataf    _tab12;
 713 :          u  =_tab12 . points_espace_reference;
 714 :       finsi;
 715 : *
 716 :       aux=0;
 717 :       repeter bou2  nbva;
 718 :       auxx=extr &bou2 u;
 719 :       aux=aux+ (auxx * auxx);
 720 :       fin bou2;
 721 : * calcul de la distance
 722 :       aux=aux ** 0.5;
 723 :       tab . resu . distance = tab . resu . distance et 
 724 :        (prog aux);
 725 :    fin bou5;
 726 : finsi;
 727 : ****************************************************************
 728 : repeter bou4 nbflim;
 729 : aux = texte (tab . fct_limite . &bou4) ;
 730 : auxl= aux (x) ;
 731 : tab1 . mc . &bou4 . 0=auxl;
 732 : tab .resu . ii . &bou4 . limite 
 733 :          =tab . resu . ii .  &bou4 . limite et (prog auxl);
 734 : 
 735 : tab . resu . limite . &bou4 =
 736 : tab . resu . limite . &bou4 et (prog auxl);
 737 : 
 738 : si (ega &bou10 1);
 739 :    tmin . &bou4=abs(auxl);
 740 :    indmin=1;
 741 : finsi;
 742 : si (ega (&bou10 + der) 1);
 743 :    tmin . &bou4=abs(auxl);
 744 :    indmin=1;
 745 :    idmin= 0;
 746 : si (< auxl 0);
 747 :    dmin = tab1 . vf . 0;
 748 :    idmin=1 ;
 749 : finsi;
 750 : finsi;
 751 : si (< auxl 0);
 752 : si (< tab1 . vf . 0  dmin);
 753 : dmin = tab1 . vf . 0;
 754 : idmin= (&bou10 + der);
 755 : finsi;
 756 : finsi;
 757 : si (< (abs(auxl)) tmin . &bou4);
 758 : tmin . &bou4 = abs(auxl);
 759 : indmin= (&bou10 + der);
 760 : finsi;
 761 : si (non (existe  tab  grad_fct_limite ));
 762 : h1=0.00001;
 763 : lrx1=prog nbva * 0.;
 764 : lr2=prog;
 765 : REPETER bou5 nbva;
 766 : lrx2=lrx1 * 1.;
 767 : var = tab1 . vx0 . &bou5;
 768 : var1=abs (var * h1);
 769 : remp lrx2 &bou5 var1;
 770 : x1 =x + lrx2;
 771 : auxl1=aux ( x1);
 772 : tab . resu . limite . &bou4 =
 773 : tab . resu . limite . &bou4 et (prog auxl1);
 774 : lr2=lr2 et ( prog  ((auxl1 - auxl)/var1));
 775 : fin bou5;
 776 : lisr2=lr2;
 777 : sinon;
 778 : aux = texte (tab . grad_fct_limite . &bou4) ;
 779 : lisr2 = aux (x) ;
 780 : finsi;
 781 : repeter bou5 nbva;
 782 : tab1 . mc . &bou4 . &bou5 = extr &bou5 lisr2;
 783 : tab . resu . ii . &bou4 . grad_limite . &bou5 =
 784 : tab . resu . ii . &bou4 . grad_limite . &bou5 et
 785 :  (prog (extr &bou5 lisr2));
 786 : fin bou5;
 787 : tab1 . vcmax . &bou4 = extr (tab . param_optimisation . vcmax) &bou4;
 788 : ny=dime (tab .resu . ii . &bou4 . limite);
 789 : si (> ny (tab . npar ));
 790 : si ( (> auxl (abs(extr (ny - (tab . npar))
 791 :  tab .resu . ii . &bou4 . limite))) et
 792 : (non (ega (&bou10 + der) (indmin + 2)))
 793 : );
 794 : *si ((> idmin 1) et (> ny (idmin + 2) ) 
 795 : *);
 796 :    zstrat=vrai;
 797 :    zstra1=vrai;
 798 :    zstra2=vrai;
 799 : finsi;
 800 : finsi;
 801 : fin bou4 ;
 802 : 
 803 : 
 804 : 
 805 : tab . resu . ii . indfiab  =tab . resu . ii . indfiab
 806 : et (prog (tab1 . vf . 0));
 807 : si (EGA (&bou10 + der) 1);
 808 :    repeter bou11 nbva;
 809 :      tab . resu . ii . (extr &bou11 (tab . noms_des_variables))  
 810 :       = prog (tab1 . vx0 . &bou11);
 811 :    fin bou11;
 812 : sinon;
 813 :     repeter bou11 nbva;
 814 :       tab . resu . ii . (extr &bou11 (tab . noms_des_variables))
 815 :       =tab . resu . ii . (extr &bou11 (tab . noms_des_variables))
 816 :       et ( prog (tab1 . vx0 . &bou11));
 817 :    fin bou11;
 818 : finsi;
 819 : *
 820 : 
 821 : ************************************************************
 822 : *mise en oeuvre du changement de strategie
 823 : *
 824 : * mise a jour , tab1 . vxmin; tab1 . vxmax
 825 : ************************************************************
 826 : si (zstrat);
 827 :    si (prem);
 828 :       xder=(&bou10 + der);
 829 :       nx1=idmin - 1;
 830 :       nx2=idmin;
 831 :       si (ega nx1 0);
 832 :          nx1=(&bou10 + der) - 1;
 833 :          nx2=(&bou10 + der);
 834 :       finsi;
 835 :       prem=faux;
 836 :       toto=1;
 837 :       tab1 . vf . 0 = dmin;
 838 : remp (tab . resu . ii . indfiab) (&bou10 + der) dmin;
 839 :       repe bou5 nbva;
 840 :          tab1 . vf . &bou5 =extr idmin 
 841 :            tab . resu . grad_distance . &bou5;
 842 : remp (tab . resu . grad_distance . &bou5)
 843 :  (&bou10 + der) tab1 . vf . &bou5 ;
 844 :          tab1 . vx0 .&bou5 =extr idmin
 845 :          tab . resu . ii . (extr &bou5 (tab . noms_des_variables));
 846 : remp (tab . resu . ii . (extr &bou5 (tab . noms_des_variables)))
 847 :  (&bou10 + der) tab1 . vx0 .&bou5 ;
 848 :       fin bou5;
 849 :       repe bou4 nbflim;
 850 :            tab1 . mc . &bou4 . 0=extr idmin
 851 :                tab .resu . ii . &bou4 . limite;
 852 : remp (tab .resu . ii . &bou4 . limite) (&bou10 + der)
 853 :                      tab1 . mc . &bou4 . 0;
 854 :            repe bou5 nbva;
 855 :               tab1 . mc . &bou4 . &bou5 = extr idmin
 856 :               tab . resu . ii . &bou4 . grad_limite . &bou5;
 857 : remp (tab . resu . ii . &bou4 . grad_limite . &bou5) (&bou10 + der) 
 858 :  tab1 . mc . &bou4 . &bou5;
 859 :            fin bou5;
 860 :       fin bou4;
 861 :    sinon;
 862 :       si (ega toto 1);
 863 :          nx1=nx2;
 864 :          nx2=(&bou10 + der);
 865 :          toto=toto + 1;
 866 :       sinon;
 867 :          nx1=(&bou10 + der) - 1;
 868 :          nx2=(&bou10 + der) ;
 869 :       finsi;
 870 :    finsi;
 871 :    nlim=1;
 872 :    xlim1=extr nx1 tab . resu . ii . nlim . limite;
 873 :    xlim2=extr nx2 tab . resu . ii . nlim . limite;
 874 :    xdist1=extr nx1 tab . resu . ii . indfiab;
 875 :    xdist2=extr nx2 tab . resu . ii . indfiab;
 876 :    xvar1 = table;
 877 :    xvar2 = table;
 878 :    xvar3=table;
 879 :    repe bou5 nbva;
 880 :       xvar1 . &bou5 = extr nx1 
 881 :       tab . resu . ii . (extr &bou5 (tab . noms_des_variables));
 882 :       xvar2 . &bou5 = extr nx2 
 883 :       tab . resu . ii . (extr &bou5 (tab . noms_des_variables));
 884 :       xvar3 . &bou5 = extr idmin 
 885 :       tab . resu . ii . (extr &bou5 (tab . noms_des_variables));
 886 :    fin bou5;
 887 :    si (>eg 0 (xlim1 * xlim2));
 888 :       si (< xlim1 0);
 889 :          si (< xdist1 xdist2);
 890 :             repe bou5 nbva;
 891 :                si (<  xvar1 . &bou5 xvar2 . &bou5);
 892 : ****                  tab1 .  vxmax . &bou5 =xvar2 . &bou5;
 893 :                sinon;
 894 : ****                  tab1 .  vxmin . &bou5 =xvar2 . &bou5;
 895 :                finsi;
 896 :             fin bou5;
 897 :          sinon;
 898 :             repe bou5 nbva;
 899 :                si (<  xvar1 . &bou5 xvar2 . &bou5);
 900 :                   si (> xvar3 . &bou5 xvar1 . &bou5);
 901 :                      tab1 .  vxmin . &bou5 =xvar1 . &bou5;
 902 :                   finsi;
 903 :                sinon;
 904 :                   si (< xvar3 . &bou5 xvar1 . &bou5);
 905 :                      tab1 .  vxmax . &bou5 =xvar1 . &bou5;
 906 :                   finsi;
 907 :                finsi;
 908 :             fin bou5;
 909 :          finsi;
 910 :       sinon;
 911 :          si (< xdist1 xdist2);
 912 :             repe bou5 nbva;
 913 :                si (<  xvar1 . &bou5 xvar2 . &bou5);
 914 :                   si (> xvar3 . &bou5 xvar1 . &bou5);
 915 :                      tab1 .  vxmin . &bou5 =xvar1 . &bou5;
 916 :                   finsi;
 917 :                sinon;
 918 :                   si (< xvar3 . &bou5 xvar1 . &bou5);
 919 :                      tab1 .  vxmax . &bou5 =xvar1 . &bou5;
 920 :                   finsi;
 921 :                finsi;
 922 :             fin bou5;
 923 :          sinon;
 924 :             repe bou5 nbva;
 925 :                si (<  xvar1 . &bou5 xvar2 . &bou5);
 926 : ****                  tab1 .  vxmax . &bou5 =xvar2 . &bou5;
 927 :                sinon;
 928 : ****                  tab1 .  vxmin . &bou5 =xvar2 . &bou5;
 929 :                finsi;
 930 :             fin bou5;
 931 :          finsi;
 932 :       finsi;
 933 :    sinon;
 934 : * les points sont de part et d autre de la frontiere
 935 :     si (< xlim1 0);
 936 :          si (< xdist1 xdist2);
 937 :             repe bou5 nbva;
 938 :                si (<  xvar1 . &bou5 xvar2 . &bou5);
 939 : ****                  tab1 .  vxmax . &bou5 =xvar2 . &bou5;
 940 :                sinon;
 941 : ****                  tab1 .  vxmin . &bou5 =xvar2 . &bou5;
 942 :                finsi;
 943 :             fin bou5;
 944 :          sinon;
 945 :             repe bou5 nbva;
 946 :                si (<  xvar1 . &bou5 xvar2 . &bou5);
 947 :                   si (> xvar3 . &bou5 xvar1 . &bou5);
 948 :                      tab1 .  vxmin . &bou5 =xvar1 . &bou5;
 949 :                   finsi;
 950 :                sinon;
 951 :                   si (< xvar3 . &bou5 xvar1 . &bou5);
 952 :                      tab1 .  vxmax . &bou5 =xvar1 . &bou5;
 953 :                   finsi;
 954 :                finsi;
 955 :             fin bou5;
 956 :          finsi;
 957 :       sinon;
 958 :          si (< xdist1 xdist2);
 959 :             repe bou5 nbva;
 960 :                si (<  xvar1 . &bou5 xvar2 . &bou5);
 961 :                   si (> xvar3 . &bou5 xvar1 . &bou5);
 962 :                      tab1 .  vxmin . &bou5 =xvar1 . &bou5;
 963 :                   finsi;
 964 :                sinon;
 965 :                   si (< xvar3 . &bou5 xvar1 . &bou5);
 966 :                      tab1 .  vxmax . &bou5 =xvar1 . &bou5;
 967 :                   finsi;
 968 :                finsi;
 969 :             fin bou5;
 970 :          sinon;
 971 :             repe bou5 nbva;
 972 :                si (<  xvar1 . &bou5 xvar2 . &bou5);
 973 : ****                  tab1 .  vxmax . &bou5 =xvar2 . &bou5;
 974 :                sinon;
 975 : ****                  tab1 .  vxmin . &bou5 =xvar2 . &bou5;
 976 :                finsi;
 977 :             fin bou5;
 978 :          finsi;
 979 :       finsi;
 980 :     finsi;
 981 : finsi; 
 982 :          
 983 : ************************************************************
 984 : ************************************************************
 985 : ************************************************************
 986 : 
 987 : 
 988 : 
 989 : **
 990 : si( (> (&bou10 + der) 1) et( non (detect)));
 991 :    si (ega  (tab1 . vf . 0) 0.);
 992 :       crit=abs ((extr ((&bou10 + der) - 1) (tab . resu . ii . indfiab))
 993 :            - (tab1 . vf . 0));
 994 :    sinon;
 995 :       crit=
 996 :           abs ((extr ((&bou10 + der) - 1 ) (tab . resu . ii . indfiab))
 997 :           - (tab1 . vf . 0) / (tab1 . vf . 0));
 998 :    finsi;
 999 : sinon;
1000 :    crit=1;
1001 : finsi;
1002 : ax1 =-1 * (tab1 . vf . 0) * S3;
1003 : tab . resu . ii . proba_defaillance =
1004 : tab . resu . ii . proba_defaillance et (prog ((1 - (erf ax1))*0.5d0 ));
1005 : *
1006 : tab . resu . ii . facteurs_de_sensibilite= 
1007 : u / (tab1 . vf . 0);
1008 : si (exis  tab matcov);
1009 :    aux2=prog;
1010 :    aux4=prog;
1011 :    repe bac1 nbva;
1012 :       aux3=0;
1013 :       repe bac2 nbva;
1014 :          auxa=extr ((&bac1 - 1) * (nbva) + &bac2) lr_a1;
1015 :          auxb=1. / (extr ( &bac1) aux1);
1016 :          aux2= aux2 et (prog (auxa * auxb));
1017 :          aux3=aux3+((auxa * auxb)*(auxa * auxb));
1018 :       fin bac2;
1019 :       aux4=aux4 et (prog (aux3**0.5));
1020 :    fin bac1;
1021 :    bb_1=manu rigidite _mp0 aa dual aa aux2 ;
1022 :    aux5=prog;
1023 :    tib=table;
1024 :    repe bac1 nbva;
1025 :       si (ega &bac1 1);
1026 :          au2 = manu chpo _mp0 1
1027 :              (extr 1 aa) (extr 1 aux4) nature discret;
1028 :       sinon;
1029 :          au2 = manu chpo _mp0 1 (extr 1 aa) (0.) nature discret;
1030 :       finsi;
1031 :       repe bou12 (nbva - 1);
1032 :          si (ega &bac1 (&bou12 + 1));
1033 :             au2 = au2 et 
1034 :             ( manu chpo _mp0 1  (extr (&bou12 + 1) aa)
1035 :             (extr (&bou12 + 1) aux4) nature discret);
1036 :          sinon;
1037 :              au2 = au2 et 
1038 :              ( manu chpo _mp0 1  (extr (&bou12 + 1) aa) (0.) 
1039 :              nature discret);
1040 :          finsi;
1041 :       fin bou12;
1042 :       au3 = resou bb_1 au2;
1043 :       tib . &bac1 = au3;
1044 :   fin bac1;
1045 :   vgam=prog;
1046 :   ax=0;
1047 :   repe bggf nbva;
1048 :      aux=0;
1049 :      repe bgf nbva;
1050 :         auxc =extr &bgf tab . resu . ii . facteurs_de_sensibilite;
1051 :         auxb = extr (tib . &bgf) _p0 (extr &bggf aa);
1052 :         aux=aux + (auxc * auxb);
1053 :      fin bgf;
1054 :        vgam=vgam et (prog aux);
1055 :        ax=ax + (aux**2);
1056 :   fin bggf;
1057 :   ax1 = ax**0.5;
1058 :   vgam=vgam / ax1;
1059 :   tab . resu . ii . vecteurs_des_sensibilites=vgam;
1060 : finsi;
1061 : *
1062 : si (non (ega xder ((&bou10 + der) - 1)));
1063 : si (existe tab critere);
1064 :    si ( idmin 0);
1084 :       tab . resu . ii . indice_fiabilite = extr idmin 
1085 :       tab . resu . ii . indfiab;
1086 :       tab . resu . ii . atteint_en = idmin;
1087 :       finsi;
1088 : ************************************************************
1089 : *
1090 : mess 'iteration ' (&bou10 + der) 'distance = '  tab1 . vf . 0
1091 :  'limite = ' tab1 . mc . 1 . 0 ;
1092 : si (verbose);
1093 : repe bou5 nbva;
1094 : mess '6 tab1 . vxmin . &bou5=' tab1 . vxmin . &bou5
1095 : 'tab1 . vx0 . &bou5=' tab1 . vx0 . &bou5
1096 : 'tab1 . vxmax . &bou5=' tab1 . vxmax . &bou5;
1097 : fin bou5;
1098 : finsi;
1099 :       tab1 = exce tab1;
1100 : *
1101 : ************************************************************
1102 : fin bou10;
1103 : fin bou1;
1104 : 
1105 : 
1106 : 
1107 : finproc tab;
1108 :  
1109 :  
1110 :  

© Cast3M 2003 - All rights reserved.
Disclaimer