Changeset 15

Show
Ignore:
Timestamp:
10/08/08 11:06:37 (16 years ago)
Author:
jgaeddert
Message:

reformatting goals, etc.; still needs work

Location:
vtcross/trunk/src
Files:
3 modified

Legend:

Unmodified
Added
Removed
  • vtcross/trunk/src/main_utility.c

    r14 r15  
    77 
    88int main() { 
    9     utility u = utility_create(2.0f, UTIL_SHAPE_BELL, UTIL_REL_LIN, UTIL_MAX); 
     9    float target=2.0f; 
     10    int goal = UTIL_GOAL_MAX; 
     11    int scale = UTIL_SCALE_LIN; 
     12    utility u = utility_create(target, goal, scale); 
    1013     
     14    printf("target : %f\n", target); 
    1115    unsigned int i; 
    1216    for (i=0; i<5; i++) 
  • vtcross/trunk/src/utility.c

    r14 r15  
    55#include <math.h> 
    66#include <stdlib.h> 
     7#include <stdbool.h> 
     8 
    79#include "utility.h" 
    810 
    911typedef float(*utility_function_prototype)(float _x, float _eta, float _sig); 
    10 float util_func_atan(float _x, float _eta, float _sig); 
     12float util_func_tanh(float _x, float _eta, float _sig); 
    1113float util_func_gauss(float _x, float _eta, float _sig); 
    1214 
    1315struct utility_s { 
    1416    float target; 
    15     int shape; 
     17    int goal; 
    1618    int scale; 
    17     int minmax; 
     19    bool flip; 
    1820    utility_function_prototype f; 
    1921    float eta; 
     
    2123}; 
    2224 
    23 utility utility_create(float _target, int _shape, int _scale, int _minmax) 
     25utility utility_create(float _target, int _goal, int _scale) 
    2426{ 
    2527    utility u = (utility) malloc(sizeof(struct utility_s)); 
    2628    u->target = _target; 
    27     u->shape = _shape; 
     29    u->goal = _goal; 
    2830    u->scale = _scale; 
    29     u->minmax = _minmax; 
    3031 
    31     switch (u->shape) { 
    32     case UTIL_SHAPE_BELL: 
     32    switch (u->goal) { 
     33    case UTIL_GOAL_MIN: 
     34        u->f = &util_func_tanh; 
     35        u->eta = u->target; 
     36        u->sig = 1.0f; 
     37        u->flip = true; 
     38        break; 
     39    case UTIL_GOAL_MAX: 
     40        u->f = &util_func_tanh; 
     41        u->eta = u->target; 
     42        u->sig = 1.0f; 
     43        u->flip = false; 
     44        break; 
     45    case UTIL_GOAL_MEET: 
    3346        u->f = &util_func_gauss; 
    3447        u->eta = u->target; 
    3548        u->sig = 1.0f; 
     49        u->flip = false; 
    3650        break; 
    37     case UTIL_SHAPE_RAMP: 
    38         u->f = &util_func_atan; 
    39         u->eta = 0.0f; 
     51    case UTIL_GOAL_AVOID: 
     52        u->f = &util_func_gauss; 
     53        u->eta = u->target; 
    4054        u->sig = 1.0f; 
     55        u->flip = true; 
    4156        break; 
    4257    default:; 
     
    5368float utility_evaluate(utility _u, float _x) 
    5469{ 
    55     float y = _x / _u->target; 
    56     if (_u->scale==UTIL_REL_LOG) 
     70    float y = _x; 
     71    if (_u->scale==UTIL_SCALE_LOG) 
    5772        y = logf(y); 
    58     return _u->f( y, _u->eta, _u->sig); 
     73    float v = _u->f( y, _u->eta, _u->sig); 
     74    return (_u->flip) ? 1-v : v; 
    5975 
    6076} 
    6177 
    62 float util_func_atan(float _x, float _eta, float _sig) { 
     78float util_func_tanh(float _x, float _eta, float _sig) { 
    6379    return tanhf((_x-_eta)/_sig); 
    6480} 
  • vtcross/trunk/src/utility.h

    r14 r15  
    33// 
    44 
    5 #define UTIL_SHAPE_BELL 0 
    6 #define UTIL_SHAPE_RAMP 1 
     5#define UTIL_GOAL_MIN   0 
     6#define UTIL_GOAL_MAX   1 
     7#define UTIL_GOAL_MEET  2 
     8#define UTIL_GOAL_AVOID 3 
    79 
    8 #define UTIL_REL_LIN    0 
    9 #define UTIL_REL_LOG    1 
    10  
    11 #define UTIL_MAX        0 
    12 #define UTIL_MIN        1 
     10#define UTIL_SCALE_LIN  0 
     11#define UTIL_SCALE_LOG  1 
    1312 
    1413typedef struct utility_s * utility; 
    1514 
    16 utility utility_create(float _target, int _shape, int _scale, int _minmax); 
     15utility utility_create(float _target, int _goal, int _scale); 
    1716void utility_free(utility _u); 
    1817