Пример #1
0
linkedList* variableOrdering(graph *g,int choice){
     
     item *currItem;
     linkedList *orderedList;
     vertex *v;
     int i;
     
     breakCycles(g);
                   
     resetWeights(g); 
     computeWeights(g);
     genericSuccessorsOrdering(g, choice);
     orderByWeights(g->vertices);
     resetVisited(g); 
     orderedList= newLinkedList();
     
     currItem = (g-> vertices)->head;
     while (currItem!= NULL) {
           if ((currItem->vert)->visited == 0) visit(currItem->vert,orderedList);
           currItem = currItem->next;
     }
     
     return orderedList;
     
}
Пример #2
0
void FWSingle::FWOneStep()
{
  //create an ordered version of the ParentIDs to make the weight calculation faster
  vector<vector<long> > orderedPIDs=(PIDs);
  vector<vector<long> >::iterator it(orderedPIDs.begin());
  do
  {
    std::sort((*it).begin(),(*it).end());
    it++;
  }
  while(it<orderedPIDs.end());
  if (verbose>2)
    app_log()<<" Done Sorting IDs"<<endl;
  resetWeights();
  vector<vector<long> >::iterator stepIDIterator(IDs.begin());
  vector<vector<long> >::iterator stepPIDIterator(orderedPIDs.begin() + gensTransferred);
  vector<vector<int> >::iterator stepWeightsIterator(Weights.begin());
  //we start comparing the next generations ParentIDs with the current generations IDs
  int i=0;
  do
  {
    if (verbose>2)
      app_log()<<"  calculating weights for gen:"<<gensTransferred<<" step:"<<i<<"/"<<orderedPIDs.size()<<endl;
    //       if (verbose>2) app_log()<<"Nsamples ="<<(*stepWeightsIteratoetWeights).size()<<endl;
    vector<long>::iterator IDit( (*stepIDIterator).begin()     );
    vector<long>::iterator PIDit( (*stepPIDIterator).begin()   );
    vector<int>::iterator  Wit( (*stepWeightsIterator).begin() );
    if (verbose>2)
      app_log()<<"ID size:"<<(*stepIDIterator).size()<<" PID size:"<<(*stepPIDIterator).size()<<" Weight size:"<<(*stepWeightsIterator).size()<<endl;
    do
    {
      if ((*PIDit)==(*IDit))
      {
        (*Wit)++;
        PIDit++;
      }
      else
      {
        IDit++;
        Wit++;
        if (IDit==(*stepIDIterator).end())
        {
          IDit=(*stepIDIterator).begin();
          Wit=(*stepWeightsIterator).begin();
        }
      }
    }
    while(PIDit<(*stepPIDIterator).end());
    //       if (verbose>2) { printIDs((*stepIDIterator));printIDs((*stepPIDIterator));}
    //       if (verbose>2) printInts((*stepWeightsIterator));
    stepIDIterator++;
    stepPIDIterator++;
    stepWeightsIterator++;
    i++;
  }
  while(stepPIDIterator<orderedPIDs.end());
}
Пример #3
0
int main (int argc, char* argv[])
{
    if (argc == 1)
    {
        srand(time(NULL));

        struct neural_network *network = createNetwork(3, 3, 2);

        int loopCount = 0, count = 1, proceed = 0;
        double out00, out01, out10, out11;
        do
        {
            do
            {
                loopCount++;
                setInput(1,1, network);
                out11 = getOutput(network);
                learn(network, 0);
                setInput(0,0, network);
                out00 = getOutput(network);
                learn(network, 0);
                setInput(0,1,network);
                out01 = getOutput(network);
                learn(network, 1);
                setInput(1,0, network);
                out10 = getOutput(network);
                learn(network, 1);

                printf("0xor0: %f 0xor1: %f 1xor0: %f 1xor1: %f\n",out00, out01,
                        out10, out11);

            }while ((out00 > 0.05 || out01 < 0.95 || out10 < 0.95 ||
                        out11 > 0.05) && loopCount < 200000);
            proceed = loopCount == 200000;
            if(proceed)
            {
                printf("creating new network\n");
                resetWeights(network);
                printf("weights reset");
                count++;
                loopCount = 0;
            }
        }while(proceed);


        freeNetwork(network);
        printf("Network freed.\n");
        printf("Loop count : %i\n",(count - 1)*200000 + loopCount);
        printf("Everything went fine. Exiting...\n");
        _Exit(0);
    }

    else if (argc == 2)
    {
        IplImage *img = load(argv[1]);
        if(img != NULL)
        {
            const char* window_title = "Perfect Image";
            cvNamedWindow (window_title, CV_WINDOW_AUTOSIZE);
            cvShowImage (window_title, img);
            cvWaitKey(0);
            char path[] = "result.bmp";
            cvSaveImage(&path[0], img, NULL);
            cvDestroyAllWindows();
            cvReleaseImage(&img);
            printf("Everything went fine. Exiting...\n");
            return 0;
        }
        else
        {
            printf("Error loading image.\n");
            return -1;
        }
    }
    else
    {
        printf("Argument issue. Exiting...\n");
        return -1;
    }

}