コード例 #1
0
ファイル: scat.cpp プロジェクト: filorom/simppl
int main()
{
   Dispatcher disp;

   Stub<Broker> broker("broker", "unix:the_broker");
   disp.addClient(broker);
   
   if (broker.connect())
   {
      std::vector<ServiceInfo> services;
      if (disp.waitForResponse(broker.listServices(), services))
      {
         std::cout << "Available services: " << std::endl;
         std::for_each(services.begin(), services.end(), printServiceInfo);
         std::cout << std::endl;
         
         std::vector<std::string> waiters;
         if (disp.waitForResponse(broker.listWaiters(), waiters))
         {
            std::cout << "Waiters waiting for: " << std::endl;
            std::for_each(waiters.begin(), waiters.end(), printWaiterInfo);
            std::cout << std::endl;
            
            return EXIT_SUCCESS;
         }
      }
   }
   
   return EXIT_FAILURE;
}
コード例 #2
0
ファイル: KnapMain.cpp プロジェクト: aykutbulut/CHiPPS-ALPS
int main(int argc, char* argv[])
{

    try{
        // 1: Declare application parameter set, model and knowledge broker
        KnapModel model;

#ifdef COIN_HAS_MPI
        AlpsKnowledgeBrokerMPI broker(argc, argv, model);
#else
        AlpsKnowledgeBrokerSerial broker(argc, argv, model);
#endif

        // 2: Register model, solution, and tree node
        broker.registerClass(AlpsKnowledgeTypeModel, new KnapModel());
        broker.registerClass(AlpsKnowledgeTypeSolution,
                             new KnapSolution(&model));
        broker.registerClass(AlpsKnowledgeTypeNode, new KnapTreeNode(&model));

        // 4: Solve the problem
        broker.search(&model);

        // 5: Report the best solution found and its ojective value
        broker.printBestSolution();

#ifdef NF_DEBUG
        const int numSol = broker.getNumKnowledges(AlpsKnowledgeTypeSolution);
        broker.messageHandler()->message(ALPS_SOLUTION_COUNT,
                                         broker.messages())
            << broker.getProcRank() << numSol << CoinMessageEol;
#endif

    }
    catch(CoinError& er) {
        std::cerr << "ERROR:" << er.message() << std::endl
                  << " from function " << er.methodName() << std::endl
                  << " from class " << er.className() << std::endl;
    }
    catch(...) {
        std::cerr << "Something went wrong!" << std::endl;
    }

    return 0;
}
コード例 #3
0
ファイル: BlisMain.cpp プロジェクト: tkralphs/CHiPPS-BLIS
int main(int argc, char *argv[]) 
{

	try{
		// Set up lp solver
		OsiClpSolverInterface lpSolver;
		lpSolver.getModelPtr()->setDualBound(1.0e10);
		lpSolver.messageHandler()->setLogLevel(0);
	
		// Create BLIS model 
		BlisModel model;
		model.setSolver(&lpSolver);
	
#ifdef  COIN_HAS_MPI
		AlpsKnowledgeBrokerMPI broker(argc, argv, model);
#else
		AlpsKnowledgeBrokerSerial broker(argc, argv, model); 
#endif

		// Search for best solution
		broker.search(&model);
	
		// Report the best solution found and its ojective value
		broker.printBestSolution();
 }	

	catch(CoinError& er) {
 	std::cerr << "\nBLIS ERROR: \"" << er.message() 
		  << "\""<< std::endl
		  << "             from function \"" << er.methodName()
		  << "\""<< std::endl
		  << "             from class \"" << er.className()
		  << "\"" << std::endl;
	}
  catch(...) {
		std::cerr << "Something went wrong!" << std::endl;
  }
    
    
  return 0;
}
コード例 #4
0
ファイル: broker.cpp プロジェクト: 850361813/qpid-proton
int main(int argc, char **argv) {
    // Command line options
    std::string address("0.0.0.0");
    example::options opts(argc, argv);
    opts.add_value(address, 'a', "address", "listen on URL", "URL");
    try {
        opts.parse();
        broker(address).run();
        return 0;
    } catch (const example::bad_option& e) {
        std::cout << opts << std::endl << e.what() << std::endl;
    } catch (const std::exception& e) {
        std::cerr << "broker shutdown: " << e.what() << std::endl;
    }
    return 1;
}
コード例 #5
0
ファイル: broker.cpp プロジェクト: Karm/qpid-proton
int main(int argc, char **argv) {
    // Command line options
    proton::url url("0.0.0.0");
    options opts(argc, argv);
    opts.add_value(url, 'a', "address", "listen on URL", "URL");
    try {
        opts.parse();
        broker broker(url);
        proton::container(broker).run();
        return 0;
    } catch (const bad_option& e) {
        std::cout << opts << std::endl << e.what() << std::endl;
    } catch (const std::exception& e) {
        std::cerr << e.what() << std::endl;
    }
    return 1;
}
コード例 #6
0
ファイル: EnchantChecker.cpp プロジェクト: cburschka/lyx
enchant::Dict * EnchantChecker::Private::addSpeller(string const & lang)
{
	Speller m;

	try {
		LYXERR(Debug::FILES, "request enchant speller for language " << lang);
		m.speller = broker().request_dict(lang);
	}
	catch (enchant::Exception & e) {
		// FIXME error handling?
		const char * what = e.what();
		LYXERR(Debug::FILES, "cannot add enchant speller: " <<
			   ((what && *what) ? what : "unspecified enchant exception in request_dict()"));
		m.speller = 0;
	}
	spellers_[lang] = m;
	return m.speller;
}
コード例 #7
0
ファイル: main.cpp プロジェクト: christianparpart/stompede
int main(int argc, const char* argv[])
{
	// TODO: args & signal handling

	ev::default_loop loop(0);
	stompede::stomp::Broker broker(loop);

	auto domain = broker.createDomain("default");
	broker.setDefaultDomain(domain);

	broker.setupWorkers(4);
	broker.setupListener("0.0.0.0", 61613);
	broker.start();

	loop.run();

	return 0;
}
コード例 #8
0
ファイル: rtdealer.cpp プロジェクト: Andy-hpliu/zguide
//  .split main task
//  While this example runs in a single process, that is just to make
//  it easier to start and stop the example. Each thread has its own
//  context and conceptually acts as a separate process.
int main() {
    zmq::context_t context(1);
    zmq::socket_t broker(context, ZMQ_ROUTER);

    broker.bind("tcp://*:5671");
    srandom((unsigned)time(NULL));

    const int NBR_WORKERS = 10;
    pthread_t workers[NBR_WORKERS];
    for (int worker_nbr = 0; worker_nbr < NBR_WORKERS; ++worker_nbr) {
        pthread_create(workers + worker_nbr, NULL, worker_task, (void *)(intptr_t)worker_nbr);
    }


    //  Run for five seconds and then tell workers to end
    int64_t end_time = s_clock() + 5000;
    int workers_fired = 0;
    while (1) {
        //  Next message gives us least recently used worker
        std::string identity = s_recv(broker);
        {
            s_recv(broker);     //  Envelope delimiter
            s_recv(broker);     //  Response from worker
        }

        s_sendmore(broker, identity);
        s_sendmore(broker, "");

        //  Encourage workers until it's time to fire them
        if (s_clock() < end_time)
            s_send(broker, "Work harder");
        else {
            s_send(broker, "Fired!");
            if (++workers_fired == NBR_WORKERS)
                break;
        }
    }

    for (int worker_nbr = 0; worker_nbr < NBR_WORKERS; ++worker_nbr) {
        pthread_join(workers[worker_nbr], NULL);
    }

    return 0;
}
コード例 #9
0
ファイル: EnchantChecker.cpp プロジェクト: cburschka/lyx
bool EnchantChecker::hasDictionary(Language const * lang) const
{
	if (!lang)
		return false;
	return broker().dict_exists(lang->code());
}
コード例 #10
0
int KnapTreeNode::process(bool isRoot, bool rampUp) {
  bool foundSolution = false;
  KnapNodeDesc* desc = dynamic_cast<KnapNodeDesc*>(desc_);
  const KnapModel* m = dynamic_cast<KnapModel*>(desc->model());

  //------------------------------------------------------
  // Here, we need to fill in the method for bounding.
  // Solve the lp relaxation.
  //------------------------------------------------------

  int cap = m->getCapacity() - desc->getUsedCapacity();
  int val = desc->getUsedValue();
  const KnapVarStatus* stati =
    dynamic_cast<KnapNodeDesc*>(desc_)->getVarStati();
  int i;
  const int n = m->getNumItems();
#if defined NF_DEBUG_MORE
  std::cout << "Num of items = " << n << std::endl;
#endif
  for (i = 0; i < n; ++i) {
    if (stati[i] == KnapVarFree) {
      cap -= m->getItem(i).first;
      val += m->getItem(i).second;
      if (cap <= 0)
        break;
    }
#if defined NF_DEBUG_MORE
    std::cout << m->getItem(i).second << " ";
#endif
  }
#if defined NF_DEBUG_MORE
  std::cout << std::endl;
#endif

  // get the best solution so far (for parallel, it is the incumbent)
  int bestval = 0;
  double valRelax = 0;

  // The quality of a solution is the negative of the objective value
  //  since Alps consideres sols with lower quality values better.
  bestval = -static_cast<int>(broker()->getIncumbentValue());

  if (cap < 0) {
    // The last item dosn't fit fully, but some portion of it has been put
    // in (otherwise we'd have stopped at the previous i)
    const int size = m->getItem(i).first;
    const int cost = m->getItem(i).second;
    val -= cost;
    cap += size;
    valRelax = val + cost*cap/double(size);

    if (valRelax <= bestval)
      setStatus(AlpsNodeStatusFathomed); // set the status to fathomed
    else {
      branchedOn_ = i;
      setStatus(AlpsNodeStatusPregnant);
    }
  }
  else {
    // The last item made it in fully, or no item free to make it fully,
    // find a feasible solution and fathom this node
    // save the solution if better than the best so far.
    valRelax = val;
    if (bestval < val) {                 // Find a better solution
      int* sol = new int[n];
      for (i = 0; i < n; ++i) {
        sol[i] = stati[i] == KnapVarFixedToOne ? 1 : 0;
      }
      cap = m->getCapacity() - desc->getUsedCapacity();
      for (i = 0; i < n; ++i) {
        if (stati[i] == KnapVarFree) {
          sol[i] = 1;
          cap -= m->getItem(i).first;
          if (cap == 0)
            break;
        }
      }
      foundSolution = true;
      KnapSolution* ksol =
        new KnapSolution(dynamic_cast<KnapModel*>(desc->model()), n,
                         sol, val);
      broker()->addKnowledge(AlpsKnowledgeTypeSolution, ksol,
                                         -val);
      broker()->messageHandler()->
        message(ALPS_S_SEARCH_SOL, broker()->messages())
        << (broker()->getProcRank())
        << valRelax << CoinMessageEol;

    }
    setStatus(AlpsNodeStatusFathomed);   // set the status to fathomed
  }

  quality_ = -valRelax;  // Set objective

  return foundSolution;
}
コード例 #11
0
ファイル: AbcMain.cpp プロジェクト: jiadongwang/CHiPPS
int main(int argc, char* argv[])
{

    try{
	// Declare application parameter, model and knowledge broker
        OsiClpSolverInterface solver1;
	AbcModel model(solver1);
	solver1.getModelPtr()->setDualBound(1.0e10);
	//solver1.messageHandler()->setLogLevel(0);

#ifdef COIN_HAS_MPI
	AlpsKnowledgeBrokerMPI broker(argc, argv, model);
#else
	AlpsKnowledgeBrokerSerial broker(argc, argv, model); 
#endif
	int AbcLogLevel = model.AbcPar()->entry(AbcParams::logLevel);
	model.messageHandler()->setLogLevel(AbcLogLevel);

#if 1   // TURN ON?OFF cut generators	
	// Set up some cut generators and defaults
	// Probing first as gets tight bounds on continuous
	CglProbing generator1;
	generator1.setUsingObjective(true);
	generator1.setMaxPass(3);
	generator1.setMaxProbe(100);
	generator1.setMaxLook(50);
	generator1.setRowCuts(3);

	CglGomory generator2;	  
	generator2.setLimit(300); // try larger limit

	CglKnapsackCover generator3;

	CglOddHole generator4;
	generator4.setMinimumViolation(0.005);
	generator4.setMinimumViolationPer(0.00002);
	generator4.setMaximumEntries(200); 	// try larger limit

	CglFlowCover generator5;
	
	// Add in generators
	//model.addCutGenerator(&generator1, -1, "Probing");
	//model.addCutGenerator(&generator2, -1, "Gomory");
	model.addCutGenerator(&generator3, -1, "Knapsack");
	model.addCutGenerator(&generator4, -1, "OddHole");
	//model.addCutGenerator(&generator5, -1, "FlowCover");


	// Use rounding heuristic
	AbcRounding heuristic1(model);
	model.addHeuristic(&heuristic1);
#endif

	// Register model, solution, and tree node
	broker.registerClass(AlpsKnowledgeTypeModel, new AbcModel);
	broker.registerClass(AlpsKnowledgeTypeSolution, new AbcSolution);
	broker.registerClass(AlpsKnowledgeTypeNode, new AbcTreeNode(&model));

	// Formulate the root node
	// NOTE: root will be deleted by ALPS 
	AlpsTreeNode* root = new AbcTreeNode(&model);

	// Search for solutions from give root.
	broker.rootSearch(root);
    }
    catch(CoinError& er) {
	std::cerr << "ERROR:" << er.message() << std::endl
		  << " from function " << er.methodName() << std::endl
		  << " from class " << er.className() << std::endl;
    }
    catch(...) {
	std::cerr << "Something went wrong!" << std::endl;
    }
    
    return 0;
}