Cloud Optimization API C++ Client Library

This directory contains an idiomatic C++ client library for the Cloud Optimization API, a service that provides a portfolio of solvers to address common optimization use cases.

While this library is GA, please note Google Cloud C++ client libraries do not follow Semantic Versioning.

The following shows the code that you'll run in the google/cloud/optimization/quickstart/ directory, which should give you a taste of the Cloud Optimization API C++ client library API.

See more code actions.
#include "google/cloud/optimization/v1/fleet_routing_client.h"
#include "google/cloud/common_options.h"
#include "google/cloud/project.h"
#include <iostream>

int main(int argc, char* argv[]) try {
 
if (argc != 3) {
    std
::cerr << "Usage: " << argv[0] << " project-id destination\n"
             
<< "  destination is a GCS bucket\n";
   
return 1;
 
}
 
// This quickstart loads an example model from a known GCS bucket. The service
 
// solves the model, and writes the solution to the destination GCS bucket.
  std
::string const source =
     
"gs://cloud-samples-data/optimization-ai/async_request_model.json";
 
auto const destination =
      std
::string{"gs://"} + argv[2] + "/optimization_quickstart_solution.json";

 
namespace gc = ::google::cloud;
 
namespace optimization = ::google::cloud::optimization_v1;

 
auto options = gc::Options{}.set<gc::UserProjectOption>(argv[1]);
 
auto client = optimization::FleetRoutingClient(
      optimization
::MakeFleetRoutingConnection(options));

  google
::cloud::optimization::v1::BatchOptimizeToursRequest req;
  req
.set_parent(gc::Project(argv[1]).FullName());
 
auto& config = *req.add_model_configs();
 
auto& input = *config.mutable_input_config();
  input
.mutable_gcs_source()->set_uri(source);
  input
.set_data_format(google::cloud::optimization::v1::JSON);
 
auto& output = *config.mutable_output_config();
  output
.mutable_gcs_destination()->set_uri(destination);
  output
.set_data_format(google::cloud::optimization::v1::JSON);

 
auto fut = client.BatchOptimizeTours(req);
  std
::cout << "Request sent to the service...\n";
 
auto resp = fut.get();
 
if (!resp) throw std::move(resp).status();
  std
::cout << "Solution written to: " << destination << "\n";

 
return 0;
} catch (google::cloud::Status const& status) {
  std
::cerr << "google::cloud::Status thrown: " << status << "\n";
 
return 1;
}

Main classes

The main class in this library is optimization_v1::FleetRoutingClient. All RPCs are exposed as member functions of this class. Other classes provide helpers, configuration parameters, and infrastructure to mock optimization_v1::FleetRoutingClient when testing your application.

More Information