IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Sep 10, 2004, 5:03:36 PM (22 years ago)
Author:
gusciora
Message:

...

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/psLib/src/dataManip/psMinimize.c

    r1781 r1798  
    99 *  @author George Gusciora, MHPCC
    1010 *
    11  *  @version $Revision: 1.37 $ $Name: not supported by cvs2svn $
    12  *  @date $Date: 2004-09-10 22:25:59 $
     11 *  @version $Revision: 1.38 $ $Name: not supported by cvs2svn $
     12 *  @date $Date: 2004-09-11 03:03:36 $
    1313 *
    1414 *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
     
    12441244        psTrace(".psLib.dataManip.p_psDetermineBracket", 4,
    12451245                "---- p_psDetermineBracket() end (NULL) ----\n");
     1246        psFree(bracket);
    12461247        return(NULL);
    12471248    }
     
    12931294
    12941295    psTrace(".psLib.dataManip.p_psDetermineBracket", 6,
    1295             "HMMM(%d): (%f %f %f) (%f %f %f)\n", iter, a, b, c, fa, fb, fc);
     1296            "(a, b, c) is (%f %f %f) (fa, fb, fc) is (%f %f %f)\n", a, b, c, fa, fb, fc);
     1297
    12961298    while (iter > 0) {
    12971299        psTrace(".psLib.dataManip.p_psDetermineBracket", 6,
     
    13291331
    13301332        psTrace(".psLib.dataManip.p_psDetermineBracket", 6,
    1331                 "HMMM(%d): (%f %f %f) (%f %f %f)\n", iter, a, b, c, fa, fb, fc);
     1333                "Iter(%d): (a, b, c) is (%f %f %f) (fa, fb, fc) is (%f %f %f)\n", iter, a, b, c, fa, fb, fc);
    13321334
    13331335        if (fa < fb) {
     
    13701372            "---- p_psDetermineBracket() end (NULL) ----\n");
    13711373    return(NULL);
    1372 }
    1373 
    1374 bool p_psDummyFunc(int dimNum,
    1375                    psVector *params,
    1376                    const psArray *coords,
    1377                    psMinimizePowellFunc func)
    1378 {
    1379     return(true);
    13801374}
    13811375
     
    14941488    psTrace(".psLib.dataManip.psLineMin", 4,
    14951489            "---- psLineMin() begin ----\n");
    1496 
    1497     for (i=0;i<params->n;i++) {
    1498         if (paramMask->data.U8[i] == 0) {
     1490    psTrace(".psLib.dataManip.psLineMin", 6,
     1491            "min->maxIter is %d\n", min->maxIter);
     1492    psTrace(".psLib.dataManip.psLineMin", 6,
     1493            "min->tol is %f\n", min->tol);
     1494
     1495    if (paramMask != NULL) {
     1496        for (i=0;i<params->n;i++) {
     1497            if (paramMask->data.U8[i] == 0) {
     1498                if (line->data.F32[i] >= FLT_EPSILON) {
     1499                    null = 1;
     1500                    psTrace(".psLib.dataManip.psLineMin", 4,
     1501                            "line->data.F32[%d] is %f\n", i, line->data.F32[i]);
     1502                }
     1503            }
     1504        }
     1505    } else {
     1506        for (i=0;i<params->n;i++) {
    14991507            if (line->data.F32[i] >= FLT_EPSILON) {
    15001508                null = 1;
     
    15041512        }
    15051513    }
     1514
    15061515    if (null == 0) {
    15071516        psTrace(".psLib.dataManip.psLineMin", 2,
     
    15141523    tmpc = psVectorAlloc(params->n, PS_TYPE_F32);
    15151524    tmpn = psVectorAlloc(params->n, PS_TYPE_F32);
    1516 
    15171525
    15181526    for (i=0;i<params->n;i++) {
     
    15261534    bracket = p_psDetermineBracket(params, line, paramMask, coords, func);
    15271535    if (bracket == NULL) {
     1536        psFree(tmpa);
     1537        psFree(tmpb);
     1538        psFree(tmpc);
     1539        psFree(tmpn);
    15281540        psAbort(__func__, "(1) Could not bracket minimum.");
    15291541    }
     
    15541566        fc = func(tmpc, coords);
    15551567        psTrace(".psLib.dataManip.psLineMin", 6,
    1556                 "Iteration %d: f(%f %f %f) is (%f %f %f)\n", min->iter, a, b, c, fa, fb, fc);
     1568                "Iteration %d: f(%f %f %f) is (%f %f %f)\n", min->iter,
     1569                a, b, c, fa, fb, fc);
    15571570
    15581571        // We determine which is the biggest segment in [a,b,c] then split
     
    16081621            psFree(tmpn);
    16091622            psTrace(".psLib.dataManip.psLineMin", 4,
    1610                     "---- psLineMin() end (%f) ----\n", mul);
     1623                    "---- psLineMin() end.a (%f) ----\n", mul);
    16111624            return(mul);
    16121625        }
     
    16201633
    16211634    psTrace(".psLib.dataManip.psLineMin", 4,
    1622             "---- psLineMin() end (0.0) ----\n");
     1635            "---- psLineMin() end.b (0.0) ----\n");
    16231636    return(0.0);
    16241637}
     
    16631676    psTrace(".psLib.dataManip.psMinimizePowell", 4,
    16641677            "---- psMinimizePowell() begin ----\n");
     1678    psTrace(".psLib.dataManip.psMinimizePowell", 6,
     1679            "min->maxIter is %d\n", min->maxIter);
     1680    psTrace(".psLib.dataManip.psMinimizePowell", 6,
     1681            "min->tol is %f\n", min->tol);
    16651682
    16661683    pQP = psVectorAlloc(numDims, PS_TYPE_F32);
     
    17041721        for (i=0;i<numDims;i++) {
    17051722            if (paramMask->data.U8[i] == 0) {
     1723                dummyMin.maxIter = 100;
     1724                dummyMin.tol = 0.01;
    17061725                mul = psLineMin(&dummyMin, Q, v[i], paramMask, coords, func);
    17071726                if (fabs(dummyMin.value - currFuncVal) > biggestDiff) {
Note: See TracChangeset for help on using the changeset viewer.