Пример #1
0
std::vector<std::vector<float>> solve(float x, float y, float z) {
  static bool init = false;
  static float px, py, pz;

  std::vector<std::vector<float>> ts{};
  mat lines;
  vec p_init(3);
  vec pf(3);

  if (!init) {
    init = true;
    solve_init();
    goto over_and_out;
  }

  p_init <<= px, py, pz;
  pf <<= x, y, z;

  lines = follow_line(p_init, pf, 5, R0, w, q, R0, p0);
  for (int i = 0; i < lines.size1(); i++) {
    std::vector<float> t;
    for (int j = 0; j < 5; j++)
      t.push_back(lines(i, j));
    ts.push_back(t);
  }

over_and_out:
  px = x;
  py = y;
  pz = z;
  return ts;
}
Пример #2
0
void TSPsolver::init_X_randomly(unsigned cities)
{
    double rand_initial_cond;
    srand (time(0));

    X.resize(offset_X + cities*cities);

    for (unsigned i = 0; i < offset_X; ++i)
    {
        X[i] = 0;
    }

    for (int i=0; i<150; ++i)
    {
        rand_initial_cond = 2.0 * (static_cast<double>(rand())/RAND_MAX-0.5) * 0.2;
    }

    for (unsigned i = offset_X; i < cities * cities + offset_X; ++i)
    {
        rand_initial_cond = (static_cast<double>(rand())/RAND_MAX);
        X[i] = rand_initial_cond;
    }

    solve_init(X);
}