docstr: Solve Traveling Salesman Problem. Data comes from one set of nodes (cities).
code: def test_seq2slate_transformer_off_policy_simple_tsp(self):
      """
      Solve Traveling Salesman Problem. Data comes from one set of nodes (cities).
      """
      device = torch.device("cpu")
      batch_size = 4096
      epochs = 1
      num_batches = 100
      expect_reward_threshold = 1.02
      hidden_size = 32
      num_candidates = 6
      diverse_input = False
      learning_rate = 0.001
      learning_method = OFF_POLICY
      policy_gradient_interval = 1
      run_seq2slate_tsp(
          MODEL_TRANSFORMER,
          batch_size,
          epochs,
          num_candidates,
          num_batches,
          hidden_size,
          diverse_input,
          learning_rate,
          expect_reward_threshold,
          learning_method,
          policy_gradient_interval,
          device,
      )
  
file_path: ReAgent/reagent/test/ranking/test_seq2slate_off_policy.py
imports: import logging
  import random
  import unittest
  import numpy
  import pytest
  import torch
  from reagent.test.ranking.seq2slate_utils import MODEL_TRANSFORMER, OFF_POLICY, run_seq2slate_tsp
label_desc: Use image node_id 2 for calling the TestSeq2SlateOffPolicy obj's underlying member method code with example usage: obj.test_seq2slate_transformer_off_policy_simple_tsp() without return types