void BSInterpolation::InitializeSpline(QMatrix4x4 matrix) { if (markers.length() == 1) return; if (markers.length() >= 4) degree = 3; if (markers.length() == 3) degree = 2; if (markers.length() == 2) degree = 1; //remove double int count = 0; for (int i = 0; i<markers.length()-1; i++) { if (markers[i]->point.x() == markers[i+1]->point.x() && markers[i]->point.y() == markers[i+1]->point.y() && markers[i]->point.z() == markers[i+1]->point.z()) { count++; } } if (count > 0) return; Clear(); CalculateParameters(); CalculateControlPoints(); InitializeBSpline(matrix); }
void CalculateParameters(const string& folder) { clock_t start, end; for(size_t i = 1; i <= 26; ++i) { start = clock(); string file = folder + std::to_string(i) + ".txt"; DayData data = ReadDay(file); end = clock(); std::cout << i << " reading: " << double(end - start) / CLOCKS_PER_SEC << std::endl; start = clock(); CalculateParameters(data); end = clock(); std::cout << i << " calculations: " << double(end - start) / CLOCKS_PER_SEC << std::endl; } Save("/tmp/query_url_parameters.txt", queryUrlParameters); Save("/tmp/user_url_parameters.txt", userUrlParameters); }
//------------------------------------------------------------------------------ Solver::SolverState Solver::AdvanceState() { switch (currentState) { case INITIALIZING: CompleteInitialization(); break; case NOMINAL: RunNominal(); break; case PERTURBING: RunPerturbation(); break; case ITERATING: RunIteration(); break; case CALCULATING: CalculateParameters(); break; case CHECKINGRUN: CheckCompletion(); break; case RUNEXTERNAL: RunExternal(); break; case FINISHED: RunComplete(); break; default: throw SolverException(wxT("Undefined Solver state")); }; ReportProgress(); return currentState; }
//------------------------------------------------------------------------------ Solver::SolverState SteepestDescent::AdvanceState() { switch (currentState) { case INITIALIZING: #ifdef SD_DEBUG_STATE_MACHINE MessageInterface::ShowMessage(wxT("Entered state machine; ") wxT("INITIALIZING\n")); #endif iterationsTaken = 0; WriteToTextFile(); // ReportProgress(); CompleteInitialization(); #ifdef SD_DEBUG_STATE_MACHINE MessageInterface::ShowMessage( wxT("SteepestDescent State Transitions from %d to %d\n"), INITIALIZING, currentState); #endif break; case NOMINAL: #ifdef SD_DEBUG_STATE_MACHINE MessageInterface::ShowMessage(wxT("Entered state machine; ") wxT("NOMINAL\n")); #endif // ReportProgress(); RunNominal(); // ReportProgress(); #ifdef SD_DEBUG_STATE_MACHINE MessageInterface::ShowMessage( wxT("SteepestDescent State Transitions from %d to %d\n"), NOMINAL, currentState); #endif // ReportProgress(); break; case PERTURBING: #ifdef SD_DEBUG_STATE_MACHINE MessageInterface::ShowMessage(wxT("Entered state machine; ") wxT("PERTURBING\n")); #endif RunPerturbation(); #ifdef SD_DEBUG_STATE_MACHINE MessageInterface::ShowMessage( wxT("SteepestDescent State Transitions from %d to %d\n"), PERTURBING, currentState); #endif // ReportProgress(); break; case Solver::CALCULATING: #ifdef SD_DEBUG_STATE_MACHINE MessageInterface::ShowMessage(wxT("Entered state machine; ") wxT("CALCULATING\n")); #endif // ReportProgress(); CalculateParameters(); #ifdef SD_DEBUG_STATE_MACHINE MessageInterface::ShowMessage( wxT("SteepestDescent State Transitions from %d to %d\n"), CALCULATING, currentState); #endif break; case CHECKINGRUN: #ifdef SD_DEBUG_STATE_MACHINE MessageInterface::ShowMessage(wxT("Entered state machine; ") wxT("CHECKINGRUN\n")); #endif CheckCompletion(); #ifdef SD_DEBUG_STATE_MACHINE MessageInterface::ShowMessage( wxT("SteepestDescent State Transitions from %d to %d\n"), CHECKINGRUN, currentState); #endif // ReportProgress(); break; case FINISHED: #ifdef SD_DEBUG_STATE_MACHINE MessageInterface::ShowMessage(wxT("Entered state machine; ") wxT("FINISHED\n")); #endif RunComplete(); #ifdef SD_DEBUG_STATE_MACHINE MessageInterface::ShowMessage( wxT("SteepestDescent State Transitions from %d to %d\n"), FINISHED, currentState); #endif // ReportProgress(); break; default: throw SolverException( wxT("Steepest Descent Solver \"") + instanceName + wxT("\" encountered an unexpected state.")); } return currentState; }
int CalculateData(exp_data &src_data, exp_data &dst_data, double &a1, double &b1, double &b2, signed char n0, vector<double> &mbx, unsigned char f) { vector<point> linear_data; vector<point_2> linear_data_2; signed char sign = n0 >= 0 ? 1 : -1; linear_data.clear(); dst_data.clear(); linear_data_2.clear(); int res = 0; if (f <= 19) res = LinearData(src_data, linear_data, n0, f); if (f == 20) res = LinearData(src_data, linear_data_2, n0, f); if (res != 0) return res; double a = 0; double b = 0; if (f == 19) { if (!Approximator::GetPolynom(linear_data, mbx, n0 + sign)) { f = 1; return -1; } } if (f <= 18) { a = Approximator::GetA(linear_data); b = Approximator::GetB(linear_data); } if (f == 20) { a = Approximator_2::GetA(linear_data_2); b = Approximator_2::GetB(linear_data_2); b2 = Approximator_2::GetB2(linear_data_2); } CalculateParameters(a, b, a1, b1, f); function deps[17] = {Func1,Func2,Func3,Func4,Func5,Func6,Func7,Func8, Func9,Func10,Func11,Func12,Func13,Func14,Func15,Func16,Func17}; for (iter index = src_data.begin();index != src_data.end();index++) { double x1 = 0; double y1 = 0; x1 = (*index).first; if (f <= 1) { y1 = deps[0](a1, b1, x1); } else { if (f < 18) { y1 = deps[f - 1](a1, b1, x1); } else { if (f == 18) { y1 = Func18(a1, b1, x1, n0); } if (f == 19) { y1 = Func19(mbx, x1, n0); } if (f == 20) { y1 = Func20(a1, b1, b2, x1); } } } dst_data.push_back(point(x1,y1)); } return 0; }