void CProblem::set_d_function(){ max_d = dist_linear(0); d.resize(n); for (unsigned int u=0; u<n; u++) { d[u].resize(n); for (unsigned int v=0; v<n; v++) { d[u][v] = dist_linear(distances[u][v]); } } }
miScalar distance(dist_measure distance_measure, miVector2d *v1, miVector2d *v2) { switch(distance_measure) { case DIST_LINEAR: return dist_linear(v1,v2); case DIST_LINEAR_SQUARED: return dist_linear_squared(v1,v2); case DIST_MANHATTAN: return dist_manhattan(v1,v2); // case DIST_MINKOWSKI: return 30; // actually, this should be based on the parameter p. This is for 2, since that is the same as linear/euclidean distance default: return -1; } }
void CProblem::set_d_function() { d.resize(n); for (unsigned int u = 0; u < n; u++) { d[u].resize(n); for (unsigned int v = 0; v < u; v++) { d[u][v] = dist_linear(distances[u][v]); d[v][u] = d[u][v]; if (d[u][v] <= max_distance && u != v) { /* save vertices for which additional constraints to be created*/ Info.numAddVar++; Info.ConstrIndex.push_back(u); Info.ConstrIndex.push_back(v); } } } Info.numVar += Info.numAddVar; std::cout << " numAddVar " << Info.numAddVar << "\n"; }