Changeset 526

Show
Ignore:
Timestamp:
12/07/09 17:00:01 (14 years ago)
Author:
bhilburn
Message:

Converted the DSA_CE to use the new class tree.

Location:
vtcross/branches/engineTreeFix/src/cognitive_engines
Files:
4 modified

Legend:

Unmodified
Added
Removed
  • vtcross/branches/engineTreeFix/src/cognitive_engines/DSA_CE/DSA_CognitiveEngine.cpp

    r521 r526  
    4444#define UTILITY 4 
    4545 
    46  
    47 static CBR *myCBR; 
    48  
    49  
    50 CognitiveEngine::CognitiveEngine() 
     46class DSA_CE : public CognitiveEngine 
     47{ 
     48    public: 
     49        /*! Default constructor. */ 
     50        DSA_CE(); 
     51 
     52        /*! Default destructor. */ 
     53        ~DSA_CE(); 
     54 
     55        /*! \brief Preferred constructor. 
     56         * 
     57         * Overloaded constructor that creates a cognitive engine object and 
     58         * connects it to either the shell or an SML, depening on the SML bool. 
     59         * 
     60         * The 'numFields' parameter sets how large the parameter, observable, 
     61         * and utility arrays should be upon instantiation. 
     62         */ 
     63        DSA_CE(const char* serverName, const char* serverPort, \ 
     64                const int32_t numFields, const bool SML); 
     65 
     66        void RegisterServices(); 
     67        void DeregisterServices(); 
     68 
     69        /*! \brief Request that the CE optimize a set of parameters.  
     70         * 
     71         * Find the most optimal set of transmission parameters given certain 
     72         * observables and possibly a service if the SML component is present 
     73         * and active. */ 
     74        Parameter *GetSolution(Observable *observables, \ 
     75                Parameter *currentParameters); 
     76        Parameter *GetSolution(Observable *observables, \ 
     77                Parameter *currentParameters, std::string service); 
     78 
     79        /*! \brief Receive feedback from the radio  
     80         * 
     81         * Receive a feedback from the radio regarding the performance of a 
     82         * certain set of parameters, possibly associated with a service. 
     83         * 
     84         * Feedback is a single set of performance statistics that is achieved 
     85         * corresponding to a specific set of transmission parameters.  Feedback 
     86         * helps a Cognitive Engine make better future decisions based upon  
     87         * more accurate performance statistics.  
     88         */ 
     89        void ReceiveFeedback(Observable *observables,Parameter *parameters); 
     90        void ReceiveFeedback(Observable *observables, Parameter *parameters, \ 
     91                std::string service); 
     92 
     93 
     94        /*! \brief Initialize the CE and prepare it for operation.  
     95         * 
     96         * BuildCognitiveEngine performs the CE implementation specific work 
     97         * that defines the internals of a CE.  For example, a CBR CE engine 
     98         * would build the case-base reasoner or create the database, a neural 
     99         * network based CE may perform the initial training, a GA based CE 
     100         * may build the chromosome structure. 
     101         */ 
     102        void BuildCognitiveEngine(); 
     103 
     104        /*! \brief Each of these functions responds to a specific command. 
     105         * 
     106         * These functions are left principally un-implemented. It is the duty 
     107         * of child classes to implement these functions, as they define the 
     108         * cognitive engine's functionality. 
     109         */ 
     110        void PerformUpdatePerformance(); 
     111        void PerformRequestOptimizationService(); 
     112        void PerformRequestOptimization(); 
     113        void PerformQueryComponentType(); 
     114        void PerformConnectSML(); 
     115        void PerformDisconnectSML(); 
     116        void PerformResetEngineCognitive(); 
     117        void PerformShutdownEngineCognitive(); 
     118 
     119        CBR *myCBR; 
     120}; 
     121 
     122DSA_CE::DSA_CE() 
    51123{ 
    52124    LOG("Creating Cognitive Engine.\n"); 
     
    57129 
    58130 
    59 CognitiveEngine::~CognitiveEngine() 
     131DSA_CE::~DSA_CE() 
    60132{ 
    61133    delete myCBR; 
     
    67139 
    68140 
    69 CognitiveEngine::CognitiveEngine(const char *serverName, const char *serverPort, \ 
    70         const bool SML) 
     141DSA_CE::DSA_CE(const char* serverName, const char* serverPort, \ 
     142                const int32_t numFields, const bool SML) \ 
     143        : CognitiveEngine(serverName, serverPort, numFields, SML) 
    71144{ 
    72145    LOG("Creating Cognitive Engine.\n"); 
    73  
    74     pList = new Parameter[10]; 
    75     oList = new Observable[10]; 
    76     uList = new Utility[10]; 
    77     radioInfo = new Radio_Info; 
    78  
    79     ConnectToRemoteComponent(serverName, serverPort, SML); 
    80 } 
    81  
    82  
    83 void 
    84 CognitiveEngine::SendComponentType() 
    85 { 
    86     SendMessage(commandSocketFD, "response_engine_cognitive"); 
    87     LOG("Cognitive Engine responded to GetRemoteComponentType query.\n"); 
    88 } 
    89  
    90  
    91 void 
    92 CognitiveEngine::ConnectToRemoteComponent(const char *serverName, \ 
    93         const char *serverPort, const bool SML) 
    94 { 
    95     commandSocketFD = ClientSocket(serverName, serverPort); 
    96  
    97     SML_present = SML; 
    98  
    99     if(SML) { 
     146    srand ( time(NULL) ); 
     147} 
     148 
     149 
     150void  
     151DSA_CE::RegisterServices() 
     152{ 
     153    LOG("Cognitive Engine:: Registering services.\n"); 
     154 
     155    SendMessage(commandSocketFD, "register_service"); 
     156    SendMessage(commandSocketFD, "test_srv"); 
     157 
     158    SendMessage(commandSocketFD, "register_service"); 
     159    SendMessage(commandSocketFD, "test_srv1"); 
     160 
     161    SendMessage(commandSocketFD, "register_service"); 
     162    SendMessage(commandSocketFD, "test_srv2"); 
     163 
     164    SendMessage(commandSocketFD, "register_service"); 
     165    SendMessage(commandSocketFD, "test_srv3"); 
     166 
     167} 
     168 
     169//Combined with deregister component since those two things must happen togeather 
     170void  
     171DSA_CE::DeregisterServices() 
     172{ 
     173    LOG("Cognitive Engine:: Deregistering services.\n"); 
     174 
     175    SendMessage(commandSocketFD, "deregister_service"); 
     176    SendMessage(commandSocketFD, "test_srv"); 
     177 
     178    SendMessage(commandSocketFD, "deregister_service"); 
     179    SendMessage(commandSocketFD, "test_srv1"); 
     180 
     181    SendMessage(commandSocketFD, "deregister_service"); 
     182    SendMessage(commandSocketFD, "test_srv2"); 
     183 
     184    SendMessage(commandSocketFD, "deregister_service"); 
     185    SendMessage(commandSocketFD, "test_srv3"); 
     186 
     187} 
     188 
     189/* The core of the CE is this function */ 
     190Parameter*  
     191DSA_CE::GetSolution(Observable *observables, Parameter *currentParameters) 
     192{ 
     193    LOG("Cognitive Engine:: Generating solution.\n"); 
     194 
     195    /* Put together the CBR search array */ 
     196 
     197    uint32_t channel = 0; 
     198    string searchNames[1]; 
     199    string sumSearchName; 
     200    float searchVals[1]; 
     201    float utilArray[(int)pList[0].max]; 
     202    int searchOps[1]; 
     203    uint32_t numberColumns = radioInfo->numUtilities + radioInfo->numParameters + \ 
     204                             radioInfo->numObservables + 1; 
     205 
     206    float returnValues[numberColumns]; 
     207    float sumRetVals[numberColumns]; 
     208    
     209    // Total sum of utilities in sumRetVals[0] 
     210 
     211    string channel_name = "channel"; 
     212    string utility_name = "utility"; 
     213 
     214    for(int32_t i = 0 ; i < pList[0].max ; i++ ) { 
     215        searchNames[0] = pList[0].name; 
     216        searchOps[0] = 0; 
     217        searchVals[0] = i+1;  
     218     
     219        uint32_t rc = myCBR->Search(searchNames, searchOps, searchVals, 
     220            1, returnValues); 
     221 
     222    if(rc == 31337) { 
     223        // No entry - must add 
    100224         
    101         RegisterComponent(); 
    102         LOG("Cognitive Engine connected to SML at %s.\n", serverName); 
    103         ReceiveRadioConfiguration(); 
    104         ReceiveExperience(); 
     225            string rowNames[numberColumns]; 
     226            size_t rowIndex = 0; 
     227            for(size_t j = 0; j < radioInfo->numUtilities; j++) { 
     228                rowNames[rowIndex] = uList[j].name; 
     229                rowIndex++; 
     230            } 
     231            for(size_t j = 0; j < radioInfo->numParameters; j++) { 
     232                rowNames[rowIndex] = pList[j].name; 
     233            if(pList[j].name == "channel") 
     234                returnValues[rowIndex] = i+1; 
     235                rowIndex++; 
     236            } 
     237            for(size_t j = 0; j < radioInfo->numObservables; j++) { 
     238                rowNames[rowIndex] = oList[j].name; 
     239                rowIndex++; 
     240            } 
     241    
     242            rowNames[rowIndex] = utility_name; 
     243        returnValues[rowIndex] = 500; 
     244 
     245                /* Add the new optimized set to the CBR database */ 
     246 
     247            myCBR->AddRow(rowNames, returnValues, numberColumns); 
     248    } 
     249 
     250    utilArray[i] = returnValues[UTILITY];  
     251    } 
     252 
     253    printf("Current Channel Utility Scores\n"); 
     254    printf("1: %f\t7: %f\t8: %f\t14: %f\n",utilArray[0],utilArray[1],utilArray[2],utilArray[3]);     
     255    // Get sum of all the channel utilities. 
     256    sumSearchName = utility_name; 
     257    uint32_t rc = myCBR->SearchSum(sumSearchName, sumRetVals); 
     258 
     259    // Psuedo random channel selection based upon utility. 
     260    int k = rand() % (int)sumRetVals[0]; 
     261    int cdf_total(0); 
     262 
     263    for ( int i = 0; i < pList[0].max; i++ ) { 
     264        cdf_total += utilArray[i]; 
     265        if(k < cdf_total) { 
     266        channel = i + 1; 
     267        break; 
     268    } 
     269    } 
    105270         
    106         RegisterServices(); 
    107     } 
    108     else { 
    109         RegisterComponent(); 
    110         LOG("Cognitive Engine connected to shell at %s.\n", serverName); 
    111         ReceiveRadioConfiguration(); 
    112         ReceiveExperience(); 
    113     } 
    114 } 
     271    searchNames[0] = pList[0].name; 
     272    searchOps[0] = 0; 
     273    searchVals[0] = channel;  
     274   
     275    rc = myCBR->Search(searchNames, searchOps, searchVals, 
     276        1, returnValues); 
     277 
     278 
     279    //returnValues[CHANNEL] = rand() % (int)pList[0].max + (int)pList[0].min;  
     280    returnValues[CHANNEL] = channel; 
     281 
     282    printf("Cognitive Engine:: ..---===***### Channel %i has been selected ###***===---..\n",channel);  
     283    /* Package up the new set of parameters in order to add 
     284       the new entry into the CBR database.  */ 
     285 
     286    size_t returnValueIndex = 0; 
     287    for(size_t i = 0; i < radioInfo->numUtilities; i++) { 
     288        uList[i].value = returnValues[returnValueIndex]; 
     289        returnValueIndex++; 
     290    } 
     291    for(size_t i = 0; i < radioInfo->numParameters; i++) { 
     292        pList[i].value = returnValues[returnValueIndex]; 
     293        returnValueIndex++; 
     294    } 
     295    for(size_t i = 0; i < radioInfo->numObservables; i++) { 
     296        oList[i].value = returnValues[returnValueIndex]; 
     297        returnValueIndex++; 
     298    } 
     299    //returnValues[returnValueIndex] = 0; 
     300 
     301    string allNames[numberColumns]; 
     302    size_t allNameIndex = 0; 
     303    for(size_t i = 0; i < radioInfo->numUtilities; i++) { 
     304        allNames[allNameIndex] = uList[i].name; 
     305        returnValues[allNameIndex] = uList[i].target; 
     306        allNameIndex++; 
     307    } 
     308    for(size_t i = 0; i < radioInfo->numParameters; i++) { 
     309        allNames[allNameIndex] = pList[i].name; 
     310        allNameIndex++; 
     311    } 
     312    for(size_t i = 0; i < radioInfo->numObservables; i++) { 
     313        allNames[allNameIndex] = oList[i].name; 
     314    //    returnValues[allNameIndex] = 0; 
     315        allNameIndex++; 
     316    } 
     317    
     318    allNames[allNameIndex] = utility_name; 
     319 
     320    /* Add the new optimized set to the CBR database */ 
     321    //myCBR->AddRow(allNames, returnValues, returnValueIndex+1); 
     322 
     323 
     324    /* Return the set of new parameter values.  */ 
     325    return pList; 
     326} 
     327 
     328 
     329Parameter*  
     330DSA_CE::GetSolution(Observable *observables, \ 
     331        Parameter *currentParameters, std::string service) 
     332{ 
     333    LOG("Cognitive Engine:: Generating solution for %s service.\n", service.c_str()); 
     334 
     335    return pList; 
     336} 
     337 
    115338 
    116339void  
    117 CognitiveEngine::ReceiveFeedback(Observable *observables, Parameter *parameters) 
     340DSA_CE::ReceiveFeedback(Observable *observables, Parameter *parameters) 
    118341{  
    119342   LOG("Cognitive Engine:: Receiving feedback.\n"); 
     
    124347    uint32_t obsColumns = radioInfo->numObservables + 1; 
    125348    uint32_t numberTotalColumns = radioInfo->numUtilities + 
    126                                 radioInfo->numParameters + 
    127                                 radioInfo->numObservables + 1; 
     349                    radioInfo->numParameters + 
     350                    radioInfo->numObservables + 1; 
    128351 
    129352    float valList[numberColumns]; 
     
    190413 
    191414    if((observables[COMMUNICATION_TIME].value != 0) || (observables[ENERGY].value > Detection_Threshold)) {  
    192         printf("Cognitive Engine:: Possible PU Detection - Decrementing Utility. %f %f",observables[COMMUNICATION_TIME].value,observables[ENERGY].value); 
    193         newUtilityValue = newUtilityValue + punishment; 
     415    printf("Cognitive Engine:: Possible PU Detection - Decrementing Utility. %f %f",observables[COMMUNICATION_TIME].value,observables[ENERGY].value); 
     416    newUtilityValue = newUtilityValue + punishment; 
    194417    } else { 
    195         printf("Cognitive Engine:: Scan Mode:: No PU detected - Incrementing Utility."); 
    196         newUtilityValue = newUtilityValue + reward; 
     418    printf("Cognitive Engine:: Scan Mode:: No PU detected - Incrementing Utility."); 
     419    newUtilityValue = newUtilityValue + reward; 
    197420    } 
    198421 
    199422    if(newUtilityValue <= 100) 
    200         newUtilityValue = 100; 
     423    newUtilityValue = 100; 
    201424 
    202425    // Put limit on utility score to prevent a positive feedback loop  
    203426    if(newUtilityValue >= 800) 
    204         newUtilityValue = 800; 
     427    newUtilityValue = 800; 
    205428 
    206429    obsVals[obsValueIndex] = newUtilityValue; 
     
    225448 
    226449void  
    227 CognitiveEngine::WaitForSignal() 
    228 { 
    229     char buffer[256]; 
    230  
    231     while(true) { 
    232         memset(buffer, 0, 256); 
    233         
    234         ReadMessage(commandSocketFD, buffer); 
    235  
    236         // TODO this is ugly... is there a better way? Doesn't strcmp compare the 
    237         // whole string?  We only need to compare until we find a single different 
    238         // byte... 
    239         // 
    240         // If we send integer op codes rather than strings, this process will be 
    241         // MUCH faster since instead of donig string compares we can simply 
    242         // switch on the integer value... 
    243         if(strcmp(buffer, "update_performance") == 0) { 
    244              
    245             /* Receive Set of current Parameters */ 
    246             memset(buffer, 0, 256); 
    247             ReadMessage(commandSocketFD, buffer); 
    248             uint32_t numParameters = atoi(buffer); 
    249     
    250             Parameter *p = new Parameter[numParameters]; 
    251   
    252             for(size_t i = 0; i < numParameters; i++) { 
    253                 memset(buffer, 0, 256); 
    254                 ReadMessage(commandSocketFD, buffer); 
    255                 p[i].name = std::string(buffer); 
    256      
    257                 memset(buffer, 0, 256); 
    258                 ReadMessage(commandSocketFD, buffer); 
    259                 p[i].value = atof(buffer); 
    260             }  
    261  
    262             /* Receive Set of Observables */ 
    263             memset(buffer, 0, 256); 
    264             ReadMessage(commandSocketFD, buffer); 
    265             uint32_t numObservables = atoi(buffer); 
    266     
    267             Observable *o = new Observable[numObservables]; 
    268   
    269             for(size_t i = 0; i < numObservables; i++) { 
    270                 memset(buffer, 0, 256); 
    271                 ReadMessage(commandSocketFD, buffer); 
    272                 o[i].name = std::string(buffer); 
    273      
    274                 memset(buffer, 0, 256); 
    275                 ReadMessage(commandSocketFD, buffer); 
    276                 o[i].value = atof(buffer); 
    277             }   
    278  
    279             ReceiveFeedback(o,p); 
    280  
    281             delete [] o; 
    282             delete [] p; 
    283         }  
    284         else if(strcmp(buffer, "request_optimization_service") == 0) { 
    285             // THIS IS CURRENTLY IN DEMO MODE             
    286  
    287  
    288             /* Receive Set of Observables */ 
    289             LOG("\nCognitive Engine:: Receiving service name\n"); 
    290  
    291             memset(buffer, 0, 256); 
    292             ReadMessage(commandSocketFD,buffer); 
    293             LOG("\nCognitive Engine:: Got service name, %s\n", buffer); 
    294  
    295             /* Receive Set of Observables */ 
    296             LOG("\nCognitive Engine:: Receiving Observable Parameters\n"); 
    297  
    298             memset(buffer, 0, 256); 
    299             ReadMessage(commandSocketFD,buffer); 
    300             uint32_t numObservables = atoi(buffer); 
    301     
    302             Observable *o = new Observable[numObservables]; 
    303   
    304             for(size_t i = 0; i < numObservables; i++) { 
    305                 memset(buffer, 0, 256); 
    306                 ReadMessage(commandSocketFD, buffer); 
    307                 o[i].name = std::string(buffer); 
    308      
    309                 memset(buffer, 0, 256); 
    310                 ReadMessage(commandSocketFD, buffer); 
    311                 o[i].value = atof(buffer); 
    312             }   
    313  
    314             /* Receive Set of current Parameters */ 
    315             LOG("Cognitive Engine:: Receiving Current Transmission Parameters\n"); 
    316  
    317             memset(buffer, 0, 256); 
    318             ReadMessage(commandSocketFD, buffer); 
    319             uint32_t numCurrentParameters = atoi(buffer); 
    320     
    321             Parameter *cp = new Parameter[numCurrentParameters]; 
    322   
    323             for(size_t i = 0; i < numCurrentParameters; i++) { 
    324                 memset(buffer, 0, 256); 
    325                 ReadMessage(commandSocketFD, buffer); 
    326                 cp[i].name = std::string(buffer); 
    327      
    328                 memset(buffer, 0, 256); 
    329                 ReadMessage(commandSocketFD, buffer); 
    330                 cp[i].value = atof(buffer); 
    331             }   
    332             LOG("Cognitive Engine:: Processing parameters....\n"); 
    333  
    334             // TODO need to actually do something with the observables here 
    335             
    336             LOG("Cognitive Engine:: Sending Optimal Parameters to Application.\n"); 
    337             char numParametersChar[10]; 
    338             sprintf(numParametersChar, "%i", radioInfo->numParameters); 
    339             SendMessage(commandSocketFD, numParametersChar); 
    340             for(size_t i = 0; i < radioInfo->numParameters; i++) { 
    341                 SendMessage(commandSocketFD, "test"); 
    342                 SendMessage(commandSocketFD, "00"); 
    343             } 
    344  
    345             delete [] o; 
    346             delete [] cp; 
    347         } 
    348         else if(strcmp(buffer, "request_optimization") == 0) { 
    349              
    350             /* Receive Set of Observables */ 
    351             LOG("\nCognitive Engine:: Receiving Observable Parameters\n"); 
    352  
    353             memset(buffer, 0, 256); 
    354             ReadMessage(commandSocketFD,buffer); 
    355             uint32_t numObservables = atoi(buffer); 
    356     
    357             Observable *o = new Observable[numObservables]; 
    358   
    359             for(size_t i = 0; i < numObservables; i++) { 
    360                 memset(buffer, 0, 256); 
    361                 ReadMessage(commandSocketFD, buffer); 
    362                 o[i].name = std::string(buffer); 
    363      
    364                 memset(buffer, 0, 256); 
    365                 ReadMessage(commandSocketFD, buffer); 
    366                 o[i].value = atof(buffer); 
    367             }   
    368  
    369             /* Receive Set of current Parameters */ 
    370             LOG("Cognitive Engine:: Receiving Current Transmission Parameters\n"); 
    371  
    372             memset(buffer, 0, 256); 
    373             ReadMessage(commandSocketFD, buffer); 
    374             uint32_t numCurrentParameters = atoi(buffer); 
    375     
    376             Parameter *cp = new Parameter[numCurrentParameters]; 
    377   
    378             for(size_t i = 0; i < numCurrentParameters; i++) { 
    379                 memset(buffer, 0, 256); 
    380                 ReadMessage(commandSocketFD, buffer); 
    381                 cp[i].name = std::string(buffer); 
    382      
    383                 memset(buffer, 0, 256); 
    384                 ReadMessage(commandSocketFD, buffer); 
    385                 cp[i].value = atof(buffer); 
    386             }   
    387             LOG("Cognitive Engine:: Processing parameters....\n"); 
    388  
    389             Parameter *solutionSet; 
    390              
    391             solutionSet = GetSolution(o,cp); 
    392  
    393             // TODO need to actually do something with the observables here 
    394             
    395             LOG("Cognitive Engine:: Sending Optimal Parameters to Application.\n"); 
    396             char numParametersChar[10]; 
    397             char solutionValue[50]; 
    398             sprintf(numParametersChar, "%i", radioInfo->numParameters); 
    399             SendMessage(commandSocketFD, numParametersChar); 
    400             for(size_t i = 0; i < radioInfo->numParameters; i++) { 
    401                 SendMessage(commandSocketFD, solutionSet[i].name.c_str()); 
    402                 memset(solutionValue, 0, 50); 
    403                 sprintf(solutionValue, "%f", solutionSet[i].value); 
    404                 SendMessage(commandSocketFD, solutionValue); 
    405             } 
    406  
    407             delete [] o; 
    408             delete [] cp; 
    409         } 
    410         else if(strcmp(buffer, "query_component_type") == 0) { 
    411             SendComponentType(); 
    412         } 
    413         else if(strcmp(buffer, "connect_sml") == 0) { 
    414             /* This command implies that we are disconnecting from the shell and 
    415              * connecting to a SML component. */ 
    416             char serverName[256]; 
    417             char serverPort[256]; 
    418             // TODO is this going to end up being too slow? 
    419             memset(serverName, 0, 256); 
    420             memset(serverPort, 0, 256); 
    421  
    422             ReadMessage(commandSocketFD, serverName); 
    423             ReadMessage(commandSocketFD, serverPort); 
    424  
    425             /* Only continue if we are currently connected to a shell. */ 
    426             if(!SML_present) { 
    427                 DeregisterComponent(); 
    428  
    429                 shutdown(commandSocketFD, 2); 
    430                 close(commandSocketFD); 
    431  
    432                 ConnectToRemoteComponent(serverName, serverPort, true); 
    433             } 
    434         } 
    435         else if(strcmp(buffer, "disconnect_sml") == 0) { 
    436             /* This command implies that we are disconnecting from the SML and 
    437              * connecting to a shell component. */ 
    438             char serverName[256]; 
    439             char serverPort[256]; 
    440             // TODO is this going to end up being too slow? 
    441             memset(serverName, 0, 256); 
    442             memset(serverPort, 0, 256); 
    443  
    444             ReadMessage(commandSocketFD, serverName); 
    445             ReadMessage(commandSocketFD, serverPort); 
    446  
    447             /* We only want to do this if we are actually connected to an SML 
    448              * currently. */ 
    449             if(SML_present) { 
    450                 DeregisterServices(); 
    451  
    452                 shutdown(commandSocketFD, 2); 
    453                 close(commandSocketFD); 
    454  
    455                 ConnectToRemoteComponent(serverName, serverPort, false); 
    456             } 
    457         } 
    458         else if(strcmp(buffer, "reset_engine_cognitive") == 0) { 
    459             Reset(); 
    460         } 
    461         else if(strcmp(buffer, "shutdown_engine_cognitive") == 0) { 
    462             Shutdown(); 
    463         } 
    464     } 
    465 } 
    466  
    467  
    468 void  
    469 CognitiveEngine::Shutdown() 
    470 { 
    471     if(SML_present) { 
    472         //DeregisterServices(); 
    473         DeregisterComponent(); 
    474     }  
    475     else { 
    476         DeregisterComponent(); 
    477     } 
    478     // TODO should something else be happening here? 
     450DSA_CE::ReceiveFeedback(Observable *observables, Parameter *parameters, \ 
     451    std::string service) 
     452{ 
     453    LOG("Cognitive Engine:: Receiving feedback.\n"); 
    479454} 
    480455 
    481456 
    482457void 
    483 CognitiveEngine::Reset() 
    484 { 
    485     LOG("Resetting Cognitive Engine.\n"); 
    486  
    487     if(SML_present) { 
    488         DeregisterServices(); 
    489         DeregisterComponent(); 
    490     }  
    491     else { 
    492         DeregisterComponent(); 
    493     } 
    494 } 
    495  
    496  
    497 void 
    498 CognitiveEngine::RegisterComponent() 
    499 { 
    500     char buffer[256]; 
    501     SendMessage(commandSocketFD, "register_engine_cognitive"); 
    502     LOG("Cognitive Engine:: Registration message sent to shell.\n"); 
    503  
    504     memset(buffer, 0, 256); 
    505     ReadMessage(commandSocketFD, buffer); 
    506 } 
    507  
    508 void  
    509 CognitiveEngine::DeregisterComponent() 
    510 { 
    511     SendMessage(commandSocketFD, "deregister_engine_cognitive"); 
    512     LOG("Cognitive Engine:: Deregistration message sent.\n"); 
    513  
    514     shutdown(commandSocketFD, 2); 
    515     close(commandSocketFD); 
    516     commandSocketFD = -1; 
    517     LOG("Cognitive Engine:: Shell socket closed.\n"); 
    518 } 
    519  
    520  
    521 void  
    522 CognitiveEngine::RegisterServices() 
    523 { 
    524     LOG("Cognitive Engine:: Registering services.\n"); 
    525  
    526     SendMessage(commandSocketFD, "register_service"); 
    527     SendMessage(commandSocketFD, "test_srv"); 
    528  
    529     SendMessage(commandSocketFD, "register_service"); 
    530     SendMessage(commandSocketFD, "test_srv1"); 
    531  
    532     SendMessage(commandSocketFD, "register_service"); 
    533     SendMessage(commandSocketFD, "test_srv2"); 
    534  
    535     SendMessage(commandSocketFD, "register_service"); 
    536     SendMessage(commandSocketFD, "test_srv3"); 
    537  
    538 } 
    539  
    540 //Combined with deregister component since those two things must happen togeather 
    541 void  
    542 CognitiveEngine::DeregisterServices() 
    543 { 
    544     LOG("Cognitive Engine:: Deregistering services.\n"); 
    545  
    546     SendMessage(commandSocketFD, "deregister_service"); 
    547     SendMessage(commandSocketFD, "test_srv"); 
    548  
    549     SendMessage(commandSocketFD, "deregister_service"); 
    550     SendMessage(commandSocketFD, "test_srv1"); 
    551  
    552     SendMessage(commandSocketFD, "deregister_service"); 
    553     SendMessage(commandSocketFD, "test_srv2"); 
    554  
    555     SendMessage(commandSocketFD, "deregister_service"); 
    556     SendMessage(commandSocketFD, "test_srv3"); 
    557  
    558 } 
    559  
    560 void  
    561 CognitiveEngine::ReceiveRadioConfiguration() 
    562 { 
    563     LOG("Cognitive Engine:: Receiving Radio Configuration.\n"); 
    564      
    565     char buffer[256]; 
    566   
    567     /* Receive Set of Utilities */ 
    568     memset(buffer, 0, 256); 
    569     ReadMessage(commandSocketFD, buffer); 
    570     radioInfo->numUtilities = atoi(buffer); 
    571  
    572     for(size_t i = 0; i < radioInfo->numUtilities; i++) { 
    573         memset(buffer, 0, 256); 
    574         ReadMessage(commandSocketFD, buffer); 
    575         uList[i].name = std::string(buffer); 
    576     
    577         memset(buffer, 0, 256); 
    578         ReadMessage(commandSocketFD, buffer); 
    579         uList[i].units = std::string(buffer); 
    580  
    581         memset(buffer, 0, 256); 
    582         ReadMessage(commandSocketFD, buffer); 
    583         uList[i].goal = std::string(buffer); 
    584      
    585         memset(buffer, 0, 256); 
    586         ReadMessage(commandSocketFD, buffer); 
    587         uList[i].target = atof(buffer); 
    588     } 
    589  
    590     /* Receive Set of Parameters */ 
    591     memset(buffer, 0, 256); 
    592     ReadMessage(commandSocketFD, buffer); 
    593     radioInfo->numParameters = atoi(buffer); 
    594      
    595     for(size_t i = 0; i < radioInfo->numParameters; i++) { 
    596         memset(buffer, 0, 256); 
    597         ReadMessage(commandSocketFD, buffer); 
    598         pList[i].name = std::string(buffer); 
    599      
    600         memset(buffer, 0, 256); 
    601         ReadMessage(commandSocketFD, buffer); 
    602         pList[i].units = std::string(buffer); 
    603  
    604         memset(buffer, 0, 256); 
    605         ReadMessage(commandSocketFD, buffer); 
    606         pList[i].min = atof(buffer); 
    607      
    608         memset(buffer, 0, 256); 
    609         ReadMessage(commandSocketFD, buffer); 
    610         pList[i].max = atof(buffer); 
    611      
    612         memset(buffer, 0, 256); 
    613         ReadMessage(commandSocketFD, buffer); 
    614         pList[i].step = atof(buffer); 
    615      
    616         memset(buffer, 0, 256); 
    617         ReadMessage(commandSocketFD,buffer); 
    618         pList[i].numAffects = atoi(buffer); 
    619      
    620         for(size_t j = 0; j < pList[i].numAffects; j++) { 
    621             memset(buffer, 0, 256); 
    622             ReadMessage(commandSocketFD,buffer); 
    623             // TODO for + if{break} = while? 
    624             for(size_t k = 0; k < radioInfo->numUtilities; k++) { 
    625                 if(uList[k].name == std::string(buffer)) {     
    626                     pList[i].affection_list[j].u = &uList[k];    
    627                     break; 
    628                 } 
    629             } 
    630  
    631             memset(buffer, 0, 256); 
    632             ReadMessage(commandSocketFD, buffer); 
    633             pList[i].affection_list[j].relation = std::string(buffer);    
    634         } 
    635     }    
    636  
    637     /* Receive Set of Observables */ 
    638     memset(buffer, 0, 256); 
    639     ReadMessage(commandSocketFD, buffer); 
    640     radioInfo->numObservables = atoi(buffer); 
    641      
    642     for(size_t i = 0; i < radioInfo->numObservables; i++) { 
    643         memset(buffer, 0, 256); 
    644         ReadMessage(commandSocketFD, buffer); 
    645         oList[i].name = std::string(buffer); 
    646      
    647         memset(buffer, 0, 256); 
    648         ReadMessage(commandSocketFD, buffer); 
    649         oList[i].numAffects = atoi(buffer); 
    650      
    651         for(size_t j = 0; j < oList[i].numAffects; j++) { 
    652             memset(buffer, 0, 256); 
    653             ReadMessage(commandSocketFD, buffer); 
    654             // TODO for + if{break} = while? 
    655             for(size_t k = 0; k < radioInfo->numUtilities; k++) { 
    656                 if(uList[k].name == std::string(buffer)){     
    657                     oList[i].affection_list[j].u = &uList[k];    
    658                     break; 
    659                 } 
    660             } 
    661   
    662             memset(buffer, 0, 256); 
    663             ReadMessage(commandSocketFD, buffer); 
    664             oList[i].affection_list[j].relation = std::string(buffer);    
    665         } 
    666     } 
    667  
    668     SendMessage(commandSocketFD, "receive_config_ack"); 
    669  
    670     BuildCognitiveEngine(); 
    671 } 
    672  
    673 void  
    674 CognitiveEngine::ReceiveExperience() 
    675 { 
    676     LOG("Cognitive Engine:: Receiving Experience Report.\n"); 
    677     char buffer[256]; 
    678     uint32_t numberExp; 
    679      
    680     /* Receive number of experience entries */ 
    681     memset(buffer, 0, 256); 
    682     ReadMessage(commandSocketFD, buffer); 
    683     numberExp = atoi(buffer); 
    684  
    685     LOG("Cognitive Engine:: Waiting for %i number of entries.\n", numberExp); 
    686   
    687     SendMessage(commandSocketFD, "receive_exp_ack"); 
    688 } 
    689  
    690  
    691 /* The core of the CE is this function */ 
    692  
    693 Parameter*  
    694 CognitiveEngine::GetSolution(Observable *observables, Parameter *currentParameters) 
    695 { 
    696     LOG("Cognitive Engine:: Generating solution.\n"); 
    697  
    698     /* Put together the CBR search array */ 
    699  
    700     uint32_t channel = 0; 
    701     string searchNames[1]; 
    702     string sumSearchName; 
    703     float searchVals[1]; 
    704     float utilArray[(int)pList[0].max]; 
    705     int searchOps[1]; 
    706     uint32_t numberColumns = radioInfo->numUtilities + radioInfo->numParameters + \ 
    707                              radioInfo->numObservables + 1; 
    708  
    709     float returnValues[numberColumns]; 
    710     float sumRetVals[numberColumns]; 
    711     
    712     // Total sum of utilities in sumRetVals[0] 
    713  
    714     string channel_name = "channel"; 
    715     string utility_name = "utility"; 
    716  
    717     for(int32_t i = 0 ; i < pList[0].max ; i++ ) { 
    718         searchNames[0] = pList[0].name; 
    719         searchOps[0] = 0; 
    720         searchVals[0] = i+1;  
    721      
    722         uint32_t rc = myCBR->Search(searchNames, searchOps, searchVals, 
    723             1, returnValues); 
    724  
    725         if(rc == 31337) { 
    726                 // No entry - must add 
    727                  
    728                 string rowNames[numberColumns]; 
    729                 size_t rowIndex = 0; 
    730                 for(size_t j = 0; j < radioInfo->numUtilities; j++) { 
    731                         rowNames[rowIndex] = uList[j].name; 
    732                         rowIndex++; 
    733                 } 
    734                 for(size_t j = 0; j < radioInfo->numParameters; j++) { 
    735                         rowNames[rowIndex] = pList[j].name; 
    736                         if(pList[j].name == "channel") 
    737                                 returnValues[rowIndex] = i+1; 
    738                         rowIndex++; 
    739                 } 
    740                 for(size_t j = 0; j < radioInfo->numObservables; j++) { 
    741                         rowNames[rowIndex] = oList[j].name; 
    742                         rowIndex++; 
    743                 } 
    744     
    745                 rowNames[rowIndex] = utility_name; 
    746                 returnValues[rowIndex] = 500; 
    747  
    748                 /* Add the new optimized set to the CBR database */ 
    749  
    750                 myCBR->AddRow(rowNames, returnValues, numberColumns); 
    751         } 
    752  
    753         utilArray[i] = returnValues[UTILITY];  
    754     } 
    755  
    756     printf("Current Channel Utility Scores\n"); 
    757     printf("1: %f\t7: %f\t8: %f\t14: %f\n",utilArray[0],utilArray[1],utilArray[2],utilArray[3]);     
    758     // Get sum of all the channel utilities. 
    759     sumSearchName = utility_name; 
    760     uint32_t rc = myCBR->SearchSum(sumSearchName, sumRetVals); 
    761  
    762     // Psuedo random channel selection based upon utility. 
    763     int k = rand() % (int)sumRetVals[0]; 
    764     int cdf_total(0); 
    765  
    766     for ( int i = 0; i < pList[0].max; i++ ) { 
    767         cdf_total += utilArray[i]; 
    768         if(k < cdf_total) { 
    769                 channel = i + 1; 
    770                 break; 
    771         } 
    772     } 
    773          
    774     searchNames[0] = pList[0].name; 
    775     searchOps[0] = 0; 
    776     searchVals[0] = channel;  
    777    
    778     rc = myCBR->Search(searchNames, searchOps, searchVals, 
    779         1, returnValues); 
    780  
    781  
    782     //returnValues[CHANNEL] = rand() % (int)pList[0].max + (int)pList[0].min;  
    783     returnValues[CHANNEL] = channel; 
    784  
    785     printf("Cognitive Engine:: ..---===***### Channel %i has been selected ###***===---..\n",channel);  
    786     /* Package up the new set of parameters in order to add 
    787        the new entry into the CBR database.  */ 
    788  
    789     size_t returnValueIndex = 0; 
    790     for(size_t i = 0; i < radioInfo->numUtilities; i++) { 
    791         uList[i].value = returnValues[returnValueIndex]; 
    792         returnValueIndex++; 
    793     } 
    794     for(size_t i = 0; i < radioInfo->numParameters; i++) { 
    795         pList[i].value = returnValues[returnValueIndex]; 
    796         returnValueIndex++; 
    797     } 
    798     for(size_t i = 0; i < radioInfo->numObservables; i++) { 
    799         oList[i].value = returnValues[returnValueIndex]; 
    800         returnValueIndex++; 
    801     } 
    802     //returnValues[returnValueIndex] = 0; 
    803  
    804     string allNames[numberColumns]; 
    805     size_t allNameIndex = 0; 
    806     for(size_t i = 0; i < radioInfo->numUtilities; i++) { 
    807         allNames[allNameIndex] = uList[i].name; 
    808         returnValues[allNameIndex] = uList[i].target; 
    809         allNameIndex++; 
    810     } 
    811     for(size_t i = 0; i < radioInfo->numParameters; i++) { 
    812         allNames[allNameIndex] = pList[i].name; 
    813         allNameIndex++; 
    814     } 
    815     for(size_t i = 0; i < radioInfo->numObservables; i++) { 
    816         allNames[allNameIndex] = oList[i].name; 
    817     //    returnValues[allNameIndex] = 0; 
    818         allNameIndex++; 
    819     } 
    820     
    821     allNames[allNameIndex] = utility_name; 
    822  
    823     /* Add the new optimized set to the CBR database */ 
    824     //myCBR->AddRow(allNames, returnValues, returnValueIndex+1); 
    825  
    826  
    827     /* Return the set of new parameter values.  */ 
    828     return pList; 
    829 } 
    830  
    831  
    832 Parameter*  
    833 CognitiveEngine::GetSolution(Observable *observables, \ 
    834         Parameter *currentParameters, std::string service) 
    835 { 
    836     LOG("Cognitive Engine:: Generating solution for %s service.\n", service.c_str()); 
    837  
    838     return pList; 
    839 } 
    840  
    841  
    842 void  
    843 CognitiveEngine::ReceiveFeedback(Observable *observables, Parameter *parameters, \ 
    844     std::string service) 
    845 { 
    846     LOG("Cognitive Engine:: Receiving feedback.\n"); 
    847 } 
    848  
    849  
    850 void 
    851 CognitiveEngine::BuildCognitiveEngine() 
     458DSA_CE::BuildCognitiveEngine() 
    852459{ 
    853460    string filename = "ex1"; 
     
    886493} 
    887494 
     495 
     496void  
     497DSA_CE::PerformUpdatePerformance() 
     498{ 
     499    /* Receive Set of current Parameters */ 
     500    char buffer[256]; 
     501    memset(buffer, 0, 256); 
     502    ReadMessage(commandSocketFD, buffer); 
     503    uint32_t numParameters = atoi(buffer); 
     504 
     505    Parameter *p = new Parameter[numParameters]; 
     506 
     507    for(size_t i = 0; i < numParameters; i++) { 
     508        memset(buffer, 0, 256); 
     509        ReadMessage(commandSocketFD, buffer); 
     510        p[i].name = std::string(buffer); 
     511 
     512        memset(buffer, 0, 256); 
     513        ReadMessage(commandSocketFD, buffer); 
     514        p[i].value = atof(buffer); 
     515    }  
     516 
     517    /* Receive Set of Observables */ 
     518    memset(buffer, 0, 256); 
     519    ReadMessage(commandSocketFD, buffer); 
     520    uint32_t numObservables = atoi(buffer); 
     521 
     522    Observable *o = new Observable[numObservables]; 
     523 
     524    for(size_t i = 0; i < numObservables; i++) { 
     525        memset(buffer, 0, 256); 
     526        ReadMessage(commandSocketFD, buffer); 
     527        o[i].name = std::string(buffer); 
     528 
     529        memset(buffer, 0, 256); 
     530        ReadMessage(commandSocketFD, buffer); 
     531        o[i].value = atof(buffer); 
     532    }   
     533 
     534    ReceiveFeedback(o,p); 
     535 
     536    delete [] o; 
     537    delete [] p; 
     538} 
     539 
     540 
     541void 
     542DSA_CE::PerformRequestOptimizationService() 
     543{ 
     544    // THIS IS CURRENTLY IN DEMO MODE             
     545 
     546 
     547    /* Receive Set of Observables */ 
     548    LOG("\nCognitive Engine:: Receiving service name\n"); 
     549 
     550    char buffer[256]; 
     551    memset(buffer, 0, 256); 
     552    ReadMessage(commandSocketFD,buffer); 
     553    LOG("\nCognitive Engine:: Got service name, %s\n", buffer); 
     554 
     555    /* Receive Set of Observables */ 
     556    LOG("\nCognitive Engine:: Receiving Observable Parameters\n"); 
     557 
     558    memset(buffer, 0, 256); 
     559    ReadMessage(commandSocketFD,buffer); 
     560    uint32_t numObservables = atoi(buffer); 
     561 
     562    Observable *o = new Observable[numObservables]; 
     563 
     564    for(size_t i = 0; i < numObservables; i++) { 
     565        memset(buffer, 0, 256); 
     566        ReadMessage(commandSocketFD, buffer); 
     567        o[i].name = std::string(buffer); 
     568 
     569        memset(buffer, 0, 256); 
     570        ReadMessage(commandSocketFD, buffer); 
     571        o[i].value = atof(buffer); 
     572    }   
     573 
     574    /* Receive Set of current Parameters */ 
     575    LOG("Cognitive Engine:: Receiving Current Transmission Parameters\n"); 
     576 
     577    memset(buffer, 0, 256); 
     578    ReadMessage(commandSocketFD, buffer); 
     579    uint32_t numCurrentParameters = atoi(buffer); 
     580 
     581    Parameter *cp = new Parameter[numCurrentParameters]; 
     582 
     583    for(size_t i = 0; i < numCurrentParameters; i++) { 
     584        memset(buffer, 0, 256); 
     585        ReadMessage(commandSocketFD, buffer); 
     586        cp[i].name = std::string(buffer); 
     587 
     588        memset(buffer, 0, 256); 
     589        ReadMessage(commandSocketFD, buffer); 
     590        cp[i].value = atof(buffer); 
     591    }   
     592    LOG("Cognitive Engine:: Processing parameters....\n"); 
     593 
     594    // TODO need to actually do something with the observables here 
     595    
     596    LOG("Cognitive Engine:: Sending Optimal Parameters to Application.\n"); 
     597    char numParametersChar[10]; 
     598    sprintf(numParametersChar, "%i", radioInfo->numParameters); 
     599    SendMessage(commandSocketFD, numParametersChar); 
     600    for(size_t i = 0; i < radioInfo->numParameters; i++) { 
     601        SendMessage(commandSocketFD, "test"); 
     602        SendMessage(commandSocketFD, "00"); 
     603    } 
     604 
     605    delete [] o; 
     606    delete [] cp; 
     607} 
     608 
     609 
     610void 
     611DSA_CE::PerformRequestOptimization() 
     612{ 
     613        /* Receive Set of Observables */ 
     614        LOG("\nCognitive Engine:: Receiving Observable Parameters\n"); 
     615 
     616    char buffer[256]; 
     617        memset(buffer, 0, 256); 
     618        ReadMessage(commandSocketFD,buffer); 
     619        uint32_t numObservables = atoi(buffer); 
     620 
     621        Observable *o = new Observable[numObservables]; 
     622 
     623        for(size_t i = 0; i < numObservables; i++) { 
     624                memset(buffer, 0, 256); 
     625                ReadMessage(commandSocketFD, buffer); 
     626                o[i].name = std::string(buffer); 
     627 
     628                memset(buffer, 0, 256); 
     629                ReadMessage(commandSocketFD, buffer); 
     630                o[i].value = atof(buffer); 
     631        }   
     632 
     633        /* Receive Set of current Parameters */ 
     634        LOG("Cognitive Engine:: Receiving Current Transmission Parameters\n"); 
     635 
     636        memset(buffer, 0, 256); 
     637        ReadMessage(commandSocketFD, buffer); 
     638        uint32_t numCurrentParameters = atoi(buffer); 
     639 
     640        Parameter *cp = new Parameter[numCurrentParameters]; 
     641 
     642        for(size_t i = 0; i < numCurrentParameters; i++) { 
     643                memset(buffer, 0, 256); 
     644                ReadMessage(commandSocketFD, buffer); 
     645                cp[i].name = std::string(buffer); 
     646 
     647                memset(buffer, 0, 256); 
     648                ReadMessage(commandSocketFD, buffer); 
     649                cp[i].value = atof(buffer); 
     650        }   
     651        LOG("Cognitive Engine:: Processing parameters....\n"); 
     652 
     653        Parameter *solutionSet; 
     654         
     655        solutionSet = GetSolution(o,cp); 
     656 
     657        // TODO need to actually do something with the observables here 
     658    
     659        LOG("Cognitive Engine:: Sending Optimal Parameters to Application.\n"); 
     660        char numParametersChar[10]; 
     661        char solutionValue[50]; 
     662        sprintf(numParametersChar, "%i", radioInfo->numParameters); 
     663        SendMessage(commandSocketFD, numParametersChar); 
     664        for(size_t i = 0; i < radioInfo->numParameters; i++) { 
     665                SendMessage(commandSocketFD, solutionSet[i].name.c_str()); 
     666                memset(solutionValue, 0, 50); 
     667                sprintf(solutionValue, "%f", solutionSet[i].value); 
     668                SendMessage(commandSocketFD, solutionValue); 
     669        } 
     670 
     671        delete [] o; 
     672        delete [] cp; 
     673} 
     674 
     675 
     676void 
     677DSA_CE::PerformQueryComponentType() 
     678{ 
     679        SendComponentType(); 
     680} 
     681 
     682 
     683void 
     684DSA_CE::PerformConnectSML() 
     685{ 
     686        /* This command implies that we are disconnecting from the shell and 
     687         * connecting to a SML component. */ 
     688        char serverName[256]; 
     689        char serverPort[256]; 
     690        // TODO is this going to end up being too slow? 
     691        memset(serverName, 0, 256); 
     692        memset(serverPort, 0, 256); 
     693 
     694        ReadMessage(commandSocketFD, serverName); 
     695        ReadMessage(commandSocketFD, serverPort); 
     696 
     697        /* Only continue if we are currently connected to a shell. */ 
     698        if(!SML_present) { 
     699                DeregisterComponent(); 
     700 
     701                shutdown(commandSocketFD, 2); 
     702                close(commandSocketFD); 
     703 
     704                ConnectToRemoteComponent(serverName, serverPort, true); 
     705        } 
     706} 
     707 
     708 
     709void 
     710DSA_CE::PerformDisconnectSML() 
     711{ 
     712        /* This command implies that we are disconnecting from the SML and 
     713         * connecting to a shell component. */ 
     714        char serverName[256]; 
     715        char serverPort[256]; 
     716        // TODO is this going to end up being too slow? 
     717        memset(serverName, 0, 256); 
     718        memset(serverPort, 0, 256); 
     719 
     720        ReadMessage(commandSocketFD, serverName); 
     721        ReadMessage(commandSocketFD, serverPort); 
     722 
     723        /* We only want to do this if we are actually connected to an SML 
     724         * currently. */ 
     725        if(SML_present) { 
     726                DeregisterServices(); 
     727 
     728                shutdown(commandSocketFD, 2); 
     729                close(commandSocketFD); 
     730 
     731                ConnectToRemoteComponent(serverName, serverPort, false); 
     732        } 
     733} 
     734 
     735 
     736void 
     737DSA_CE::PerformResetEngineCognitive() 
     738{ 
     739        Reset(); 
     740} 
     741 
     742 
     743void 
     744DSA_CE::PerformShutdownEngineCognitive() 
     745{ 
     746        Shutdown(); 
     747} 
     748  
  • vtcross/branches/engineTreeFix/src/cognitive_engines/DSA_CE/DSA_Demo.cpp

    r465 r526  
    4141       ERROR(1, "Usage: %s hostname port\n", argv[0]); 
    4242     
    43     CognitiveEngine cognitiveEngine(argv[1], argv[2], false); 
     43    CognitiveEngine cognitiveEngine(argv[1], argv[2], 10, false); 
    4444 
    4545    LOG("Waiting for signal...\n"); 
  • vtcross/branches/engineTreeFix/src/cognitive_engines/DSA_CE/Makefile.am

    r469 r526  
    2222 
    2323DSA_Demo_SOURCES = DSA_CognitiveEngine.cpp DSA_Demo.cpp 
    24 DSA_Demo_LDADD = -lsqlite3 $(CROSS_SOCKETCOMM_LA)  
     24DSA_Demo_DEPENDENCIES = ../libce.a 
     25DSA_Demo_LDADD = -lsqlite3 ../libce.a $(CROSS_SOCKETCOMM_LA)  
    2526 
  • vtcross/branches/engineTreeFix/src/cognitive_engines/Makefile.am

    r525 r526  
    2222libce_a_SOURCES = CognitiveEngine.cpp 
    2323 
    24 SUBDIRS = . CBR_CE #DSA_CE OSSIE_DEMO_CE 
     24SUBDIRS = . CBR_CE DSA_CE #OSSIE_DEMO_CE