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; }
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); }