예제 #1
0
				// Generate a random genotype
				void random() {

					// Randomize each chip
					for (size_t i = 0; i < _chips.size(); ++i) {
						_chips[i].random();
					}

					// Randomize interconnections (we need at least 2 chips)
					if (_chips.size() >= 2) {

#ifdef CONSTRAINT_PROJECTION_INTERCONNECTIONS
				for (size_t chip_number = 0; chip_number < _chips.size(); ++chip_number) {

					typename nn_t::graph_t graph_src = _chips[chip_number].get_graph();
					int neuron_id = -1;
					BGL_FORALL_VERTICES_T(vertex, graph_src, typename nn_t::graph_t)
					{
						neuron_id++;
						// If this is an input neuron, output neuron or inhib neuron, don't create interconnection from it
						if ((!(graph_src[vertex].get_in() == -1))
								|| (!(graph_src[vertex].get_out() == -1))
								|| (graph_src[vertex].inhib())) {
							continue;
						}
						for (size_t chip_number2 = 0; chip_number2 < _chips.size(); ++chip_number2) {
							// Interconnection is between 2 different chips
							if (chip_number == chip_number2) continue;
							// Random interconnection with another chip
							if (misc::rand<float>() < Params::dnn_mrf::interconn_other_chip_proba) {
								interconnection_t interconnection;
								interconnection.src_chip_id = chip_number;
								interconnection.src_neuron_id = neuron_id;//graph_src[vertex].get_id();
								interconnection.dest_chip_id = chip_number2;
								interconnection.dest_neuron_id = misc::rand<int>(chips(interconnection.dest_chip_id).get_nb_inputs(),
										chips(interconnection.dest_chip_id).get_nb_neurons());;
								weight_t weight;
								weight.random();
								interconnection.connection.set_weight(weight);
								_interconnections.push_back(interconnection);
							}
						}

					}
				}

#else
				// Randomize interconnections
				size_t initial_nb_interconnections = misc::rand<int>(Params::dnn_mrf::initial_min_nb_interconn, Params::dnn_mrf::initial_max_nb_interconn + 1);
				for (size_t interconnections_number = 0; interconnections_number < initial_nb_interconnections; ++interconnections_number) {
					_interconnections.push_back(random_interconnection_nodup());
				}
#endif
				//std::cout << "random->erase" << std::endl;
				//_interconnections.erase(_interconnections.begin());
				//std::cout << "oker" << std::endl;

				//_chips[0].write(std::cout);
				//std::cin.get();
			}
예제 #2
0
파일: pot.cpp 프로젝트: angeldv95/pokerspot
void Cpot::subtractChips(const CChips& c)
{ // This function subtracts chips from the pot evenly across all players
  int i = 0;
  CChips numChips = getChips();
  CChips chips(c);
  CChips oneChip(1, 0);

  while (chips > 0 && numChips >= chips)
  {
    for (i = 0; (chips > 0) && (i < 10); i++)
    {
      if (chips_[i] > 0)
      {
        chips_[i] -= oneChip;
        chips -= oneChip;
      }
    }
  }    
}