Combination::Combination( const Combination& orig ) : data(), k(), next_exists() { Combination* nc = orig.clone(); setData( nc->getData() ); setK( nc->getK() ); setNextExists( nc->getNextExists() ); }
UMat& UMat::setTo(InputArray _value, InputArray _mask) { bool haveMask = !_mask.empty(); #ifdef HAVE_OPENCL int tp = type(), cn = CV_MAT_CN(tp), d = CV_MAT_DEPTH(tp); if( dims <= 2 && cn <= 4 && CV_MAT_DEPTH(tp) < CV_64F && ocl::useOpenCL() ) { Mat value = _value.getMat(); CV_Assert( checkScalar(value, type(), _value.kind(), _InputArray::UMAT) ); int kercn = haveMask || cn == 3 ? cn : std::max(cn, ocl::predictOptimalVectorWidth(*this)), kertp = CV_MAKE_TYPE(d, kercn); double buf[16] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; convertAndUnrollScalar(value, tp, (uchar *)buf, kercn / cn); int scalarcn = kercn == 3 ? 4 : kercn, rowsPerWI = ocl::Device::getDefault().isIntel() ? 4 : 1; String opts = format("-D dstT=%s -D rowsPerWI=%d -D dstST=%s -D dstT1=%s -D cn=%d", ocl::memopTypeToStr(kertp), rowsPerWI, ocl::memopTypeToStr(CV_MAKETYPE(d, scalarcn)), ocl::memopTypeToStr(d), kercn); ocl::Kernel setK(haveMask ? "setMask" : "set", ocl::core::copyset_oclsrc, opts); if( !setK.empty() ) { ocl::KernelArg scalararg(0, 0, 0, 0, buf, CV_ELEM_SIZE(d) * scalarcn); UMat mask; if( haveMask ) { mask = _mask.getUMat(); CV_Assert( mask.size() == size() && mask.type() == CV_8UC1 ); ocl::KernelArg maskarg = ocl::KernelArg::ReadOnlyNoSize(mask), dstarg = ocl::KernelArg::ReadWrite(*this); setK.args(maskarg, dstarg, scalararg); } else { ocl::KernelArg dstarg = ocl::KernelArg::WriteOnly(*this, cn, kercn); setK.args(dstarg, scalararg); } size_t globalsize[] = { cols * cn / kercn, (rows + rowsPerWI - 1) / rowsPerWI }; if( setK.run(2, globalsize, NULL, false) ) { CV_IMPL_ADD(CV_IMPL_OCL); return *this; } } } #endif Mat m = getMat(haveMask ? ACCESS_RW : ACCESS_WRITE); m.setTo(_value, _mask); return *this; }
Combination& Combination::operator=( const Combination& rhs ) { if (*this != rhs) { Combination* combo = rhs.clone(); setData( combo->getData() ); setK( combo->getK() ); setNextExists( combo->getNextExists() ); } return *this; }
KNN::KNN(int n_outputs_,int K_) { // works only for sequences of 1 frame (static data!) data = NULL; distances = NULL; indices = NULL; setK(K_); n_outputs = n_outputs_; outputs = new(allocator) Sequence(1,n_outputs); n_real_examples = 0; real_examples = NULL; }
UMat& UMat::setTo(InputArray _value, InputArray _mask) { bool haveMask = !_mask.empty(); int tp = type(), cn = CV_MAT_CN(tp); if( dims <= 2 && cn <= 4 && cn != 3 && ocl::useOpenCL() ) { Mat value = _value.getMat(); CV_Assert( checkScalar(value, type(), _value.kind(), _InputArray::UMAT) ); double buf[4]; convertAndUnrollScalar(value, tp, (uchar*)buf, 1); char opts[1024]; sprintf(opts, "-D dstT=%s", ocl::memopTypeToStr(tp)); ocl::Kernel setK(haveMask ? "setMask" : "set", ocl::core::copyset_oclsrc, opts); if( !setK.empty() ) { ocl::KernelArg scalararg(0, 0, 0, buf, CV_ELEM_SIZE(tp)); UMat mask; if( haveMask ) { mask = _mask.getUMat(); CV_Assert( mask.size() == size() && mask.type() == CV_8U ); ocl::KernelArg maskarg = ocl::KernelArg::ReadOnlyNoSize(mask); ocl::KernelArg dstarg = ocl::KernelArg::ReadWrite(*this); setK.args(maskarg, dstarg, scalararg); } else { ocl::KernelArg dstarg = ocl::KernelArg::WriteOnly(*this); setK.args(dstarg, scalararg); } size_t globalsize[] = { cols, rows }; if( setK.run(2, globalsize, 0, false) ) return *this; } } Mat m = getMat(haveMask ? ACCESS_RW : ACCESS_WRITE); m.setTo(_value, _mask); return *this; }
//! Constructor YukawaCartesianBEM(int p, double kappa, unsigned k=3) : YukawaCartesian(p,kappa), K(k) { BEMConfig::Init(); auto Config = BEMConfig::Instance(); Config->setK(K); };
void CVRP::init(VRP V) { cout.setf(ios::fixed | ios::showpoint); cout.precision(2); std::cout.imbue( std::locale(std::cout.getloc(), new punct_facet<char, ','>)); bool init1 = false; if (init1) { setNroCustomers(V.getBusStops().size() + 1); Customer depot(V.getCoorSchool().getX(), V.getCoorSchool().getY(), V.getCoorSchool().getCapacity()); std::vector<Stop> a; a.insert(a.begin() + 0, V.getCoorSchool()); std::vector<Stop> b = V.getBusStops(); //Set AllCustomer but not depot std::vector<Customer> allCustNotDepot; for (size_t i = 0; i < V.getBusStops().size(); i++) { Stop stop = V.getBusStops().at(i); Customer customer(stop.getX(), stop.getY(), stop.getCapacity()); allCustNotDepot.insert(allCustNotDepot.begin() + i, customer); } setAllCustNoDepot(allCustNotDepot); a.insert(a.end(), b.begin(), b.end()); std::vector<Customer> allCustomers; for (size_t i = 0; i < a.size(); i++) { Stop stop = a.at(i); Customer customer(stop.getX(), stop.getY(), stop.getCapacity()); allCustomers.insert(allCustomers.begin() + i, customer); } for (size_t i = 0; i < allCustomers.size(); i++) { Customer customer = allCustomers.at(i); cout << "(" << customer.getX() << ", " << customer.getY() << ", " << customer.getDemand() << ")" << endl; } setDepot(depot); setAllCustomers(allCustomers); setK(V.getK()); setC(V.getCk()); setKmin(V.getKmin()); } else { setNroCustomers(V.getBusAssigned().size() + 1); Customer depot(V.getCoorSchool().getX(), V.getCoorSchool().getY(), V.getCoorSchool().getCapacity()); std::vector<Stop> a; a.insert(a.begin() + 0, V.getCoorSchool()); std::vector<Stop> b = V.getBusAssigned(); //Set AllCustomer but not depot std::vector<Customer> allCustNotDepot; for (size_t i = 0; i < V.getBusAssigned().size(); i++) { Stop stop = V.getBusAssigned().at(i); Customer customer(stop.getX(), stop.getY(), stop.getCapacity()); allCustNotDepot.insert(allCustNotDepot.begin() + i, customer); } setAllCustNoDepot(allCustNotDepot); a.insert(a.end(), b.begin(), b.end()); std::vector<Customer> allCustomers; for (size_t i = 0; i < a.size(); i++) { Stop stop = a.at(i); Customer customer(stop.getX(), stop.getY(), stop.getCapacity()); allCustomers.insert(allCustomers.begin() + i, customer); } cout << "List of customers! the first customert is the depot." << endl; for (size_t i = 0; i < allCustomers.size(); i++) { Customer customer = allCustomers.at(i); cout << "(" << customer.getX() << ", " << customer.getY() << ", " << customer.getDemand() << ")" << endl; } setDepot(depot); setAllCustomers(allCustomers); setK(V.getK()); setC(V.getCk()); setKmin(V.getKmin()); } //Validation of the numbers of enters to the depot //Initialization of x //Initialization of d std::vector<Customer> allCustomers = getAllCustomers(); int nro_customers = getNroCustomers(); double** d_cvpr = new double*[nro_customers]; double** s_cvpr = new double*[nro_customers]; bool** x_cvpr = new bool*[nro_customers]; for (int i = 0; i < nro_customers; i++) { d_cvpr[i] = new double[nro_customers]; x_cvpr[i] = new bool[nro_customers]; s_cvpr[i] = new double[nro_customers]; } cout << "Save the distance in a d array of array" << endl; for (int i = 0; i < nro_customers; i++) { Customer customer = allCustomers.at(i); cout << "(" << customer.getX() << ", " << customer.getY() << ")" << endl; for (int j = 0; j < nro_customers; j++) { Customer pivot = allCustomers.at(j); double distance = getDistanceIJ(customer, pivot); d_cvpr[i][j] = distance; x_cvpr[i][j] = false; } } cout << "Imprimir distance from i to j:" << endl; for (int i = 0; i < nro_customers; i++) { for (int j = 0; j < nro_customers; j++) { cout << d_cvpr[i][j] << " "; } cout << "\n"; } cout << "Imprimir x from i to j." << endl; for (int i = 0; i < nro_customers; i++) { for (int j = 0; j < nro_customers; j++) { cout << x_cvpr[i][j] << " "; } cout << "\n"; } setD(d_cvpr); //CREATE CONSTRUCTIVE - Saving Computation std::vector<Saving> savingList; int count1 = 0; int nro_buses = getK(); std::vector<Customer> allCSaving = getAllCustNoDepot(); for (int i = 0; i < nro_buses; i++) { Customer customer = allCSaving.at(i); for (int j = 0; j < nro_buses; j++) { if (i != j) { Customer pivot = allCSaving.at(j); double d1 = d_cvpr[i][0]; double d2 = d_cvpr[0][j]; double d3 = d_cvpr[i][j]; s_cvpr[i][j] = d1 + d2 - d3; Saving save(customer, pivot, s_cvpr[i][j]); savingList.insert(savingList.begin() + count1, save); count1++; } } } //Ordering Saving temp; int flag = 1; for (size_t i = 1; i < savingList.size() && flag; i++) { flag = 0; for (size_t j = 0; j < savingList.size() - 1; j++) { if (savingList.at(j + 1).getSavingPeso() > savingList.at(j).getSavingPeso()) { temp = savingList.at(j); savingList.at(j) = savingList.at(j + 1); savingList.at(j + 1) = temp; flag = 1; } } } cout << "Saving List after ordered." << endl; int m = 0; for (size_t i = 0; i < savingList.size(); i++) { Saving save = savingList.at(i); Customer c1 = save.getSavingC1(); Customer c2 = save.getSavingC2(); double peso = save.getSavingPeso(); cout << "i = (" << c1.getX() << ", " << c1.getY() << ") j = (" << c2.getX() << ", " << c2.getY() << ") peso = " << peso << endl; } cout << "Insertion." << endl; std::vector<std::vector<Customer> > routes; for (int i = 0; i < nro_buses; i++) { Customer customer = getAllCustNoDepot().at(i); //Create routes std::vector<Customer> route; route.insert(route.begin() + 0, getDepot()); route.insert(route.begin() + 1, customer); route.insert(route.begin() + 2, getDepot()); routes.insert(routes.begin() + m, route); m++; route.clear(); } //Routes cout << "Print route for each new route:" << endl; for (size_t i = 0; i < routes.size(); i++) { std::vector<Customer> customers = routes.at(i); map.insert(pair<int, std::vector<Customer> >(i, customers)); cout << "route #" << i << endl; for (size_t j = 0; j < customers.size(); j++) { Customer c = customers.at(j); cout << "(" << c.getX() << ", " << c.getY() << ") - "; } cout << "\n"; } //Best feasible merge //1.- look for 0, j /* * Step 2. Best feasible merge (Parallel version) Starting from the top of the savings list, execute the following: Given a saving sij, determine whether there exist two routes that can feasibility be merged: One starting with (0,j) One ending with (i,0) Combine these two routes by deleting (0,j) and (i,0) and introducing (i,j). * */ cout << "==========================================================" << endl; cout << "Starting saving List process" << endl; for (size_t i = 0; i < savingList.size(); i++) { bool firstCondition = false; unsigned int route_number = 0; bool secondCondition = false; unsigned int route_number2 = 0; Saving saving = savingList.at(i); Customer customer1 = saving.getSavingC1(); Customer customer2 = saving.getSavingC2(); Customer firstElement; Customer secondElement; cout << "=======Print route each time new SavingList is used=========" << endl; cout << "For saving customer1 = (" << customer1.getX() << ", " << customer1.getY() << ")" << endl; cout << "For saving customer2 = (" << customer2.getX() << ", " << customer2.getY() << ")" << endl; for (size_t i = 0; i < routes.size(); i++) { std::vector<Customer> customers = routes.at(i); cout << "route #" << i << endl; for (size_t j = 0; j < customers.size(); j++) { Customer c = customers.at(j); cout << "(" << c.getX() << ", " << c.getY() << ") - "; } cout << "\n"; } //First Condition for (size_t j = 0; j < routes.size(); j++) { std::vector<Customer> customersRoutes = routes.at(j); bool c1IsFound = false; bool depotIsFound = false; unsigned int pivot = 0; for (size_t k = 0; k < customersRoutes.size(); k++) { Customer c = customersRoutes.at(k); if (compareCustomers(c, customer1)) { c1IsFound = true; pivot = k; } if (c1IsFound && (pivot + 1 == k)) { if (compareCustomers(getDepot(), c)) { depotIsFound = true; firstElement = customersRoutes.at(pivot); cout << "first Element = (" << firstElement.getX() << ", " << firstElement.getY() << ")" << endl; route_number = j; } } } if (c1IsFound && depotIsFound) { map.insert( pair<int, std::vector<Customer> >(route_number, routes.at(route_number))); firstCondition = true; } else { cout << "Not" << endl; } } //Second condition for (size_t j = 0; j < routes.size(); j++) { std::vector<Customer> customersRoutes = routes.at(j); bool c2IsFound = false; bool depot2IsFound = false; unsigned int pivot2 = 0; for (size_t k = 0; k < customersRoutes.size(); k++) { Customer c = customersRoutes.at(k); if (compareCustomers(getDepot(), c)) { depot2IsFound = true; pivot2 = k; } if (depot2IsFound && (pivot2 + 1 == k)) { if (compareCustomers(c, customer2)) { c2IsFound = true; secondElement = customersRoutes.at(pivot2 + 1); cout << "second Element = (" << secondElement.getX() << ", " << secondElement.getY() << ")" << endl; route_number2 = j; } } } if (depot2IsFound && c2IsFound) { map.insert( pair<int, std::vector<Customer> >(route_number2, routes.at(route_number2))); secondCondition = true; } else { cout << "Not2" << endl; } } if (firstCondition && secondCondition) { if (route_number != route_number2) { cout << "route 1 = " << route_number << endl; cout << "route 2 = " << route_number2 << endl; cout << "first Element = (" << firstElement.getX() << ", " << firstElement.getY() << ")" << endl; cout << "second Element = (" << secondElement.getX() << ", " << secondElement.getY() << ")" << endl; cout << "soy sensacional" << endl; std::vector<Customer> route1 = routes.at(route_number); for (size_t r = 0; r < route1.size(); r++) { Customer c = route1.at(r); cout << "(" << c.getX() << ", " << c.getY() << ") -"; } cout << endl; //remote the depot for (size_t r = 0; r < route1.size(); r++) { Customer customer = route1.at(r); if (compareCustomers(customer, getDepot())) { route1.erase(route1.begin() + r); } } std::vector<Customer> route2 = routes.at(route_number2); for (size_t r = 0; r < route2.size(); r++) { Customer c = route2.at(r); cout << "(" << c.getX() << ", " << c.getY() << ") -"; } cout << endl; for (size_t r = 0; r < route2.size(); r++) { Customer customer = route2.at(r); if (compareCustomers(customer, getDepot())) { route2.erase(route2.begin() + r); } } route1.insert(route1.end(), route2.begin(), route2.end()); cout << "Nueva ruta generada por las rutas " << route_number << " y " << route_number2 << endl; for (size_t l = 0; l < route1.size(); l++) { Customer customer = route1.at(l); cout << "(" << customer.getX() << ", " << customer.getY() << ") - "; } routes.erase(routes.begin() + route_number); routes.erase(routes.begin() + route_number2 - 1); cout << "After remove the routes " << route_number << " and " << route_number2 << endl; for (size_t i = 0; i < routes.size(); i++) { std::vector<Customer> customers = routes.at(i); cout << "route #" << i << endl; for (size_t j = 0; j < customers.size(); j++) { Customer c = customers.at(j); cout << "(" << c.getX() << ", " << c.getY() << ") - "; } cout << "\n"; } routes.push_back(route1); cout << "after add the new route merged." << endl; for (size_t i = 0; i < routes.size(); i++) { std::vector<Customer> customers = routes.at(i); cout << "route #" << i << endl; for (size_t j = 0; j < customers.size(); j++) { Customer c = customers.at(j); cout << "(" << c.getX() << ", " << c.getY() << ") - "; } cout << "\n"; } cout << "routes.size() = " << routes.size() << endl; } cout << "=======end saving element from the list=========" << endl; } else { //Not to merge } } //Route Extension //Routes cout << "Print routes after the first merge process:" << endl; for (size_t i = 0; i < routes.size(); i++) { std::vector<Customer> customers = routes.at(i); cout << "route #" << i << endl; for (size_t j = 0; j < customers.size(); j++) { Customer c = customers.at(j); cout << "(" << c.getX() << ", " << c.getY() << ") - "; } cout << "\n"; } }
void SegmentationControl::kChanged(double value) { setK(value); if (mDEM) segment(); }
YoonEncryptor::YoonEncryptor(double init, double param, int K){ setInit(init); setParam(param); setK(K); }