mirror of
https://github.com/inzva/combinatorial-optimization-with-RL.git
synced 2021-06-01 09:29:58 +03:00
2641 lines
178 KiB
Plaintext
2641 lines
178 KiB
Plaintext
{
|
||
"nbformat": 4,
|
||
"nbformat_minor": 0,
|
||
"metadata": {
|
||
"colab": {
|
||
"name": "TSP50_Experiments",
|
||
"provenance": [],
|
||
"collapsed_sections": []
|
||
},
|
||
"kernelspec": {
|
||
"name": "python3",
|
||
"display_name": "Python 3"
|
||
},
|
||
"accelerator": "GPU"
|
||
},
|
||
"cells": [
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {
|
||
"id": "1YAa3Qunx_rq",
|
||
"colab_type": "text"
|
||
},
|
||
"source": [
|
||
"#### **Note.** This Jupyter notebook is designed to work standalone without any additional file. The only exception is that after you clone the github repo, you need to manually upload your pretrained models (e.g., models trained with normal or exponential data as described in README) to respective folders.\n",
|
||
"\n",
|
||
"#### This notebook seems to work fine on colab.research.google.com. On your local computer, some libraries might need to be installed beforehand."
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"metadata": {
|
||
"id": "Qv3OyIGbRvo2",
|
||
"colab_type": "code",
|
||
"outputId": "f59a5a8e-fd07-4b68-c1ff-cfc688b44c5c",
|
||
"colab": {
|
||
"base_uri": "https://localhost:8080/",
|
||
"height": 356
|
||
}
|
||
},
|
||
"source": [
|
||
"#clone the repository to obtain pretained models and drawing utilities\n",
|
||
"#install required packages that are not automatically installed on Colab\n",
|
||
"!git clone https://github.com/wouterkool/attention-learn-to-route.git\n",
|
||
"!pip install tensorboard_logger\n",
|
||
"%cd /content/attention-learn-to-route\n"
|
||
],
|
||
"execution_count": 0,
|
||
"outputs": [
|
||
{
|
||
"output_type": "stream",
|
||
"text": [
|
||
"Cloning into 'attention-learn-to-route'...\n",
|
||
"remote: Enumerating objects: 3, done.\u001b[K\n",
|
||
"remote: Counting objects: 100% (3/3), done.\u001b[K\n",
|
||
"remote: Compressing objects: 100% (3/3), done.\u001b[K\n",
|
||
"remote: Total 246 (delta 0), reused 1 (delta 0), pack-reused 243\u001b[K\n",
|
||
"Receiving objects: 100% (246/246), 74.66 MiB | 47.05 MiB/s, done.\n",
|
||
"Resolving deltas: 100% (54/54), done.\n",
|
||
"Collecting tensorboard_logger\n",
|
||
" Downloading https://files.pythonhosted.org/packages/87/7a/ec0fd26dba69191f82eb8f38f5b401c124f45a207490a7ade6ea9717ecdb/tensorboard_logger-0.1.0-py2.py3-none-any.whl\n",
|
||
"Requirement already satisfied: numpy in /usr/local/lib/python3.6/dist-packages (from tensorboard_logger) (1.17.3)\n",
|
||
"Requirement already satisfied: protobuf in /usr/local/lib/python3.6/dist-packages (from tensorboard_logger) (3.10.0)\n",
|
||
"Requirement already satisfied: scipy>=0.19.1 in /usr/local/lib/python3.6/dist-packages (from tensorboard_logger) (1.3.1)\n",
|
||
"Requirement already satisfied: pillow>=4.1.1 in /usr/local/lib/python3.6/dist-packages (from tensorboard_logger) (4.3.0)\n",
|
||
"Requirement already satisfied: six in /usr/local/lib/python3.6/dist-packages (from tensorboard_logger) (1.12.0)\n",
|
||
"Requirement already satisfied: setuptools in /usr/local/lib/python3.6/dist-packages (from protobuf->tensorboard_logger) (41.4.0)\n",
|
||
"Requirement already satisfied: olefile in /usr/local/lib/python3.6/dist-packages (from pillow>=4.1.1->tensorboard_logger) (0.46)\n",
|
||
"Installing collected packages: tensorboard-logger\n",
|
||
"Successfully installed tensorboard-logger-0.1.0\n",
|
||
"/content/attention-learn-to-route\n"
|
||
],
|
||
"name": "stdout"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"metadata": {
|
||
"id": "J-iBhRc-Sljv",
|
||
"colab_type": "code",
|
||
"outputId": "5c8f8b2d-26d6-48d6-b280-3190f2be3a5d",
|
||
"colab": {
|
||
"base_uri": "https://localhost:8080/",
|
||
"height": 54
|
||
}
|
||
},
|
||
"source": [
|
||
"!python generate_data.py --problem tsp --graph_size 50 --name uni --seed 1234\n"
|
||
],
|
||
"execution_count": 0,
|
||
"outputs": [
|
||
{
|
||
"output_type": "stream",
|
||
"text": [
|
||
"[[0.1915194503788923, 0.6221087710398319], [0.4377277390071145, 0.7853585837137692], [0.7799758081188035, 0.2725926052826416], [0.2764642551430967, 0.8018721775350193], [0.9581393536837052, 0.8759326347420947], [0.35781726995786667, 0.5009951255234587], [0.6834629351721363, 0.7127020269829002], [0.37025075479039493, 0.5611961860656249], [0.5030831653078097, 0.013768449590682241], [0.772826621612374, 0.8826411906361166], [0.3648859839013723, 0.6153961784334937], [0.07538124164297655, 0.3688240060019745], [0.9331401019825216, 0.6513781432265774], [0.3972025777261542, 0.7887301429407455], [0.31683612216887125, 0.5680986526260692], [0.8691273895612258, 0.43617342389567937], [0.8021476420801591, 0.14376682451456457], [0.7042609711183354, 0.7045813081895725], [0.21879210567408858, 0.924867628615565], [0.44214075540417663, 0.9093159589724725], [0.0598092227798519, 0.18428708381381365], [0.04735527880151513, 0.6748809435823302], [0.5946247799344488, 0.5333101629987506], [0.04332406269480349, 0.5614330800633979], [0.329668445620915, 0.5029668331126184], [0.11189431757440382, 0.6071937062184846], [0.5659446430505314, 0.00676406199000279], [0.617441708804297, 0.9121228864331543], [0.7905241330570334, 0.9920814661883615], [0.9588017621528665, 0.7919641352916398], [0.2852509600245098, 0.624916705305911], [0.47809379567067456, 0.19567517866589823], [0.38231745203150647, 0.05387368514623658], [0.45164840826085906, 0.9820047415219545], [0.12394270048696299, 0.1193808979262484], [0.7385230561433468, 0.5873036334639846], [0.4716325343203678, 0.1071268171938663], [0.22921856546061792, 0.8999651948366754], [0.4167535378026932, 0.5358516625316159], [0.006208516587129398, 0.30064170577030114], [0.4368931721756102, 0.6121489970657575], [0.9181980753805731, 0.6257366699625353], [0.7059975650817732, 0.14983371598992723], [0.7460634091367166, 0.8310069924335378], [0.6337257689509791, 0.4383098811224275], [0.15257277467450536, 0.5684096152471901], [0.5282242775850605, 0.9514287637535932], [0.4803591785100161, 0.5025595633825504], [0.5368781929244097, 0.8192020670641583], [0.05711563808885989, 0.6694217430745488]]\n"
|
||
],
|
||
"name": "stdout"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"metadata": {
|
||
"id": "PlhgpwDwTthH",
|
||
"colab_type": "code",
|
||
"outputId": "a5087ac4-2135-432e-cac5-15319b747568",
|
||
"colab": {
|
||
"base_uri": "https://localhost:8080/",
|
||
"height": 34
|
||
}
|
||
},
|
||
"source": [
|
||
"%%writefile generate_data.py\n",
|
||
"\n",
|
||
"import argparse\n",
|
||
"import os\n",
|
||
"import numpy as np\n",
|
||
"from utils.data_utils import check_extension, save_dataset\n",
|
||
"\n",
|
||
"\n",
|
||
"def generate_tsp_data(dataset_size, tsp_size):\n",
|
||
" l = []\n",
|
||
" for i in range(dataset_size):\n",
|
||
" a = np.random.normal(0.5, 0.25, size=(1, tsp_size, 2))\n",
|
||
" amin = np.min(a, axis=1)\n",
|
||
" amax = np.max(a, axis=1)\n",
|
||
" r = (a - amin) / (amax - amin)\n",
|
||
" l.append(r.tolist()[0])\n",
|
||
" return l\n",
|
||
"\n",
|
||
"\n",
|
||
" #return np.random.uniform(size=(dataset_size, tsp_size, 2)).tolist()\n",
|
||
"\n",
|
||
"\n",
|
||
"def generate_vrp_data(dataset_size, vrp_size):\n",
|
||
" CAPACITIES = {\n",
|
||
" 10: 20.,\n",
|
||
" 20: 30.,\n",
|
||
" 50: 40.,\n",
|
||
" 100: 50.\n",
|
||
" }\n",
|
||
" return list(zip(\n",
|
||
" np.random.uniform(size=(dataset_size, 2)).tolist(), # Depot location\n",
|
||
" np.random.uniform(size=(dataset_size, vrp_size, 2)).tolist(), # Node locations\n",
|
||
" np.random.randint(1, 10, size=(dataset_size, vrp_size)).tolist(), # Demand, uniform integer 1 ... 9\n",
|
||
" np.full(dataset_size, CAPACITIES[vrp_size]).tolist() # Capacity, same for whole dataset\n",
|
||
" ))\n",
|
||
"\n",
|
||
"\n",
|
||
"def generate_op_data(dataset_size, op_size, prize_type='const'):\n",
|
||
" depot = np.random.uniform(size=(dataset_size, 2))\n",
|
||
" loc = np.random.uniform(size=(dataset_size, op_size, 2))\n",
|
||
"\n",
|
||
" # Methods taken from Fischetti et al. 1998\n",
|
||
" if prize_type == 'const':\n",
|
||
" prize = np.ones((dataset_size, op_size))\n",
|
||
" elif prize_type == 'unif':\n",
|
||
" prize = (1 + np.random.randint(0, 100, size=(dataset_size, op_size))) / 100.\n",
|
||
" else: # Based on distance to depot\n",
|
||
" assert prize_type == 'dist'\n",
|
||
" prize_ = np.linalg.norm(depot[:, None, :] - loc, axis=-1)\n",
|
||
" prize = (1 + (prize_ / prize_.max(axis=-1, keepdims=True) * 99).astype(int)) / 100.\n",
|
||
"\n",
|
||
" # Max length is approximately half of optimal TSP tour, such that half (a bit more) of the nodes can be visited\n",
|
||
" # which is maximally difficult as this has the largest number of possibilities\n",
|
||
" MAX_LENGTHS = {\n",
|
||
" 20: 2.,\n",
|
||
" 50: 3.,\n",
|
||
" 100: 4.\n",
|
||
" }\n",
|
||
"\n",
|
||
" return list(zip(\n",
|
||
" depot.tolist(),\n",
|
||
" loc.tolist(),\n",
|
||
" prize.tolist(),\n",
|
||
" np.full(dataset_size, MAX_LENGTHS[op_size]).tolist() # Capacity, same for whole dataset\n",
|
||
" ))\n",
|
||
"\n",
|
||
"\n",
|
||
"def generate_pctsp_data(dataset_size, pctsp_size, penalty_factor=3):\n",
|
||
" depot = np.random.uniform(size=(dataset_size, 2))\n",
|
||
" loc = np.random.uniform(size=(dataset_size, pctsp_size, 2))\n",
|
||
"\n",
|
||
" # For the penalty to make sense it should be not too large (in which case all nodes will be visited) nor too small\n",
|
||
" # so we want the objective term to be approximately equal to the length of the tour, which we estimate with half\n",
|
||
" # of the nodes by half of the tour length (which is very rough but similar to op)\n",
|
||
" # This means that the sum of penalties for all nodes will be approximately equal to the tour length (on average)\n",
|
||
" # The expected total (uniform) penalty of half of the nodes (since approx half will be visited by the constraint)\n",
|
||
" # is (n / 2) / 2 = n / 4 so divide by this means multiply by 4 / n,\n",
|
||
" # However instead of 4 we use penalty_factor (3 works well) so we can make them larger or smaller\n",
|
||
" MAX_LENGTHS = {\n",
|
||
" 20: 2.,\n",
|
||
" 50: 3.,\n",
|
||
" 100: 4.\n",
|
||
" }\n",
|
||
" penalty_max = MAX_LENGTHS[pctsp_size] * (penalty_factor) / float(pctsp_size)\n",
|
||
" penalty = np.random.uniform(size=(dataset_size, pctsp_size)) * penalty_max\n",
|
||
"\n",
|
||
" # Take uniform prizes\n",
|
||
" # Now expectation is 0.5 so expected total prize is n / 2, we want to force to visit approximately half of the nodes\n",
|
||
" # so the constraint will be that total prize >= (n / 2) / 2 = n / 4\n",
|
||
" # equivalently, we divide all prizes by n / 4 and the total prize should be >= 1\n",
|
||
" deterministic_prize = np.random.uniform(size=(dataset_size, pctsp_size)) * 4 / float(pctsp_size)\n",
|
||
"\n",
|
||
" # In the deterministic setting, the stochastic_prize is not used and the deterministic prize is known\n",
|
||
" # In the stochastic setting, the deterministic prize is the expected prize and is known up front but the\n",
|
||
" # stochastic prize is only revealed once the node is visited\n",
|
||
" # Stochastic prize is between (0, 2 * expected_prize) such that E(stochastic prize) = E(deterministic_prize)\n",
|
||
" stochastic_prize = np.random.uniform(size=(dataset_size, pctsp_size)) * deterministic_prize * 2\n",
|
||
"\n",
|
||
" return list(zip(\n",
|
||
" depot.tolist(),\n",
|
||
" loc.tolist(),\n",
|
||
" penalty.tolist(),\n",
|
||
" deterministic_prize.tolist(),\n",
|
||
" stochastic_prize.tolist()\n",
|
||
" ))\n",
|
||
"\n",
|
||
"\n",
|
||
"if __name__ == \"__main__\":\n",
|
||
" parser = argparse.ArgumentParser()\n",
|
||
" parser.add_argument(\"--filename\", help=\"Filename of the dataset to create (ignores datadir)\")\n",
|
||
" parser.add_argument(\"--data_dir\", default='data', help=\"Create datasets in data_dir/problem (default 'data')\")\n",
|
||
" parser.add_argument(\"--name\", type=str, required=True, help=\"Name to identify dataset\")\n",
|
||
" parser.add_argument(\"--problem\", type=str, default='all',\n",
|
||
" help=\"Problem, 'tsp', 'vrp', 'pctsp' or 'op_const', 'op_unif' or 'op_dist'\"\n",
|
||
" \" or 'all' to generate all\")\n",
|
||
" parser.add_argument('--data_distribution', type=str, default='all',\n",
|
||
" help=\"Distributions to generate for problem, default 'all'.\")\n",
|
||
"\n",
|
||
" parser.add_argument(\"--dataset_size\", type=int, default=10000, help=\"Size of the dataset\")\n",
|
||
" parser.add_argument('--graph_sizes', type=int, nargs='+', default=[20, 50, 100],\n",
|
||
" help=\"Sizes of problem instances (default 20, 50, 100)\")\n",
|
||
" parser.add_argument(\"-f\", action='store_true', help=\"Set true to overwrite\")\n",
|
||
" parser.add_argument('--seed', type=int, default=1234, help=\"Random seed\")\n",
|
||
"\n",
|
||
" opts = parser.parse_args()\n",
|
||
"\n",
|
||
" assert opts.filename is None or (len(opts.problems) == 1 and len(opts.graph_sizes) == 1), \\\n",
|
||
" \"Can only specify filename when generating a single dataset\"\n",
|
||
"\n",
|
||
" distributions_per_problem = {\n",
|
||
" 'tsp': [None],\n",
|
||
" 'vrp': [None],\n",
|
||
" 'pctsp': [None],\n",
|
||
" 'op': ['const', 'unif', 'dist']\n",
|
||
" }\n",
|
||
" if opts.problem == 'all':\n",
|
||
" problems = distributions_per_problem\n",
|
||
" else:\n",
|
||
" problems = {\n",
|
||
" opts.problem:\n",
|
||
" distributions_per_problem[opts.problem]\n",
|
||
" if opts.data_distribution == 'all'\n",
|
||
" else [opts.data_distribution]\n",
|
||
" }\n",
|
||
"\n",
|
||
" for problem, distributions in problems.items():\n",
|
||
" for distribution in distributions or [None]:\n",
|
||
" for graph_size in opts.graph_sizes:\n",
|
||
"\n",
|
||
" datadir = os.path.join(opts.data_dir, problem)\n",
|
||
" os.makedirs(datadir, exist_ok=True)\n",
|
||
"\n",
|
||
" if opts.filename is None:\n",
|
||
" filename = os.path.join(datadir, \"{}{}{}_{}_seed{}.pkl\".format(\n",
|
||
" problem,\n",
|
||
" \"_{}\".format(distribution) if distribution is not None else \"\",\n",
|
||
" graph_size, opts.name, opts.seed))\n",
|
||
" else:\n",
|
||
" filename = check_extension(opts.filename)\n",
|
||
"\n",
|
||
" assert opts.f or not os.path.isfile(check_extension(filename)), \\\n",
|
||
" \"File already exists! Try running with -f option to overwrite.\"\n",
|
||
"\n",
|
||
" np.random.seed(opts.seed)\n",
|
||
" if problem == 'tsp':\n",
|
||
" dataset = generate_tsp_data(opts.dataset_size, graph_size)\n",
|
||
" elif problem == 'vrp':\n",
|
||
" dataset = generate_vrp_data(\n",
|
||
" opts.dataset_size, graph_size)\n",
|
||
" elif problem == 'pctsp':\n",
|
||
" dataset = generate_pctsp_data(opts.dataset_size, graph_size)\n",
|
||
" elif problem == \"op\":\n",
|
||
" dataset = generate_op_data(opts.dataset_size, graph_size, prize_type=distribution)\n",
|
||
" else:\n",
|
||
" assert False, \"Unknown problem: {}\".format(problem)\n",
|
||
"\n",
|
||
" print(dataset[0])\n",
|
||
"\n",
|
||
" save_dataset(dataset, filename)"
|
||
],
|
||
"execution_count": 0,
|
||
"outputs": [
|
||
{
|
||
"output_type": "stream",
|
||
"text": [
|
||
"Overwriting generate_data.py\n"
|
||
],
|
||
"name": "stdout"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"metadata": {
|
||
"id": "6pXN1zTFd5HT",
|
||
"colab_type": "code",
|
||
"outputId": "5a4c2161-e0fc-4a88-f4f7-231b4537b401",
|
||
"colab": {
|
||
"base_uri": "https://localhost:8080/",
|
||
"height": 54
|
||
}
|
||
},
|
||
"source": [
|
||
"!python generate_data.py --problem tsp --graph_size 50 --name normal --seed 1234\n"
|
||
],
|
||
"execution_count": 0,
|
||
"outputs": [
|
||
{
|
||
"output_type": "stream",
|
||
"text": [
|
||
"[[0.5457731898028044, 0.3984465631081797], [0.8258169680029086, 0.5459530145800168], [0.19850525349378206, 0.7474509464585226], [0.6588524480476403, 0.49156173911652973], [0.41300448437119913, 0.22182160874569803], [0.7434673945633128, 0.765048307055643], [0.6861601288547691, 0.25900877521594046], [0.31110618817159474, 0.5988158019359355], [0.5265509687019956, 0.647010390278467], [0.7933198734088502, 0.33867139763233695], [0.3493955098439895, 0.4882959881284033], [0.4647804560136093, 0.6914050469644111], [0.7924439606369617, 0.5196445102425945], [0.6052384041875892, 0.293306932311062], [0.35508738070545987, 0.7763042348636506], [0.2925303880639748, 0.6551296106909803], [0.7136189294765549, 0.7741158089854198], [0.6600552988751361, 0.5779558782418842], [0.44476388401625333, 0.5442496056632247], [0.6536337155236683, 1.0], [0.43063066360743674, 0.5033306269432919], [0.41896081547501457, 0.24998652541862812], [0.48062010792093557, 0.44779076270419055], [0.3685797825467948, 0.6015315444247425], [0.6285036942445497, 0.6346124319309138], [0.6534397160638756, 0.3556494585426914], [0.0, 0.5815117529681808], [0.24871426237590952, 0.5741725177795789], [0.5115671589187695, 0.592495954055294], [0.5732461773026112, 0.8580393062497457], [0.1246110312756527, 0.5866462630083887], [0.4981511515594543, 0.5634445809939574], [0.7096050819418263, 0.19532580147978656], [1.0, 0.40656556403035043], [0.47015892555197836, 0.7168114275561261], [0.17961376752183317, 0.6760587502044441], [0.613591935996374, 0.686378418735298], [0.13858945669836792, 0.9356589078511256], [0.4745518803268345, 0.40488148330728396], [0.592543964834009, 0.6050958364215911], [0.543721425521341, 0.0], [0.7933045564441686, 0.6240929476987039], [0.45636350444632845, 0.5262294030333288], [0.6319864285559434, 0.7638683242922534], [0.4873333294259078, 0.8322313962293202], [0.43169188532949326, 0.5312896474996216], [0.10899179638595602, 0.5002619644469085], [0.6463270222836116, 0.5846977838422992], [0.30799230354478213, 0.6871812058251168], [0.09700714870910818, 0.5124942562132577]]\n"
|
||
],
|
||
"name": "stdout"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"metadata": {
|
||
"id": "MO1CpwJYTmt9",
|
||
"colab_type": "code",
|
||
"outputId": "094127c1-7025-496f-ddac-88dea5778a7c",
|
||
"colab": {
|
||
"base_uri": "https://localhost:8080/",
|
||
"height": 34
|
||
}
|
||
},
|
||
"source": [
|
||
"%%writefile generate_data.py\n",
|
||
"\n",
|
||
"import argparse\n",
|
||
"import os\n",
|
||
"import numpy as np\n",
|
||
"from utils.data_utils import check_extension, save_dataset\n",
|
||
"\n",
|
||
"\n",
|
||
"def generate_tsp_data(dataset_size, tsp_size):\n",
|
||
" l = []\n",
|
||
" for i in range(dataset_size):\n",
|
||
" a = np.random.exponential(1, size=(1, tsp_size, 2))\n",
|
||
" amin = np.min(a, axis=1)\n",
|
||
" amax = np.max(a, axis=1)\n",
|
||
" r = (a - amin) / (amax - amin)\n",
|
||
" l.append(r.tolist()[0])\n",
|
||
" return l\n",
|
||
"\n",
|
||
"\n",
|
||
" #return np.random.uniform(size=(dataset_size, tsp_size, 2)).tolist()\n",
|
||
"\n",
|
||
"\n",
|
||
"def generate_vrp_data(dataset_size, vrp_size):\n",
|
||
" CAPACITIES = {\n",
|
||
" 10: 20.,\n",
|
||
" 20: 30.,\n",
|
||
" 50: 40.,\n",
|
||
" 100: 50.\n",
|
||
" }\n",
|
||
" return list(zip(\n",
|
||
" np.random.uniform(size=(dataset_size, 2)).tolist(), # Depot location\n",
|
||
" np.random.uniform(size=(dataset_size, vrp_size, 2)).tolist(), # Node locations\n",
|
||
" np.random.randint(1, 10, size=(dataset_size, vrp_size)).tolist(), # Demand, uniform integer 1 ... 9\n",
|
||
" np.full(dataset_size, CAPACITIES[vrp_size]).tolist() # Capacity, same for whole dataset\n",
|
||
" ))\n",
|
||
"\n",
|
||
"\n",
|
||
"def generate_op_data(dataset_size, op_size, prize_type='const'):\n",
|
||
" depot = np.random.uniform(size=(dataset_size, 2))\n",
|
||
" loc = np.random.uniform(size=(dataset_size, op_size, 2))\n",
|
||
"\n",
|
||
" # Methods taken from Fischetti et al. 1998\n",
|
||
" if prize_type == 'const':\n",
|
||
" prize = np.ones((dataset_size, op_size))\n",
|
||
" elif prize_type == 'unif':\n",
|
||
" prize = (1 + np.random.randint(0, 100, size=(dataset_size, op_size))) / 100.\n",
|
||
" else: # Based on distance to depot\n",
|
||
" assert prize_type == 'dist'\n",
|
||
" prize_ = np.linalg.norm(depot[:, None, :] - loc, axis=-1)\n",
|
||
" prize = (1 + (prize_ / prize_.max(axis=-1, keepdims=True) * 99).astype(int)) / 100.\n",
|
||
"\n",
|
||
" # Max length is approximately half of optimal TSP tour, such that half (a bit more) of the nodes can be visited\n",
|
||
" # which is maximally difficult as this has the largest number of possibilities\n",
|
||
" MAX_LENGTHS = {\n",
|
||
" 20: 2.,\n",
|
||
" 50: 3.,\n",
|
||
" 100: 4.\n",
|
||
" }\n",
|
||
"\n",
|
||
" return list(zip(\n",
|
||
" depot.tolist(),\n",
|
||
" loc.tolist(),\n",
|
||
" prize.tolist(),\n",
|
||
" np.full(dataset_size, MAX_LENGTHS[op_size]).tolist() # Capacity, same for whole dataset\n",
|
||
" ))\n",
|
||
"\n",
|
||
"\n",
|
||
"def generate_pctsp_data(dataset_size, pctsp_size, penalty_factor=3):\n",
|
||
" depot = np.random.uniform(size=(dataset_size, 2))\n",
|
||
" loc = np.random.uniform(size=(dataset_size, pctsp_size, 2))\n",
|
||
"\n",
|
||
" # For the penalty to make sense it should be not too large (in which case all nodes will be visited) nor too small\n",
|
||
" # so we want the objective term to be approximately equal to the length of the tour, which we estimate with half\n",
|
||
" # of the nodes by half of the tour length (which is very rough but similar to op)\n",
|
||
" # This means that the sum of penalties for all nodes will be approximately equal to the tour length (on average)\n",
|
||
" # The expected total (uniform) penalty of half of the nodes (since approx half will be visited by the constraint)\n",
|
||
" # is (n / 2) / 2 = n / 4 so divide by this means multiply by 4 / n,\n",
|
||
" # However instead of 4 we use penalty_factor (3 works well) so we can make them larger or smaller\n",
|
||
" MAX_LENGTHS = {\n",
|
||
" 20: 2.,\n",
|
||
" 50: 3.,\n",
|
||
" 100: 4.\n",
|
||
" }\n",
|
||
" penalty_max = MAX_LENGTHS[pctsp_size] * (penalty_factor) / float(pctsp_size)\n",
|
||
" penalty = np.random.uniform(size=(dataset_size, pctsp_size)) * penalty_max\n",
|
||
"\n",
|
||
" # Take uniform prizes\n",
|
||
" # Now expectation is 0.5 so expected total prize is n / 2, we want to force to visit approximately half of the nodes\n",
|
||
" # so the constraint will be that total prize >= (n / 2) / 2 = n / 4\n",
|
||
" # equivalently, we divide all prizes by n / 4 and the total prize should be >= 1\n",
|
||
" deterministic_prize = np.random.uniform(size=(dataset_size, pctsp_size)) * 4 / float(pctsp_size)\n",
|
||
"\n",
|
||
" # In the deterministic setting, the stochastic_prize is not used and the deterministic prize is known\n",
|
||
" # In the stochastic setting, the deterministic prize is the expected prize and is known up front but the\n",
|
||
" # stochastic prize is only revealed once the node is visited\n",
|
||
" # Stochastic prize is between (0, 2 * expected_prize) such that E(stochastic prize) = E(deterministic_prize)\n",
|
||
" stochastic_prize = np.random.uniform(size=(dataset_size, pctsp_size)) * deterministic_prize * 2\n",
|
||
"\n",
|
||
" return list(zip(\n",
|
||
" depot.tolist(),\n",
|
||
" loc.tolist(),\n",
|
||
" penalty.tolist(),\n",
|
||
" deterministic_prize.tolist(),\n",
|
||
" stochastic_prize.tolist()\n",
|
||
" ))\n",
|
||
"\n",
|
||
"\n",
|
||
"if __name__ == \"__main__\":\n",
|
||
" parser = argparse.ArgumentParser()\n",
|
||
" parser.add_argument(\"--filename\", help=\"Filename of the dataset to create (ignores datadir)\")\n",
|
||
" parser.add_argument(\"--data_dir\", default='data', help=\"Create datasets in data_dir/problem (default 'data')\")\n",
|
||
" parser.add_argument(\"--name\", type=str, required=True, help=\"Name to identify dataset\")\n",
|
||
" parser.add_argument(\"--problem\", type=str, default='all',\n",
|
||
" help=\"Problem, 'tsp', 'vrp', 'pctsp' or 'op_const', 'op_unif' or 'op_dist'\"\n",
|
||
" \" or 'all' to generate all\")\n",
|
||
" parser.add_argument('--data_distribution', type=str, default='all',\n",
|
||
" help=\"Distributions to generate for problem, default 'all'.\")\n",
|
||
"\n",
|
||
" parser.add_argument(\"--dataset_size\", type=int, default=10000, help=\"Size of the dataset\")\n",
|
||
" parser.add_argument('--graph_sizes', type=int, nargs='+', default=[20, 50, 100],\n",
|
||
" help=\"Sizes of problem instances (default 20, 50, 100)\")\n",
|
||
" parser.add_argument(\"-f\", action='store_true', help=\"Set true to overwrite\")\n",
|
||
" parser.add_argument('--seed', type=int, default=1234, help=\"Random seed\")\n",
|
||
"\n",
|
||
" opts = parser.parse_args()\n",
|
||
"\n",
|
||
" assert opts.filename is None or (len(opts.problems) == 1 and len(opts.graph_sizes) == 1), \\\n",
|
||
" \"Can only specify filename when generating a single dataset\"\n",
|
||
"\n",
|
||
" distributions_per_problem = {\n",
|
||
" 'tsp': [None],\n",
|
||
" 'vrp': [None],\n",
|
||
" 'pctsp': [None],\n",
|
||
" 'op': ['const', 'unif', 'dist']\n",
|
||
" }\n",
|
||
" if opts.problem == 'all':\n",
|
||
" problems = distributions_per_problem\n",
|
||
" else:\n",
|
||
" problems = {\n",
|
||
" opts.problem:\n",
|
||
" distributions_per_problem[opts.problem]\n",
|
||
" if opts.data_distribution == 'all'\n",
|
||
" else [opts.data_distribution]\n",
|
||
" }\n",
|
||
"\n",
|
||
" for problem, distributions in problems.items():\n",
|
||
" for distribution in distributions or [None]:\n",
|
||
" for graph_size in opts.graph_sizes:\n",
|
||
"\n",
|
||
" datadir = os.path.join(opts.data_dir, problem)\n",
|
||
" os.makedirs(datadir, exist_ok=True)\n",
|
||
"\n",
|
||
" if opts.filename is None:\n",
|
||
" filename = os.path.join(datadir, \"{}{}{}_{}_seed{}.pkl\".format(\n",
|
||
" problem,\n",
|
||
" \"_{}\".format(distribution) if distribution is not None else \"\",\n",
|
||
" graph_size, opts.name, opts.seed))\n",
|
||
" else:\n",
|
||
" filename = check_extension(opts.filename)\n",
|
||
"\n",
|
||
" assert opts.f or not os.path.isfile(check_extension(filename)), \\\n",
|
||
" \"File already exists! Try running with -f option to overwrite.\"\n",
|
||
"\n",
|
||
" np.random.seed(opts.seed)\n",
|
||
" if problem == 'tsp':\n",
|
||
" dataset = generate_tsp_data(opts.dataset_size, graph_size)\n",
|
||
" elif problem == 'vrp':\n",
|
||
" dataset = generate_vrp_data(\n",
|
||
" opts.dataset_size, graph_size)\n",
|
||
" elif problem == 'pctsp':\n",
|
||
" dataset = generate_pctsp_data(opts.dataset_size, graph_size)\n",
|
||
" elif problem == \"op\":\n",
|
||
" dataset = generate_op_data(opts.dataset_size, graph_size, prize_type=distribution)\n",
|
||
" else:\n",
|
||
" assert False, \"Unknown problem: {}\".format(problem)\n",
|
||
"\n",
|
||
" print(dataset[0])\n",
|
||
"\n",
|
||
" save_dataset(dataset, filename)"
|
||
],
|
||
"execution_count": 0,
|
||
"outputs": [
|
||
{
|
||
"output_type": "stream",
|
||
"text": [
|
||
"Overwriting generate_data.py\n"
|
||
],
|
||
"name": "stdout"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"metadata": {
|
||
"id": "tmN4OChGUUYT",
|
||
"colab_type": "code",
|
||
"outputId": "08cf6cc9-2728-4286-9933-bcef30a355bf",
|
||
"colab": {
|
||
"base_uri": "https://localhost:8080/",
|
||
"height": 54
|
||
}
|
||
},
|
||
"source": [
|
||
"!python generate_data.py --problem tsp --graph_size 50 --name exp --seed 1234\n"
|
||
],
|
||
"execution_count": 0,
|
||
"outputs": [
|
||
{
|
||
"output_type": "stream",
|
||
"text": [
|
||
"[[0.0648326217486951, 0.20000194593085394], [0.17892479486847918, 0.31706846852557735], [0.4736812490623627, 0.06446541187677791], [0.09970603374366134, 0.33363725052333143], [0.9949890006177275, 0.4305144740577369], [0.13717763835115243, 0.1424640427612378], [0.35942181891866704, 0.25672793525688753], [0.1433197566207477, 0.16907202541562075], [0.2177430117076497, 0.001464697891078936], [0.4636357954821873, 0.44201932377572994], [0.14065482811304725, 0.19635785733379146], [0.022665070657763353, 0.09383398526421036], [0.8478844476462812, 0.21668707392525388], [0.1570611054629279, 0.3203452326172691], [0.11774335755851065, 0.172353482558476], [0.6368894053753339, 0.11718737423608672], [0.507049774289008, 0.030718709118311188], [0.38077278348636967, 0.25095908060501215], [0.07561298456127859, 0.5343219792063392], [0.18140018772200828, 0.4953858991849524], [0.01741825395965375, 0.04075237052708683], [0.013284204578148438, 0.23113240145815553], [0.2817081802250816, 0.15632047554394604], [0.011957625292110934, 0.1691837877257514], [0.12370048476295743, 0.14328343452808215], [0.035322652161935274, 0.1919903349091757], [0.26023279979391406, 0.0], [0.2999078879119966, 0.5018932530884319], [0.4891154080694642, 1.0], [1.0, 0.3235378087128063], [0.10354453700683997, 0.20154554004408018], [0.20232888177703282, 0.043662133038917035], [0.14939775403959923, 0.010056817770853127], [0.1868005321494423, 0.8301029289114827], [0.039613787048700604, 0.024906658798638594], [0.4194552190104518, 0.1817672461884323], [0.1984634708819518, 0.02204654843659526], [0.07983412724924892, 0.4750751336093262], [0.1674192514829645, 0.15745063929554987], [0.0, 0.07260395532781265], [0.17845884658484637, 0.19461781241056617], [0.7845187371499512, 0.2019984762076166], [0.38262296030927256, 0.03219038372928642], [0.4286479002815888, 0.3665558930371133], [0.3135732715543529, 0.1179730931882967], [0.05005210196664196, 0.17250254714153965], [0.23405366750698725, 0.6246037408256919], [0.20369547343525793, 0.14311391749480656], [0.23986982813096228, 0.3525811414091646], [0.01651950450699116, 0.2276860455708839]]\n"
|
||
],
|
||
"name": "stdout"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {
|
||
"id": "aUt6W0NYeTln",
|
||
"colab_type": "text"
|
||
},
|
||
"source": [
|
||
"# BENCHMARK"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"metadata": {
|
||
"id": "HuXDuFLbxL_g",
|
||
"colab_type": "code",
|
||
"colab": {}
|
||
},
|
||
"source": [
|
||
"### At this point, you need to upload trained respective models to folders pretrained/tsp50_normal, pretrained/tsp50_exp\n",
|
||
"\n",
|
||
"#### Please see README for directions to train models using data from normal and exponential distributions"
|
||
],
|
||
"execution_count": 0,
|
||
"outputs": []
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {
|
||
"id": "V5fDeQuSgGKe",
|
||
"colab_type": "text"
|
||
},
|
||
"source": [
|
||
"## model trained by uniform data"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"metadata": {
|
||
"id": "-2hVCLP3_-c9",
|
||
"colab_type": "code",
|
||
"colab": {}
|
||
},
|
||
"source": [
|
||
"### greedy"
|
||
],
|
||
"execution_count": 0,
|
||
"outputs": []
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"metadata": {
|
||
"id": "IELPRiIudurj",
|
||
"colab_type": "code",
|
||
"outputId": "b7b83973-91e4-4ffa-d071-c1c1e3c732a7",
|
||
"colab": {
|
||
"base_uri": "https://localhost:8080/",
|
||
"height": 118
|
||
}
|
||
},
|
||
"source": [
|
||
"!python -W ignore eval.py data/tsp/tsp50_uni_seed1234.pkl --model pretrained/tsp_50 --decode_strategy greedy\n"
|
||
],
|
||
"execution_count": 0,
|
||
"outputs": [
|
||
{
|
||
"output_type": "stream",
|
||
"text": [
|
||
" [*] Loading model from pretrained/tsp_50/epoch-99.pt\n",
|
||
"100% 10/10 [00:01<00:00, 6.46it/s]\n",
|
||
"Average cost: 5.790307998657227 +- 0.00547049343585968\n",
|
||
"Average serial duration: 0.17067301559448242 +- 0.0013563416490441696\n",
|
||
"Average parallel duration: 0.00016667286679148674\n",
|
||
"Calculated total duration: 0:00:01\n"
|
||
],
|
||
"name": "stdout"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"metadata": {
|
||
"id": "Ps9cjngFdu24",
|
||
"colab_type": "code",
|
||
"outputId": "571303fb-7991-4d58-cabc-9c684a5de2a2",
|
||
"colab": {
|
||
"base_uri": "https://localhost:8080/",
|
||
"height": 118
|
||
}
|
||
},
|
||
"source": [
|
||
"!python -W ignore eval.py data/tsp/tsp50_normal_seed1234.pkl --model pretrained/tsp_50 --decode_strategy greedy\n"
|
||
],
|
||
"execution_count": 0,
|
||
"outputs": [
|
||
{
|
||
"output_type": "stream",
|
||
"text": [
|
||
" [*] Loading model from pretrained/tsp_50/epoch-99.pt\n",
|
||
"100% 10/10 [00:01<00:00, 6.93it/s]\n",
|
||
"Average cost: 5.464256763458252 +- 0.006131308078765869\n",
|
||
"Average serial duration: 0.14702246856689452 +- 0.0001483013366301723\n",
|
||
"Average parallel duration: 0.00014357662945985793\n",
|
||
"Calculated total duration: 0:00:01\n"
|
||
],
|
||
"name": "stdout"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"metadata": {
|
||
"id": "TPL33tSOf9lz",
|
||
"colab_type": "code",
|
||
"outputId": "93d3ff78-e8e8-4375-83ad-00501ec63a41",
|
||
"colab": {
|
||
"base_uri": "https://localhost:8080/",
|
||
"height": 118
|
||
}
|
||
},
|
||
"source": [
|
||
"!python -W ignore eval.py data/tsp/tsp50_exp_seed1234.pkl --model pretrained/tsp_50 --decode_strategy greedy\n"
|
||
],
|
||
"execution_count": 0,
|
||
"outputs": [
|
||
{
|
||
"output_type": "stream",
|
||
"text": [
|
||
" [*] Loading model from pretrained/tsp_50/epoch-99.pt\n",
|
||
"100% 10/10 [00:01<00:00, 6.87it/s]\n",
|
||
"Average cost: 4.970943450927734 +- 0.00667491614818573\n",
|
||
"Average serial duration: 0.14891490631103516 +- 0.00015524930235285626\n",
|
||
"Average parallel duration: 0.00014542471319437027\n",
|
||
"Calculated total duration: 0:00:01\n"
|
||
],
|
||
"name": "stdout"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {
|
||
"id": "pj0vm4TNADIe",
|
||
"colab_type": "text"
|
||
},
|
||
"source": [
|
||
"### sampling"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"metadata": {
|
||
"id": "HE0eqvcL_oxt",
|
||
"colab_type": "code",
|
||
"outputId": "39ba01b0-fda8-4e4f-c202-fe5bb029cacb",
|
||
"colab": {
|
||
"base_uri": "https://localhost:8080/",
|
||
"height": 609
|
||
}
|
||
},
|
||
"source": [
|
||
"!python -W ignore eval.py data/tsp/tsp50_uni_seed1234.pkl --model pretrained/tsp_50 --decode_strategy sample --width 1280 --eval_batch_size 1\n"
|
||
],
|
||
"execution_count": 0,
|
||
"outputs": [
|
||
{
|
||
"output_type": "stream",
|
||
"text": [
|
||
" [*] Loading model from pretrained/tsp_50/epoch-99.pt\n",
|
||
"Traceback (most recent call last):\n",
|
||
" File \"eval.py\", line 216, in <module>\n",
|
||
" eval_dataset(dataset_path, width, opts.softmax_temperature, opts)\n",
|
||
" File \"eval.py\", line 70, in eval_dataset\n",
|
||
" results = _eval_dataset(model, dataset, width, softmax_temp, opts, device)\n",
|
||
" File \"eval.py\", line 108, in _eval_dataset\n",
|
||
" model.to(device)\n",
|
||
" File \"/usr/local/lib/python3.6/dist-packages/torch/nn/modules/module.py\", line 426, in to\n",
|
||
" return self._apply(convert)\n",
|
||
" File \"/usr/local/lib/python3.6/dist-packages/torch/nn/modules/module.py\", line 202, in _apply\n",
|
||
" module._apply(fn)\n",
|
||
" File \"/usr/local/lib/python3.6/dist-packages/torch/nn/modules/module.py\", line 224, in _apply\n",
|
||
" param_applied = fn(param)\n",
|
||
" File \"/usr/local/lib/python3.6/dist-packages/torch/nn/modules/module.py\", line 424, in convert\n",
|
||
" return t.to(device, dtype if t.is_floating_point() else None, non_blocking)\n",
|
||
"KeyboardInterrupt\n"
|
||
],
|
||
"name": "stdout"
|
||
},
|
||
{
|
||
"output_type": "error",
|
||
"ename": "KeyboardInterrupt",
|
||
"evalue": "ignored",
|
||
"traceback": [
|
||
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
|
||
"\u001b[0;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)",
|
||
"\u001b[0;32m<ipython-input-33-1eaa4d9132c5>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mget_ipython\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msystem\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'python -W ignore eval.py data/tsp/tsp50_uni_seed1234.pkl --model pretrained/tsp_50 --decode_strategy sample --width 1280 --eval_batch_size 1'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
|
||
"\u001b[0;32m/usr/local/lib/python3.6/dist-packages/google/colab/_shell.py\u001b[0m in \u001b[0;36msystem\u001b[0;34m(self, *args, **kwargs)\u001b[0m\n\u001b[1;32m 94\u001b[0m \u001b[0mkwargs\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mupdate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m{\u001b[0m\u001b[0;34m'also_return_output'\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;32mTrue\u001b[0m\u001b[0;34m}\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 95\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 96\u001b[0;31m \u001b[0moutput\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0m_system_commands\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_system_compat\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;31m# pylint:disable=protected-access\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 97\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 98\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mpip_warn\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
|
||
"\u001b[0;32m/usr/local/lib/python3.6/dist-packages/google/colab/_system_commands.py\u001b[0m in \u001b[0;36m_system_compat\u001b[0;34m(shell, cmd, also_return_output)\u001b[0m\n\u001b[1;32m 436\u001b[0m \u001b[0;31m# stack.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 437\u001b[0m result = _run_command(\n\u001b[0;32m--> 438\u001b[0;31m shell.var_expand(cmd, depth=2), clear_streamed_output=False)\n\u001b[0m\u001b[1;32m 439\u001b[0m \u001b[0mshell\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0muser_ns\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'_exit_code'\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mresult\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mreturncode\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 440\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0;34m-\u001b[0m\u001b[0mresult\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mreturncode\u001b[0m \u001b[0;32min\u001b[0m \u001b[0m_INTERRUPTED_SIGNALS\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
|
||
"\u001b[0;32m/usr/local/lib/python3.6/dist-packages/google/colab/_system_commands.py\u001b[0m in \u001b[0;36m_run_command\u001b[0;34m(cmd, clear_streamed_output)\u001b[0m\n\u001b[1;32m 193\u001b[0m \u001b[0mos\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mclose\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mchild_pty\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 194\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 195\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0m_monitor_process\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mparent_pty\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mepoll\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mp\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mcmd\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mupdate_stdin_widget\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 196\u001b[0m \u001b[0;32mfinally\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 197\u001b[0m \u001b[0mepoll\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mclose\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
|
||
"\u001b[0;32m/usr/lib/python3.6/contextlib.py\u001b[0m in \u001b[0;36m__exit__\u001b[0;34m(self, type, value, traceback)\u001b[0m\n\u001b[1;32m 86\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mtype\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 87\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 88\u001b[0;31m \u001b[0mnext\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mgen\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 89\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mStopIteration\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 90\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0;32mFalse\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
|
||
"\u001b[0;32m/usr/local/lib/python3.6/dist-packages/google/colab/_system_commands.py\u001b[0m in \u001b[0;36m_display_stdin_widget\u001b[0;34m(delay_millis)\u001b[0m\n\u001b[1;32m 353\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 354\u001b[0m \u001b[0mhide_args\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;34m'cell_remove_stdin'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m{\u001b[0m\u001b[0;34m}\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 355\u001b[0;31m \u001b[0m_message\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mblocking_request\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0mhide_args\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mparent\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mshell\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mparent_header\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 356\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 357\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
|
||
"\u001b[0;32m/usr/local/lib/python3.6/dist-packages/google/colab/_message.py\u001b[0m in \u001b[0;36mblocking_request\u001b[0;34m(request_type, request, timeout_sec, parent)\u001b[0m\n\u001b[1;32m 169\u001b[0m \u001b[0;31m# unique.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 170\u001b[0m \u001b[0mrequest_id\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0msend_request\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mrequest_type\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mrequest\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mparent\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mparent\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 171\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mread_reply_from_input\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mrequest_id\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtimeout_sec\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
|
||
"\u001b[0;32m/usr/local/lib/python3.6/dist-packages/google/colab/_message.py\u001b[0m in \u001b[0;36mread_reply_from_input\u001b[0;34m(message_id, timeout_sec)\u001b[0m\n\u001b[1;32m 99\u001b[0m \u001b[0mreply\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0m_read_next_input_message\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 100\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mreply\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0m_NOT_READY\u001b[0m \u001b[0;32mor\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0misinstance\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mreply\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdict\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 101\u001b[0;31m \u001b[0mtime\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msleep\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m0.025\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 102\u001b[0m \u001b[0;32mcontinue\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 103\u001b[0m if (reply.get('type') == 'colab_reply' and\n",
|
||
"\u001b[0;31mKeyboardInterrupt\u001b[0m: "
|
||
]
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"metadata": {
|
||
"id": "8B1ywsZx_pB1",
|
||
"colab_type": "code",
|
||
"colab": {}
|
||
},
|
||
"source": [
|
||
"!python -W ignore eval.py data/tsp/tsp50_normal_seed1234.pkl --model pretrained/tsp_50 --decode_strategy sample --width 1280 --eval_batch_size 1\n"
|
||
],
|
||
"execution_count": 0,
|
||
"outputs": []
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"metadata": {
|
||
"id": "fa5WVmcy_ouI",
|
||
"colab_type": "code",
|
||
"colab": {}
|
||
},
|
||
"source": [
|
||
"!python -W ignore eval.py data/tsp/tsp50_exp_seed1234.pkl --model pretrained/tsp_50 --decode_strategy sample --width 1280 --eval_batch_size 1\n"
|
||
],
|
||
"execution_count": 0,
|
||
"outputs": []
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {
|
||
"id": "DPKvO0BLAH6p",
|
||
"colab_type": "text"
|
||
},
|
||
"source": [
|
||
"### beam "
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"metadata": {
|
||
"id": "HLO3GbXRAJaI",
|
||
"colab_type": "code",
|
||
"outputId": "ab37ed11-ce49-462c-fca6-39673077e7ed",
|
||
"colab": {
|
||
"base_uri": "https://localhost:8080/",
|
||
"height": 118
|
||
}
|
||
},
|
||
"source": [
|
||
"!python -W ignore eval.py data/tsp/tsp50_uni_seed1234.pkl --model pretrained/tsp_50 --decode_strategy bs --width 1280"
|
||
],
|
||
"execution_count": 0,
|
||
"outputs": [
|
||
{
|
||
"output_type": "stream",
|
||
"text": [
|
||
" [*] Loading model from pretrained/tsp_50/epoch-99.pt\n",
|
||
"100% 10/10 [28:33<00:00, 163.04s/it]\n",
|
||
"Average cost: 5.712504863739014 +- 0.005121081471443177\n",
|
||
"Average serial duration: 172.1905626197815 +- 0.2216277528338009\n",
|
||
"Average parallel duration: 0.16815484630838037\n",
|
||
"Calculated total duration: 0:28:01\n"
|
||
],
|
||
"name": "stdout"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"metadata": {
|
||
"id": "uTNC_4ffAJrS",
|
||
"colab_type": "code",
|
||
"outputId": "d3ea8305-a7db-4d8d-f54a-65ecfb92f249",
|
||
"colab": {
|
||
"base_uri": "https://localhost:8080/",
|
||
"height": 118
|
||
}
|
||
},
|
||
"source": [
|
||
"!python -W ignore eval.py data/tsp/tsp50_normal_seed1234.pkl --model pretrained/tsp_50 --decode_strategy bs --width 1280\n"
|
||
],
|
||
"execution_count": 0,
|
||
"outputs": [
|
||
{
|
||
"output_type": "stream",
|
||
"text": [
|
||
" [*] Loading model from pretrained/tsp_50/epoch-99.pt\n",
|
||
"100% 10/10 [28:34<00:00, 163.14s/it]\n",
|
||
"Average cost: 5.355941295623779 +- 0.0058979040384292605\n",
|
||
"Average serial duration: 172.30156861228943 +- 0.2218609635298895\n",
|
||
"Average parallel duration: 0.1682632505979389\n",
|
||
"Calculated total duration: 0:28:02\n"
|
||
],
|
||
"name": "stdout"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"metadata": {
|
||
"id": "w0E_L9W9AJz6",
|
||
"colab_type": "code",
|
||
"outputId": "f1bd03b8-1ccb-49ab-b984-01a187ab550c",
|
||
"colab": {
|
||
"base_uri": "https://localhost:8080/",
|
||
"height": 118
|
||
}
|
||
},
|
||
"source": [
|
||
"!python -W ignore eval.py data/tsp/tsp50_exp_seed1234.pkl --model pretrained/tsp_50 --decode_strategy bs --width 1280"
|
||
],
|
||
"execution_count": 0,
|
||
"outputs": [
|
||
{
|
||
"output_type": "stream",
|
||
"text": [
|
||
" [*] Loading model from pretrained/tsp_50/epoch-99.pt\n",
|
||
"100% 10/10 [28:33<00:00, 163.09s/it]\n",
|
||
"Average cost: 4.859969139099121 +- 0.006258894801139832\n",
|
||
"Average serial duration: 172.24343769416808 +- 0.22165062462430957\n",
|
||
"Average parallel duration: 0.16820648212321102\n",
|
||
"Calculated total duration: 0:28:02\n"
|
||
],
|
||
"name": "stdout"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {
|
||
"id": "uNSfaHLsgQ2-",
|
||
"colab_type": "text"
|
||
},
|
||
"source": [
|
||
"## model trained by normal data"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {
|
||
"id": "MAW4msm7EDlE",
|
||
"colab_type": "text"
|
||
},
|
||
"source": [
|
||
"### greedy"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"metadata": {
|
||
"id": "qld2zSjygUAM",
|
||
"colab_type": "code",
|
||
"outputId": "9e2d7182-3c1a-455a-9ab8-3c9f06c24b6a",
|
||
"colab": {
|
||
"base_uri": "https://localhost:8080/",
|
||
"height": 118
|
||
}
|
||
},
|
||
"source": [
|
||
"!python -W ignore eval.py data/tsp/tsp50_uni_seed1234.pkl --model pretrained/tsp50_normal --decode_strategy greedy"
|
||
],
|
||
"execution_count": 0,
|
||
"outputs": [
|
||
{
|
||
"output_type": "stream",
|
||
"text": [
|
||
" [*] Loading model from pretrained/tsp50_normal/epoch-99.pt\n",
|
||
"100% 10/10 [00:01<00:00, 6.44it/s]\n",
|
||
"Average cost: 5.83931827545166 +- 0.005647162795066833\n",
|
||
"Average serial duration: 0.17155591316223145 +- 0.0013278416777792222\n",
|
||
"Average parallel duration: 0.00016753507144749166\n",
|
||
"Calculated total duration: 0:00:01\n"
|
||
],
|
||
"name": "stdout"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"metadata": {
|
||
"id": "R41nBtKgggJe",
|
||
"colab_type": "code",
|
||
"outputId": "befedd84-965a-43cd-8cf5-bb8e0b20fb82",
|
||
"colab": {
|
||
"base_uri": "https://localhost:8080/",
|
||
"height": 118
|
||
}
|
||
},
|
||
"source": [
|
||
"!python -W ignore eval.py data/tsp/tsp50_normal_seed1234.pkl --model pretrained/tsp50_normal --decode_strategy greedy"
|
||
],
|
||
"execution_count": 0,
|
||
"outputs": [
|
||
{
|
||
"output_type": "stream",
|
||
"text": [
|
||
" [*] Loading model from pretrained/tsp50_normal/epoch-99.pt\n",
|
||
"100% 10/10 [00:01<00:00, 6.59it/s]\n",
|
||
"Average cost: 5.456946849822998 +- 0.006322169899940491\n",
|
||
"Average serial duration: 0.15520575637817383 +- 0.00018022133770051756\n",
|
||
"Average parallel duration: 0.00015156812146306038\n",
|
||
"Calculated total duration: 0:00:01\n"
|
||
],
|
||
"name": "stdout"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"metadata": {
|
||
"id": "oGnO_PUJggGc",
|
||
"colab_type": "code",
|
||
"outputId": "a3aa65a6-7408-4517-e585-73c20443c39d",
|
||
"colab": {
|
||
"base_uri": "https://localhost:8080/",
|
||
"height": 118
|
||
}
|
||
},
|
||
"source": [
|
||
"!python -W ignore eval.py data/tsp/tsp50_exp_seed1234.pkl --model pretrained/tsp50_normal --decode_strategy greedy"
|
||
],
|
||
"execution_count": 0,
|
||
"outputs": [
|
||
{
|
||
"output_type": "stream",
|
||
"text": [
|
||
" [*] Loading model from pretrained/tsp50_normal/epoch-99.pt\n",
|
||
"100% 10/10 [00:01<00:00, 6.75it/s]\n",
|
||
"Average cost: 4.950140953063965 +- 0.006845551133155822\n",
|
||
"Average serial duration: 0.15149675369262694 +- 0.0001660719194755531\n",
|
||
"Average parallel duration: 0.000147946048527956\n",
|
||
"Calculated total duration: 0:00:01\n"
|
||
],
|
||
"name": "stdout"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {
|
||
"id": "Ta-smEmcEG8d",
|
||
"colab_type": "text"
|
||
},
|
||
"source": [
|
||
"### sampling"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"metadata": {
|
||
"id": "fuNRsji8EHL-",
|
||
"colab_type": "code",
|
||
"outputId": "66031786-0cb5-4a91-f23c-5cd55ec3f861",
|
||
"colab": {
|
||
"base_uri": "https://localhost:8080/",
|
||
"height": 235
|
||
}
|
||
},
|
||
"source": [
|
||
"!python -W ignore eval.py data/tsp/tsp50_uni_seed1234.pkl --model pretrained/tsp50_normal --decode_strategy sample --width 1280 --eval_batch_size 1\n"
|
||
],
|
||
"execution_count": 0,
|
||
"outputs": [
|
||
{
|
||
"output_type": "stream",
|
||
"text": [
|
||
"Traceback (most recent call last):\n",
|
||
" File \"eval.py\", line 216, in <module>\n",
|
||
" File \"eval.py\", line 54, in eval_dataset\n",
|
||
" model, _ = load_model(opts.model)\n",
|
||
" File \"/content/attention-learn-to-route/utils/functions.py\", line 120, in load_model\n",
|
||
" load_data = torch_load_cpu(model_filename)\n",
|
||
" File \"/content/attention-learn-to-route/utils/functions.py\", line 28, in torch_load_cpu\n",
|
||
" return torch.load(load_path, map_location=lambda storage, loc: storage) # Load on CPU\n",
|
||
" File \"/usr/local/lib/python3.6/dist-packages/torch/serialization.py\", line 426, in load\n",
|
||
" return _load(f, map_location, pickle_module, **pickle_load_args)\n",
|
||
" File \"/usr/local/lib/python3.6/dist-packages/torch/serialization.py\", line 620, in _load\n",
|
||
" deserialized_objects[key]._set_from_file(f, offset, f_should_read_directly)\n",
|
||
"KeyboardInterrupt\n"
|
||
],
|
||
"name": "stdout"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"metadata": {
|
||
"id": "4Hl7BLZHEHQ9",
|
||
"colab_type": "code",
|
||
"outputId": "90d22160-16b6-4082-c927-484f16fe9960",
|
||
"colab": {
|
||
"base_uri": "https://localhost:8080/",
|
||
"height": 50
|
||
}
|
||
},
|
||
"source": [
|
||
"!python -W ignore eval.py data/tsp/tsp50_normal_seed1234.pkl --model pretrained/tsp50_normal --decode_strategy sample --width 1280 --eval_batch_size 1\n"
|
||
],
|
||
"execution_count": 0,
|
||
"outputs": [
|
||
{
|
||
"output_type": "stream",
|
||
"text": [
|
||
" [*] Loading model from pretrained/tsp50_normal/epoch-99.pt\n",
|
||
"^C\n"
|
||
],
|
||
"name": "stdout"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"metadata": {
|
||
"id": "u1vVVWweEHJA",
|
||
"colab_type": "code",
|
||
"outputId": "cf2a4958-0187-47a9-af3f-74482924e09c",
|
||
"colab": {
|
||
"base_uri": "https://localhost:8080/",
|
||
"height": 202
|
||
}
|
||
},
|
||
"source": [
|
||
"!python -W ignore eval.py data/tsp/tsp50_exp_seed1234.pkl --model pretrained/tsp50_normal --decode_strategy sample --width 1280 --eval_batch_size 1\n"
|
||
],
|
||
"execution_count": 0,
|
||
"outputs": [
|
||
{
|
||
"output_type": "stream",
|
||
"text": [
|
||
" [*] Loading model from pretrained/tsp50_normal/epoch-99.pt\n",
|
||
"Traceback (most recent call last):\n",
|
||
" File \"eval.py\", line 216, in <module>\n",
|
||
" eval_dataset(dataset_path, width, opts.softmax_temperature, opts)\n",
|
||
" File \"eval.py\", line 69, in eval_dataset\n",
|
||
" dataset = model.problem.make_dataset(filename=dataset_path, num_samples=opts.val_size, offset=opts.offset)\n",
|
||
" File \"/content/attention-learn-to-route/problems/tsp/problem_tsp.py\", line 29, in make_dataset\n",
|
||
" return TSPDataset(*args, **kwargs)\n",
|
||
" File \"/content/attention-learn-to-route/problems/tsp/problem_tsp.py\", line 65, in __init__\n",
|
||
" data = pickle.load(f)\n",
|
||
"KeyboardInterrupt\n"
|
||
],
|
||
"name": "stdout"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {
|
||
"id": "W71aiXsxEV0l",
|
||
"colab_type": "text"
|
||
},
|
||
"source": [
|
||
"### beam search"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"metadata": {
|
||
"id": "S_xSqUIaEV7s",
|
||
"colab_type": "code",
|
||
"outputId": "54791abf-5a6d-42a7-9c82-9ee2e759aa36",
|
||
"colab": {
|
||
"base_uri": "https://localhost:8080/",
|
||
"height": 34
|
||
}
|
||
},
|
||
"source": [
|
||
"!python -W ignore eval.py data/tsp/tsp50_uni_seed1234.pkl --model pretrained/tsp50_normal --decode_strategy bs --width 1280"
|
||
],
|
||
"execution_count": 0,
|
||
"outputs": [
|
||
{
|
||
"output_type": "stream",
|
||
"text": [
|
||
"python3: can't open file 'eval.py': [Errno 2] No such file or directory\n"
|
||
],
|
||
"name": "stdout"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"metadata": {
|
||
"id": "64-5Hp2LEWEd",
|
||
"colab_type": "code",
|
||
"colab": {}
|
||
},
|
||
"source": [
|
||
"!python -W ignore eval.py data/tsp/tsp50_normal_seed1234.pkl --model pretrained/tsp50_normal --decode_strategy bs --width 1280"
|
||
],
|
||
"execution_count": 0,
|
||
"outputs": []
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"metadata": {
|
||
"id": "gUU0cNUhEWCA",
|
||
"colab_type": "code",
|
||
"colab": {}
|
||
},
|
||
"source": [
|
||
"!python -W ignore eval.py data/tsp/tsp50_exp_seed1234.pkl --model pretrained/tsp50_normal --decode_strategy bs --width 1280"
|
||
],
|
||
"execution_count": 0,
|
||
"outputs": []
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {
|
||
"id": "lzs3KcDxgpO2",
|
||
"colab_type": "text"
|
||
},
|
||
"source": [
|
||
"## model trained by exp data"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {
|
||
"id": "lnCHkTaiEjs-",
|
||
"colab_type": "text"
|
||
},
|
||
"source": [
|
||
"### greedy"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"metadata": {
|
||
"id": "z-8Ml4Q1grP5",
|
||
"colab_type": "code",
|
||
"outputId": "ee047e51-f80f-442a-899e-45f7937b3391",
|
||
"colab": {
|
||
"base_uri": "https://localhost:8080/",
|
||
"height": 218
|
||
}
|
||
},
|
||
"source": [
|
||
"!python -W ignore eval.py data/tsp/tsp50_uni_seed1234.pkl --model pretrained/tsp50_exp --decode_strategy greedy"
|
||
],
|
||
"execution_count": 0,
|
||
"outputs": [
|
||
{
|
||
"output_type": "stream",
|
||
"text": [
|
||
" [*] Loading model from pretrained/tsp50_exp/epoch-99.pt\n",
|
||
"100% 10/10 [00:01<00:00, 6.77it/s]\n",
|
||
"Average cost: 5.966853141784668 +- 0.008427996635437012\n",
|
||
"Average serial duration: 0.15056362113952637 +- 0.00016954486007176906\n",
|
||
"Average parallel duration: 0.00014703478626906872\n",
|
||
"Calculated total duration: 0:00:01\n",
|
||
"Traceback (most recent call last):\n",
|
||
" File \"eval.py\", line 216, in <module>\n",
|
||
" eval_dataset(dataset_path, width, opts.softmax_temperature, opts)\n",
|
||
" File \"eval.py\", line 99, in eval_dataset\n",
|
||
" out_file), \"File already exists! Try running with -f option to overwrite.\"\n",
|
||
"AssertionError: File already exists! Try running with -f option to overwrite.\n"
|
||
],
|
||
"name": "stdout"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"metadata": {
|
||
"id": "kzPRi0cLgrOL",
|
||
"colab_type": "code",
|
||
"outputId": "5e31d847-bdb1-43b7-c7d2-d2d3ae9e2039",
|
||
"colab": {
|
||
"base_uri": "https://localhost:8080/",
|
||
"height": 218
|
||
}
|
||
},
|
||
"source": [
|
||
"!python -W ignore eval.py data/tsp/tsp50_normal_seed1234.pkl --model pretrained/tsp50_exp --decode_strategy greedy"
|
||
],
|
||
"execution_count": 0,
|
||
"outputs": [
|
||
{
|
||
"output_type": "stream",
|
||
"text": [
|
||
" [*] Loading model from pretrained/tsp50_exp/epoch-99.pt\n",
|
||
"100% 10/10 [00:01<00:00, 6.77it/s]\n",
|
||
"Average cost: 5.920501232147217 +- 0.024558398723602295\n",
|
||
"Average serial duration: 0.1510557460784912 +- 0.000174060727448626\n",
|
||
"Average parallel duration: 0.00014751537702977657\n",
|
||
"Calculated total duration: 0:00:01\n",
|
||
"Traceback (most recent call last):\n",
|
||
" File \"eval.py\", line 216, in <module>\n",
|
||
" eval_dataset(dataset_path, width, opts.softmax_temperature, opts)\n",
|
||
" File \"eval.py\", line 99, in eval_dataset\n",
|
||
" out_file), \"File already exists! Try running with -f option to overwrite.\"\n",
|
||
"AssertionError: File already exists! Try running with -f option to overwrite.\n"
|
||
],
|
||
"name": "stdout"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"metadata": {
|
||
"id": "2JzjqbqagrKu",
|
||
"colab_type": "code",
|
||
"outputId": "78c65ce9-e18b-4318-e52d-5d22ab512804",
|
||
"colab": {
|
||
"base_uri": "https://localhost:8080/",
|
||
"height": 218
|
||
}
|
||
},
|
||
"source": [
|
||
"!python -W ignore eval.py data/tsp/tsp50_exp_seed1234.pkl --model pretrained/tsp50_exp --decode_strategy greedy"
|
||
],
|
||
"execution_count": 0,
|
||
"outputs": [
|
||
{
|
||
"output_type": "stream",
|
||
"text": [
|
||
" [*] Loading model from pretrained/tsp50_exp/epoch-99.pt\n",
|
||
"100% 10/10 [00:01<00:00, 6.88it/s]\n",
|
||
"Average cost: 4.858183860778809 +- 0.006778181195259094\n",
|
||
"Average serial duration: 0.14898428916931153 +- 0.00014569734468097037\n",
|
||
"Average parallel duration: 0.0001454924698919058\n",
|
||
"Calculated total duration: 0:00:01\n",
|
||
"Traceback (most recent call last):\n",
|
||
" File \"eval.py\", line 216, in <module>\n",
|
||
" eval_dataset(dataset_path, width, opts.softmax_temperature, opts)\n",
|
||
" File \"eval.py\", line 99, in eval_dataset\n",
|
||
" out_file), \"File already exists! Try running with -f option to overwrite.\"\n",
|
||
"AssertionError: File already exists! Try running with -f option to overwrite.\n"
|
||
],
|
||
"name": "stdout"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {
|
||
"id": "TRhg6WZDEmoJ",
|
||
"colab_type": "text"
|
||
},
|
||
"source": [
|
||
"### sampling"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"metadata": {
|
||
"id": "CmU6Q-geEnCF",
|
||
"colab_type": "code",
|
||
"outputId": "68821814-086f-4da7-a162-eafdb0a0edd7",
|
||
"colab": {
|
||
"base_uri": "https://localhost:8080/",
|
||
"height": 269
|
||
}
|
||
},
|
||
"source": [
|
||
"!python -W ignore eval.py data/tsp/tsp50_uni_seed1234.pkl --model pretrained/tsp50_exp --decode_strategy sample --width 1280 --eval_batch_size 1"
|
||
],
|
||
"execution_count": 0,
|
||
"outputs": [
|
||
{
|
||
"output_type": "stream",
|
||
"text": [
|
||
" [*] Loading model from pretrained/tsp50_exp/epoch-99.pt\n",
|
||
" 3% 332/10000 [00:48<23:44, 6.79it/s]\n",
|
||
"Exception ignored in: <bound method tqdm.__del__ of 3% 332/10000 [00:48<23:44, 6.79it/s]>\n",
|
||
"Traceback (most recent call last):\n",
|
||
" File \"/usr/local/lib/python3.6/dist-packages/tqdm/_tqdm.py\", line 931, in __del__\n",
|
||
" self.close()\n",
|
||
" File \"/usr/local/lib/python3.6/dist-packages/tqdm/_tqdm.py\", line 1133, in close\n",
|
||
" self._decr_instances(self)\n",
|
||
" File \"/usr/local/lib/python3.6/dist-packages/tqdm/_tqdm.py\", line 496, in _decr_instances\n",
|
||
" cls.monitor.exit()\n",
|
||
" File \"/usr/local/lib/python3.6/dist-packages/tqdm/_monitor.py\", line 52, in exit\n",
|
||
" self.join()\n",
|
||
" File \"/usr/lib/python3.6/threading.py\", line 1053, in join\n",
|
||
" raise RuntimeError(\"cannot join current thread\")\n",
|
||
"RuntimeError: cannot join current thread\n"
|
||
],
|
||
"name": "stdout"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"metadata": {
|
||
"id": "MABWsM1eEnI4",
|
||
"colab_type": "code",
|
||
"outputId": "6a37d787-ebf6-4b52-9c17-c1e6ffc07460",
|
||
"colab": {
|
||
"base_uri": "https://localhost:8080/",
|
||
"height": 588
|
||
}
|
||
},
|
||
"source": [
|
||
"!python -W ignore eval.py data/tsp/tsp50_normal_seed1234.pkl --model pretrained/tsp50_exp --decode_strategy sample --width 1280 --eval_batch_size 1"
|
||
],
|
||
"execution_count": 0,
|
||
"outputs": [
|
||
{
|
||
"output_type": "stream",
|
||
"text": [
|
||
" [*] Loading model from pretrained/tsp50_exp/epoch-99.pt\n",
|
||
" 2% 215/10000 [00:31<23:50, 6.84it/s]Traceback (most recent call last):\n",
|
||
" File \"eval.py\", line 216, in <module>\n",
|
||
" eval_dataset(dataset_path, width, opts.softmax_temperature, opts)\n",
|
||
" File \"eval.py\", line 70, in eval_dataset\n",
|
||
" results = _eval_dataset(model, dataset, width, softmax_temp, opts, device)\n",
|
||
" File \"eval.py\", line 140, in _eval_dataset\n",
|
||
" sequences, costs = model.sample_many(batch, batch_rep=batch_rep, iter_rep=iter_rep)\n",
|
||
" File \"/content/attention-learn-to-route/nets/attention_model.py\", line 290, in sample_many\n",
|
||
" batch_rep, iter_rep\n",
|
||
" File \"/content/attention-learn-to-route/utils/functions.py\", line 189, in sample_many\n",
|
||
" _log_p, pi = inner_func(input)\n",
|
||
" File \"/content/attention-learn-to-route/nets/attention_model.py\", line 287, in <lambda>\n",
|
||
" lambda input: self._inner(*input), # Need to unpack tuple into arguments\n",
|
||
" File \"/content/attention-learn-to-route/nets/attention_model.py\", line 254, in _inner\n",
|
||
" log_p, mask = self._get_log_p(fixed, state)\n",
|
||
" File \"/content/attention-learn-to-route/nets/attention_model.py\", line 360, in _get_log_p\n",
|
||
" log_p, glimpse = self._one_to_many_logits(query, glimpse_K, glimpse_V, logit_K, mask)\n",
|
||
" File \"/content/attention-learn-to-route/nets/attention_model.py\", line 485, in _one_to_many_logits\n",
|
||
" logits[mask] = -math.inf\n",
|
||
"KeyboardInterrupt\n",
|
||
"Exception ignored in: <bound method tqdm.__del__ of 2% 215/10000 [00:31<23:50, 6.84it/s]>\n",
|
||
"Traceback (most recent call last):\n",
|
||
" File \"/usr/local/lib/python3.6/dist-packages/tqdm/_tqdm.py\", line 931, in __del__\n",
|
||
" self.close()\n",
|
||
" File \"/usr/local/lib/python3.6/dist-packages/tqdm/_tqdm.py\", line 1133, in close\n",
|
||
" self._decr_instances(self)\n",
|
||
" File \"/usr/local/lib/python3.6/dist-packages/tqdm/_tqdm.py\", line 496, in _decr_instances\n",
|
||
" cls.monitor.exit()\n",
|
||
" File \"/usr/local/lib/python3.6/dist-packages/tqdm/_monitor.py\", line 52, in exit\n",
|
||
" self.join()\n",
|
||
" File \"/usr/lib/python3.6/threading.py\", line 1053, in join\n",
|
||
" raise RuntimeError(\"cannot join current thread\")\n",
|
||
"RuntimeError: cannot join current thread\n"
|
||
],
|
||
"name": "stdout"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"metadata": {
|
||
"id": "FGbN-1oMEnG6",
|
||
"colab_type": "code",
|
||
"outputId": "aa1ab226-fa4e-42f1-de87-dfaf8358dac1",
|
||
"colab": {
|
||
"base_uri": "https://localhost:8080/",
|
||
"height": 269
|
||
}
|
||
},
|
||
"source": [
|
||
"!python -W ignore eval.py data/tsp/tsp50_exp_seed1234.pkl --model pretrained/tsp50_exp --decode_strategy sample --width 1280 --eval_batch_size 1"
|
||
],
|
||
"execution_count": 0,
|
||
"outputs": [
|
||
{
|
||
"output_type": "stream",
|
||
"text": [
|
||
" [*] Loading model from pretrained/tsp50_exp/epoch-99.pt\n",
|
||
" 3% 259/10000 [00:38<24:27, 6.64it/s]\n",
|
||
"Exception ignored in: <bound method tqdm.__del__ of 3% 259/10000 [00:38<24:27, 6.64it/s]>\n",
|
||
"Traceback (most recent call last):\n",
|
||
" File \"/usr/local/lib/python3.6/dist-packages/tqdm/_tqdm.py\", line 931, in __del__\n",
|
||
" self.close()\n",
|
||
" File \"/usr/local/lib/python3.6/dist-packages/tqdm/_tqdm.py\", line 1133, in close\n",
|
||
" self._decr_instances(self)\n",
|
||
" File \"/usr/local/lib/python3.6/dist-packages/tqdm/_tqdm.py\", line 496, in _decr_instances\n",
|
||
" cls.monitor.exit()\n",
|
||
" File \"/usr/local/lib/python3.6/dist-packages/tqdm/_monitor.py\", line 52, in exit\n",
|
||
" self.join()\n",
|
||
" File \"/usr/lib/python3.6/threading.py\", line 1053, in join\n",
|
||
" raise RuntimeError(\"cannot join current thread\")\n",
|
||
"RuntimeError: cannot join current thread\n"
|
||
],
|
||
"name": "stdout"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {
|
||
"id": "_DENZ6hsEyIq",
|
||
"colab_type": "text"
|
||
},
|
||
"source": [
|
||
"### beam"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"metadata": {
|
||
"id": "ld4fjvhoEyRI",
|
||
"colab_type": "code",
|
||
"outputId": "6901269b-c5c0-40f2-8b50-144e8e036a53",
|
||
"colab": {
|
||
"base_uri": "https://localhost:8080/",
|
||
"height": 118
|
||
}
|
||
},
|
||
"source": [
|
||
"!python -W ignore eval.py data/tsp/tsp50_uni_seed1234.pkl --model pretrained/tsp50_exp --decode_strategy bs --width 1280"
|
||
],
|
||
"execution_count": 0,
|
||
"outputs": [
|
||
{
|
||
"output_type": "stream",
|
||
"text": [
|
||
" [*] Loading model from pretrained/tsp50_exp/epoch-99.pt\n",
|
||
"100% 10/10 [28:35<00:00, 163.25s/it]\n",
|
||
"Average cost: 5.777927398681641 +- 0.00553661823272705\n",
|
||
"Average serial duration: 172.39187142715454 +- 0.22181264541360965\n",
|
||
"Average parallel duration: 0.1683514369405806\n",
|
||
"Calculated total duration: 0:28:03\n"
|
||
],
|
||
"name": "stdout"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"metadata": {
|
||
"id": "uUvYFwLqEyW_",
|
||
"colab_type": "code",
|
||
"outputId": "b3f3eb81-d1bb-466b-d770-bb3bfb1a8f40",
|
||
"colab": {
|
||
"base_uri": "https://localhost:8080/",
|
||
"height": 118
|
||
}
|
||
},
|
||
"source": [
|
||
"!python -W ignore eval.py data/tsp/tsp50_normal_seed1234.pkl --model pretrained/tsp50_exp --decode_strategy bs --width 1280"
|
||
],
|
||
"execution_count": 0,
|
||
"outputs": [
|
||
{
|
||
"output_type": "stream",
|
||
"text": [
|
||
" [*] Loading model from pretrained/tsp50_exp/epoch-99.pt\n",
|
||
"100% 10/10 [28:34<00:00, 163.13s/it]\n",
|
||
"Average cost: 5.555920124053955 +- 0.011456948518753052\n",
|
||
"Average serial duration: 172.33502143096925 +- 0.222191301569115\n",
|
||
"Average parallel duration: 0.1682959193661809\n",
|
||
"Calculated total duration: 0:28:02\n"
|
||
],
|
||
"name": "stdout"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"metadata": {
|
||
"id": "vXqtgxdeEyb2",
|
||
"colab_type": "code",
|
||
"outputId": "59f7c11b-11a9-4020-8894-7abe2cb7de17",
|
||
"colab": {
|
||
"base_uri": "https://localhost:8080/",
|
||
"height": 118
|
||
}
|
||
},
|
||
"source": [
|
||
"!python -W ignore eval.py data/tsp/tsp50_exp_seed1234.pkl --model pretrained/tsp50_exp --decode_strategy bs --width 1280"
|
||
],
|
||
"execution_count": 0,
|
||
"outputs": [
|
||
{
|
||
"output_type": "stream",
|
||
"text": [
|
||
" [*] Loading model from pretrained/tsp50_exp/epoch-99.pt\n",
|
||
"100% 10/10 [28:33<00:00, 163.09s/it]\n",
|
||
"Average cost: 4.808318614959717 +- 0.006498489379882812\n",
|
||
"Average serial duration: 172.24097329711915 +- 0.2216681920611858\n",
|
||
"Average parallel duration: 0.16820407548546792\n",
|
||
"Calculated total duration: 0:28:02\n"
|
||
],
|
||
"name": "stdout"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {
|
||
"id": "OUVhTYnjn246",
|
||
"colab_type": "text"
|
||
},
|
||
"source": [
|
||
"## baselines"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"metadata": {
|
||
"id": "e3tEgvRxoiIm",
|
||
"colab_type": "code",
|
||
"outputId": "77b00a58-5c1c-475c-e022-d00354f82364",
|
||
"colab": {
|
||
"base_uri": "https://localhost:8080/",
|
||
"height": 269
|
||
}
|
||
},
|
||
"source": [
|
||
"!python -W ignore -m problems.tsp.tsp_baseline farthest_insertion data/tsp/tsp50_uni_seed1234.pkl data/tsp/tsp50_normal_seed1234.pkl data/tsp/tsp50_exp_seed1234.pkl\n"
|
||
],
|
||
"execution_count": 0,
|
||
"outputs": [
|
||
{
|
||
"output_type": "stream",
|
||
"text": [
|
||
"100% 10000/10000 [00:30<00:00, 332.56it/s]\n",
|
||
"Average cost: 6.01089711097235 +- 0.0063338420167314705\n",
|
||
"Average serial duration: 0.005636166501045227 +- 1.371910427608632e-05\n",
|
||
"Average parallel duration: 0.0028180832505226134\n",
|
||
"Calculated total duration: 0:00:28\n",
|
||
"100% 10000/10000 [00:30<00:00, 330.47it/s]\n",
|
||
"Average cost: 5.62676766145773 +- 0.006968573700586492\n",
|
||
"Average serial duration: 0.005669829964637756 +- 1.3685034740754971e-05\n",
|
||
"Average parallel duration: 0.002834914982318878\n",
|
||
"Calculated total duration: 0:00:28\n",
|
||
"100% 10000/10000 [00:29<00:00, 333.34it/s]\n",
|
||
"Average cost: 4.993208009296066 +- 0.007323261600406931\n",
|
||
"Average serial duration: 0.005620334649085999 +- 1.3236938778876029e-05\n",
|
||
"Average parallel duration: 0.0028101673245429994\n",
|
||
"Calculated total duration: 0:00:28\n"
|
||
],
|
||
"name": "stdout"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"metadata": {
|
||
"id": "9T5QZs_Tp9C2",
|
||
"colab_type": "code",
|
||
"outputId": "fa10b195-deb0-4214-ce11-701f7898a2af",
|
||
"colab": {
|
||
"base_uri": "https://localhost:8080/",
|
||
"height": 269
|
||
}
|
||
},
|
||
"source": [
|
||
"!python -W ignore -m problems.tsp.tsp_baseline nearest_insertion data/tsp/tsp50_uni_seed1234.pkl data/tsp/tsp50_normal_seed1234.pkl data/tsp/tsp50_exp_seed1234.pkl\n"
|
||
],
|
||
"execution_count": 0,
|
||
"outputs": [
|
||
{
|
||
"output_type": "stream",
|
||
"text": [
|
||
"100% 10000/10000 [00:29<00:00, 333.60it/s]\n",
|
||
"Average cost: 6.780160105426864 +- 0.007024212373181713\n",
|
||
"Average serial duration: 0.005618748044967652 +- 1.4629875740859085e-05\n",
|
||
"Average parallel duration: 0.002809374022483826\n",
|
||
"Calculated total duration: 0:00:28\n",
|
||
"100% 10000/10000 [00:30<00:00, 332.50it/s]\n",
|
||
"Average cost: 6.242503755908468 +- 0.007808897688745703\n",
|
||
"Average serial duration: 0.005635808920860291 +- 1.5290685357880946e-05\n",
|
||
"Average parallel duration: 0.0028179044604301454\n",
|
||
"Calculated total duration: 0:00:28\n",
|
||
"100% 10000/10000 [00:30<00:00, 331.78it/s]\n",
|
||
"Average cost: 5.5927249685120755 +- 0.009604986317122565\n",
|
||
"Average serial duration: 0.005649359655380249 +- 1.6846423591284476e-05\n",
|
||
"Average parallel duration: 0.0028246798276901244\n",
|
||
"Calculated total duration: 0:00:28\n"
|
||
],
|
||
"name": "stdout"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"metadata": {
|
||
"id": "Ur0W03rhp9an",
|
||
"colab_type": "code",
|
||
"outputId": "d8e13df8-2b82-4f43-f8ca-61e73adc23cb",
|
||
"colab": {
|
||
"base_uri": "https://localhost:8080/",
|
||
"height": 269
|
||
}
|
||
},
|
||
"source": [
|
||
"!python -W ignore -m problems.tsp.tsp_baseline random_insertion data/tsp/tsp50_uni_seed1234.pkl data/tsp/tsp50_normal_seed1234.pkl data/tsp/tsp50_exp_seed1234.pkl\n"
|
||
],
|
||
"execution_count": 0,
|
||
"outputs": [
|
||
{
|
||
"output_type": "stream",
|
||
"text": [
|
||
"100% 10000/10000 [00:18<00:00, 538.78it/s]\n",
|
||
"Average cost: 6.131675164274397 +- 0.006716588129048994\n",
|
||
"Average serial duration: 0.003534122085571289 +- 8.622659002691257e-06\n",
|
||
"Average parallel duration: 0.0017670610427856445\n",
|
||
"Calculated total duration: 0:00:17\n",
|
||
"100% 10000/10000 [00:18<00:00, 536.66it/s]\n",
|
||
"Average cost: 5.758545970128334 +- 0.007317850449247265\n",
|
||
"Average serial duration: 0.0035413674116134644 +- 9.960671837706142e-06\n",
|
||
"Average parallel duration: 0.0017706837058067322\n",
|
||
"Calculated total duration: 0:00:17\n",
|
||
"100% 10000/10000 [00:18<00:00, 528.22it/s]\n",
|
||
"Average cost: 5.111937675153737 +- 0.008077959198099805\n",
|
||
"Average serial duration: 0.003602067446708679 +- 1.0579160474415033e-05\n",
|
||
"Average parallel duration: 0.0018010337233543396\n",
|
||
"Calculated total duration: 0:00:18\n"
|
||
],
|
||
"name": "stdout"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"metadata": {
|
||
"id": "TBYl1karG7g3",
|
||
"colab_type": "code",
|
||
"outputId": "6e788bb6-9150-4971-d0ca-57864dcf5cb7",
|
||
"colab": {
|
||
"base_uri": "https://localhost:8080/",
|
||
"height": 269
|
||
}
|
||
},
|
||
"source": [
|
||
"!python -W ignore -m problems.tsp.tsp_baseline nn data/tsp/tsp50_uni_seed1234.pkl data/tsp/tsp50_normal_seed1234.pkl data/tsp/tsp50_exp_seed1234.pkl\n"
|
||
],
|
||
"execution_count": 0,
|
||
"outputs": [
|
||
{
|
||
"output_type": "stream",
|
||
"text": [
|
||
"100% 10/10 [00:05<00:00, 1.96it/s]\n",
|
||
"Average cost: 7.002710671377182 +- 0.011279827072329818\n",
|
||
"Average serial duration: 0.465148401260376 +- 0.026978397690219293\n",
|
||
"Average parallel duration: 0.00046514840126037597\n",
|
||
"Calculated total duration: 0:00:04\n",
|
||
"100% 10/10 [00:00<00:00, 16.60it/s]\n",
|
||
"Average cost: 6.573115315294266 +- 0.010541367987194574\n",
|
||
"Average serial duration: 0.015581989288330078 +- 2.187372368163587e-06\n",
|
||
"Average parallel duration: 1.5581989288330077e-05\n",
|
||
"Calculated total duration: 0:00:00\n",
|
||
"100% 10/10 [00:00<00:00, 16.61it/s]\n",
|
||
"Average cost: 5.937869461297989 +- 0.011053396343795159\n",
|
||
"Average serial duration: 0.015564584732055664 +- 2.044173924094857e-06\n",
|
||
"Average parallel duration: 1.5564584732055665e-05\n",
|
||
"Calculated total duration: 0:00:00\n"
|
||
],
|
||
"name": "stdout"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {
|
||
"id": "wOOr6rq7x6UF",
|
||
"colab_type": "text"
|
||
},
|
||
"source": [
|
||
""
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"metadata": {
|
||
"id": "jB_RCXupxk94",
|
||
"colab_type": "code",
|
||
"outputId": "e39301cb-c8ef-40db-92a4-89d47580a0f0",
|
||
"colab": {
|
||
"base_uri": "https://localhost:8080/",
|
||
"height": 1000
|
||
}
|
||
},
|
||
"source": [
|
||
"!python -W ignore -m problems.tsp.tsp_baseline lkh data/tsp/tsp50_uni_seed1234.pkl data/tsp/tsp50_normal_seed1234.pkl data/tsp/tsp50_exp_seed1234.pkl\n"
|
||
],
|
||
"execution_count": 0,
|
||
"outputs": [
|
||
{
|
||
"output_type": "stream",
|
||
"text": [
|
||
"/content/attention-learn-to-route/problems/vrp/lkh/LKH-3.0.4 not found, downloading and compiling\n",
|
||
"--2019-11-08 06:02:49-- http://www.akira.ruc.dk/~keld/research/LKH-3/LKH-3.0.4.tgz\n",
|
||
"Resolving www.akira.ruc.dk (www.akira.ruc.dk)... 130.225.220.151\n",
|
||
"Connecting to www.akira.ruc.dk (www.akira.ruc.dk)|130.225.220.151|:80... connected.\n",
|
||
"HTTP request sent, awaiting response... 302 Found\n",
|
||
"Location: http://akira.ruc.dk/~keld/research/LKH-3/LKH-3.0.4.tgz [following]\n",
|
||
"--2019-11-08 06:02:50-- http://akira.ruc.dk/~keld/research/LKH-3/LKH-3.0.4.tgz\n",
|
||
"Resolving akira.ruc.dk (akira.ruc.dk)... 130.225.220.230\n",
|
||
"Connecting to akira.ruc.dk (akira.ruc.dk)|130.225.220.230|:80... connected.\n",
|
||
"HTTP request sent, awaiting response... 200 OK\n",
|
||
"Length: 2308964 (2.2M) [application/x-gzip]\n",
|
||
"Saving to: ‘LKH-3.0.4.tgz’\n",
|
||
"\n",
|
||
"LKH-3.0.4.tgz 100%[===================>] 2.20M 466KB/s in 6.2s \n",
|
||
"\n",
|
||
"2019-11-08 06:02:56 (366 KB/s) - ‘LKH-3.0.4.tgz’ saved [2308964/2308964]\n",
|
||
"\n",
|
||
"LKH-3.0.4/\n",
|
||
"LKH-3.0.4/pr2392.par\n",
|
||
"LKH-3.0.4/whizzkids96.atsp\n",
|
||
"LKH-3.0.4/Makefile\n",
|
||
"LKH-3.0.4/whizzkids96.par\n",
|
||
"LKH-3.0.4/pr2392.tsp\n",
|
||
"LKH-3.0.4/DOC/\n",
|
||
"LKH-3.0.4/README.txt\n",
|
||
"LKH-3.0.4/SRC/\n",
|
||
"LKH-3.0.4/SRC/Penalty_CVRPTW.c\n",
|
||
"LKH-3.0.4/SRC/RestoreTour.c\n",
|
||
"LKH-3.0.4/SRC/SolveKMeansSubproblems.c\n",
|
||
"LKH-3.0.4/SRC/IsCommonEdge.c\n",
|
||
"LKH-3.0.4/SRC/Penalty_TSPPD.c\n",
|
||
"LKH-3.0.4/SRC/ReadProblem.c\n",
|
||
"LKH-3.0.4/SRC/BestKOptMove.c\n",
|
||
"LKH-3.0.4/SRC/Distance_SPECIAL.c\n",
|
||
"LKH-3.0.4/SRC/Penalty_TSPDL.c\n",
|
||
"LKH-3.0.4/SRC/Penalty_PDPTW.c\n",
|
||
"LKH-3.0.4/SRC/Penalty_ACVRP.c\n",
|
||
"LKH-3.0.4/SRC/CreateCandidateSet.c\n",
|
||
"LKH-3.0.4/SRC/OBJ/\n",
|
||
"LKH-3.0.4/SRC/Forbidden.c\n",
|
||
"LKH-3.0.4/SRC/Penalty_CCVRP.c\n",
|
||
"LKH-3.0.4/SRC/Penalty_M_PDTSP.c\n",
|
||
"LKH-3.0.4/SRC/Best5OptMove.c\n",
|
||
"LKH-3.0.4/SRC/RecordBetterTour.c\n",
|
||
"LKH-3.0.4/SRC/Best4OptMove.c\n",
|
||
"LKH-3.0.4/SRC/Exclude.c\n",
|
||
"LKH-3.0.4/SRC/C.c\n",
|
||
"LKH-3.0.4/SRC/IsCandidate.c\n",
|
||
"LKH-3.0.4/SRC/Make3OptMove.c\n",
|
||
"LKH-3.0.4/SRC/Make2OptMove.c\n",
|
||
"LKH-3.0.4/SRC/ResetCandidateSet.c\n",
|
||
"LKH-3.0.4/SRC/LKHmain.c\n",
|
||
"LKH-3.0.4/SRC/SolveSFCSubproblems.c\n",
|
||
"LKH-3.0.4/SRC/ERXT.c\n",
|
||
"LKH-3.0.4/SRC/fscanint.c\n",
|
||
"LKH-3.0.4/SRC/eprintf.c\n",
|
||
"LKH-3.0.4/SRC/Distance_SOP.c\n",
|
||
"LKH-3.0.4/SRC/Distance_MTSP.c\n",
|
||
"LKH-3.0.4/SRC/Penalty_VRPPD.c\n",
|
||
"LKH-3.0.4/SRC/SINTEF_WriteSolution.c\n",
|
||
"LKH-3.0.4/SRC/Gain23.c\n",
|
||
"LKH-3.0.4/SRC/Heap.c\n",
|
||
"LKH-3.0.4/SRC/GetTime.c\n",
|
||
"LKH-3.0.4/SRC/SolveRoheSubproblems.c\n",
|
||
"LKH-3.0.4/SRC/ReadPenalties.c\n",
|
||
"LKH-3.0.4/SRC/Excludable.c\n",
|
||
"LKH-3.0.4/SRC/SolveCompressedSubproblem.c\n",
|
||
"LKH-3.0.4/SRC/Statistics.c\n",
|
||
"LKH-3.0.4/SRC/PatchCycles.c\n",
|
||
"LKH-3.0.4/SRC/MergeWithTourGPX2.c\n",
|
||
"LKH-3.0.4/SRC/Sequence.c\n",
|
||
"LKH-3.0.4/SRC/SolveDelaunaySubproblems.c\n",
|
||
"LKH-3.0.4/SRC/WritePenalties.c\n",
|
||
"LKH-3.0.4/SRC/NormalizeNodeList.c\n",
|
||
"LKH-3.0.4/SRC/FreeStructures.c\n",
|
||
"LKH-3.0.4/SRC/SolveKarpSubproblems.c\n",
|
||
"LKH-3.0.4/SRC/Makefile\n",
|
||
"LKH-3.0.4/SRC/CVRP_InitialTour.c\n",
|
||
"LKH-3.0.4/SRC/Between_SL.c\n",
|
||
"LKH-3.0.4/SRC/Penalty_OVRP.c\n",
|
||
"LKH-3.0.4/SRC/SOP_InitialTour.c\n",
|
||
"LKH-3.0.4/SRC/INCLUDE/\n",
|
||
"LKH-3.0.4/SRC/Penalty_MLP.c\n",
|
||
"LKH-3.0.4/SRC/IsPossibleCandidate.c\n",
|
||
"LKH-3.0.4/SRC/Penalty_VRPBTW.c\n",
|
||
"LKH-3.0.4/SRC/NormalizeSegmentList.c\n",
|
||
"LKH-3.0.4/SRC/Penalty_BWTSP.c\n",
|
||
"LKH-3.0.4/SRC/Hashing.c\n",
|
||
"LKH-3.0.4/SRC/LinKernighan.c\n",
|
||
"LKH-3.0.4/SRC/Penalty_CVRP.c\n",
|
||
"LKH-3.0.4/SRC/gpx.c\n",
|
||
"LKH-3.0.4/SRC/AdjustCandidateSet.c\n",
|
||
"LKH-3.0.4/SRC/AllocateStructures.c\n",
|
||
"LKH-3.0.4/SRC/Flip_SSL.c\n",
|
||
"LKH-3.0.4/SRC/MakeKOptMove.c\n",
|
||
"LKH-3.0.4/SRC/BuildKDTree.c\n",
|
||
"LKH-3.0.4/SRC/SolveTourSegmentSubproblems.c\n",
|
||
"LKH-3.0.4/SRC/Random.c\n",
|
||
"LKH-3.0.4/SRC/CreateDelaunayCandidateSet.c\n",
|
||
"LKH-3.0.4/SRC/MTSP_WriteSolution.c\n",
|
||
"LKH-3.0.4/SRC/Penalty_PDTSPF.c\n",
|
||
"LKH-3.0.4/SRC/SolveSubproblemBorderProblems.c\n",
|
||
"LKH-3.0.4/SRC/Penalty_PDTSPL.c\n",
|
||
"LKH-3.0.4/SRC/ReadParameters.c\n",
|
||
"LKH-3.0.4/SRC/MTSP_Report.c\n",
|
||
"LKH-3.0.4/SRC/Penalty_TRP.c\n",
|
||
"LKH-3.0.4/SRC/FixedOrCommonCandidates.c\n",
|
||
"LKH-3.0.4/SRC/Penalty_CTSP.c\n",
|
||
"LKH-3.0.4/SRC/Penalty_SOP.c\n",
|
||
"LKH-3.0.4/SRC/Best2OptMove.c\n",
|
||
"LKH-3.0.4/SRC/Best3OptMove.c\n",
|
||
"LKH-3.0.4/SRC/ReadCandidates.c\n",
|
||
"LKH-3.0.4/SRC/Make4OptMove.c\n",
|
||
"LKH-3.0.4/SRC/Make5OptMove.c\n",
|
||
"LKH-3.0.4/SRC/CreateNNCandidateSet.c\n",
|
||
"LKH-3.0.4/SRC/GenerateCandidates.c\n",
|
||
"LKH-3.0.4/SRC/Between.c\n",
|
||
"LKH-3.0.4/SRC/Flip_SL.c\n",
|
||
"LKH-3.0.4/SRC/SOP_RepairTour.c\n",
|
||
"LKH-3.0.4/SRC/Activate.c\n",
|
||
"LKH-3.0.4/SRC/SegmentSize.c\n",
|
||
"LKH-3.0.4/SRC/SolveSubproblem.c\n",
|
||
"LKH-3.0.4/SRC/MergeWithTourIPT.c\n",
|
||
"LKH-3.0.4/SRC/StoreTour.c\n",
|
||
"LKH-3.0.4/SRC/GreedyTour.c\n",
|
||
"LKH-3.0.4/SRC/PrintParameters.c\n",
|
||
"LKH-3.0.4/SRC/Penalty_M1_PDTSP.c\n",
|
||
"LKH-3.0.4/SRC/SFCTour.c\n",
|
||
"LKH-3.0.4/SRC/Penalty_PDTSP.c\n",
|
||
"LKH-3.0.4/SRC/Penalty_VRPB.c\n",
|
||
"LKH-3.0.4/SRC/Minimum1TreeCost.c\n",
|
||
"LKH-3.0.4/SRC/MTSP2TSP.c\n",
|
||
"LKH-3.0.4/SRC/MergeTourWithBestTour.c\n",
|
||
"LKH-3.0.4/SRC/ReadEdges.c\n",
|
||
"LKH-3.0.4/SRC/BridgeGain.c\n",
|
||
"LKH-3.0.4/SRC/WriteCandidates.c\n",
|
||
"LKH-3.0.4/SRC/PDPTW_Reduce.c\n",
|
||
"LKH-3.0.4/SRC/Flip.c\n",
|
||
"LKH-3.0.4/SRC/WriteTour.c\n",
|
||
"LKH-3.0.4/SRC/Delaunay.c\n",
|
||
"LKH-3.0.4/SRC/TSPDL_InitialTour.c\n",
|
||
"LKH-3.0.4/SRC/VRPB_Reduce.c\n",
|
||
"LKH-3.0.4/SRC/CreateQuadrantCandidateSet.c\n",
|
||
"LKH-3.0.4/SRC/IsBackboneCandidate.c\n",
|
||
"LKH-3.0.4/SRC/Penalty_MTSP.c\n",
|
||
"LKH-3.0.4/SRC/ReadLine.c\n",
|
||
"LKH-3.0.4/SRC/RecordBestTour.c\n",
|
||
"LKH-3.0.4/SRC/CandidateReport.c\n",
|
||
"LKH-3.0.4/SRC/OrderCandidateSet.c\n",
|
||
"LKH-3.0.4/SRC/CTSP_InitialTour.c\n",
|
||
"LKH-3.0.4/SRC/AddExtraCandidates.c\n",
|
||
"LKH-3.0.4/SRC/Distance.c\n",
|
||
"LKH-3.0.4/SRC/Genetic.c\n",
|
||
"LKH-3.0.4/SRC/AdjustClusters.c\n",
|
||
"LKH-3.0.4/SRC/AddTourCandidates.c\n",
|
||
"LKH-3.0.4/SRC/BIT.c\n",
|
||
"LKH-3.0.4/SRC/KSwapKick.c\n",
|
||
"LKH-3.0.4/SRC/Connect.c\n",
|
||
"LKH-3.0.4/SRC/RemoveFirstActive.c\n",
|
||
"LKH-3.0.4/SRC/Ascent.c\n",
|
||
"LKH-3.0.4/SRC/TrimCandidateSet.c\n",
|
||
"LKH-3.0.4/SRC/StatusReport.c\n",
|
||
"LKH-3.0.4/SRC/TSPTW_Reduce.c\n",
|
||
"LKH-3.0.4/SRC/printff.c\n",
|
||
"LKH-3.0.4/SRC/Between_SSL.c\n",
|
||
"LKH-3.0.4/SRC/SOP_Report.c\n",
|
||
"LKH-3.0.4/SRC/Create_POPMUSIC_CandidateSet.c\n",
|
||
"LKH-3.0.4/SRC/MTSP_InitialTour.c\n",
|
||
"LKH-3.0.4/SRC/Improvement.c\n",
|
||
"LKH-3.0.4/SRC/GeoConversion.c\n",
|
||
"LKH-3.0.4/SRC/FindTour.c\n",
|
||
"LKH-3.0.4/SRC/TSPTW_MakespanCost.c\n",
|
||
"LKH-3.0.4/SRC/SymmetrizeCandidateSet.c\n",
|
||
"LKH-3.0.4/SRC/ChooseInitialTour.c\n",
|
||
"LKH-3.0.4/SRC/SolveKCenterSubproblems.c\n",
|
||
"LKH-3.0.4/SRC/Penalty_1_PDTSP.c\n",
|
||
"LKH-3.0.4/SRC/AddCandidate.c\n",
|
||
"LKH-3.0.4/SRC/Penalty_TSPTW.c\n",
|
||
"LKH-3.0.4/SRC/Penalty_RCTVRP.c\n",
|
||
"LKH-3.0.4/SRC/MinimumSpanningTree.c\n",
|
||
"LKH-3.0.4/SRC/BestSpecialOptMove.c\n",
|
||
"LKH-3.0.4/SRC/INCLUDE/Genetic.h\n",
|
||
"LKH-3.0.4/SRC/INCLUDE/Segment.h\n",
|
||
"LKH-3.0.4/SRC/INCLUDE/Delaunay.h\n",
|
||
"LKH-3.0.4/SRC/INCLUDE/GeoConversion.h\n",
|
||
"LKH-3.0.4/SRC/INCLUDE/LKH.h\n",
|
||
"LKH-3.0.4/SRC/INCLUDE/BIT.h\n",
|
||
"LKH-3.0.4/SRC/INCLUDE/Sequence.h\n",
|
||
"LKH-3.0.4/SRC/INCLUDE/GainType.h\n",
|
||
"LKH-3.0.4/SRC/INCLUDE/Heap.h\n",
|
||
"LKH-3.0.4/SRC/INCLUDE/Hashing.h\n",
|
||
"LKH-3.0.4/SRC/INCLUDE/gpx.h\n",
|
||
"LKH-3.0.4/DOC/POPMUSIC_REPORT.pdf\n",
|
||
"LKH-3.0.4/DOC/LKH_Genetic.pdf\n",
|
||
"LKH-3.0.4/DOC/LKH_REPORT.pdf\n",
|
||
"LKH-3.0.4/DOC/LKH-2_USER_GUIDE.pdf\n",
|
||
"LKH-3.0.4/DOC/TSPLIB_DOC.pdf\n",
|
||
"LKH-3.0.4/DOC/LKH-3_PARAMETERS.pdf\n",
|
||
"LKH-3.0.4/DOC/LKH-3_REPORT.pdf\n",
|
||
"make -C SRC\n",
|
||
"make[1]: Entering directory '/content/attention-learn-to-route/problems/vrp/lkh/LKH-3.0.4/SRC'\n",
|
||
"make LKH\n",
|
||
"make[2]: Entering directory '/content/attention-learn-to-route/problems/vrp/lkh/LKH-3.0.4/SRC'\n",
|
||
"gcc -c -o OBJ/Activate.o Activate.c -O3 -Wall -IINCLUDE -DTWO_LEVEL_TREE -g\n",
|
||
"gcc -c -o OBJ/AddCandidate.o AddCandidate.c -O3 -Wall -IINCLUDE -DTWO_LEVEL_TREE -g\n",
|
||
"In file included from \u001b[01m\u001b[KINCLUDE/LKH.h:10:0\u001b[m\u001b[K,\n",
|
||
" from \u001b[01m\u001b[KAddCandidate.c:1\u001b[m\u001b[K:\n",
|
||
"\u001b[01m\u001b[KAddCandidate.c:\u001b[m\u001b[K In function ‘\u001b[01m\u001b[KAddCandidate\u001b[m\u001b[K’:\n",
|
||
"\u001b[01m\u001b[KAddCandidate.c:25:16:\u001b[m\u001b[K \u001b[01;35m\u001b[Kwarning: \u001b[m\u001b[Ksuggest parentheses around assignment used as truth value [\u001b[01;35m\u001b[K-Wparentheses\u001b[m\u001b[K]\n",
|
||
" assert(\u001b[01;35m\u001b[KF\u001b[m\u001b[Krom->CandidateSet =\n",
|
||
" \u001b[01;35m\u001b[K^\u001b[m\u001b[K\n",
|
||
"\u001b[01m\u001b[KAddCandidate.c:41:12:\u001b[m\u001b[K \u001b[01;35m\u001b[Kwarning: \u001b[m\u001b[Ksuggest parentheses around assignment used as truth value [\u001b[01;35m\u001b[K-Wparentheses\u001b[m\u001b[K]\n",
|
||
" assert(\u001b[01;35m\u001b[KF\u001b[m\u001b[Krom->CandidateSet =\n",
|
||
" \u001b[01;35m\u001b[K^\u001b[m\u001b[K\n",
|
||
"gcc -c -o OBJ/AddExtraCandidates.o AddExtraCandidates.c -O3 -Wall -IINCLUDE -DTWO_LEVEL_TREE -g\n",
|
||
"In file included from \u001b[01m\u001b[KINCLUDE/LKH.h:10:0\u001b[m\u001b[K,\n",
|
||
" from \u001b[01m\u001b[KAddExtraCandidates.c:1\u001b[m\u001b[K:\n",
|
||
"\u001b[01m\u001b[KAddExtraCandidates.c:\u001b[m\u001b[K In function ‘\u001b[01m\u001b[KAddExtraCandidates\u001b[m\u001b[K’:\n",
|
||
"\u001b[01m\u001b[KAddExtraCandidates.c:20:12:\u001b[m\u001b[K \u001b[01;35m\u001b[Kwarning: \u001b[m\u001b[Ksuggest parentheses around assignment used as truth value [\u001b[01;35m\u001b[K-Wparentheses\u001b[m\u001b[K]\n",
|
||
" assert(\u001b[01;35m\u001b[KS\u001b[m\u001b[KavedCandidateSet =\n",
|
||
" \u001b[01;35m\u001b[K^\u001b[m\u001b[K\n",
|
||
"gcc -c -o OBJ/AddTourCandidates.o AddTourCandidates.c -O3 -Wall -IINCLUDE -DTWO_LEVEL_TREE -g\n",
|
||
"gcc -c -o OBJ/AdjustCandidateSet.o AdjustCandidateSet.c -O3 -Wall -IINCLUDE -DTWO_LEVEL_TREE -g\n",
|
||
"In file included from \u001b[01m\u001b[KINCLUDE/LKH.h:10:0\u001b[m\u001b[K,\n",
|
||
" from \u001b[01m\u001b[KAdjustCandidateSet.c:1\u001b[m\u001b[K:\n",
|
||
"\u001b[01m\u001b[KAdjustCandidateSet.c:\u001b[m\u001b[K In function ‘\u001b[01m\u001b[KAdjustCandidateSet\u001b[m\u001b[K’:\n",
|
||
"\u001b[01m\u001b[KAdjustCandidateSet.c:28:20:\u001b[m\u001b[K \u001b[01;35m\u001b[Kwarning: \u001b[m\u001b[Ksuggest parentheses around assignment used as truth value [\u001b[01;35m\u001b[K-Wparentheses\u001b[m\u001b[K]\n",
|
||
" assert(\u001b[01;35m\u001b[KF\u001b[m\u001b[Krom->CandidateSet =\n",
|
||
" \u001b[01;35m\u001b[K^\u001b[m\u001b[K\n",
|
||
"\u001b[01m\u001b[KAdjustCandidateSet.c:44:24:\u001b[m\u001b[K \u001b[01;35m\u001b[Kwarning: \u001b[m\u001b[Ksuggest parentheses around assignment used as truth value [\u001b[01;35m\u001b[K-Wparentheses\u001b[m\u001b[K]\n",
|
||
" assert(\u001b[01;35m\u001b[KF\u001b[m\u001b[Krom->CandidateSet =\n",
|
||
" \u001b[01;35m\u001b[K^\u001b[m\u001b[K\n",
|
||
"gcc -c -o OBJ/AdjustClusters.o AdjustClusters.c -O3 -Wall -IINCLUDE -DTWO_LEVEL_TREE -g\n",
|
||
"In file included from \u001b[01m\u001b[KINCLUDE/LKH.h:10:0\u001b[m\u001b[K,\n",
|
||
" from \u001b[01m\u001b[KAdjustClusters.c:1\u001b[m\u001b[K:\n",
|
||
"\u001b[01m\u001b[KAdjustClusters.c:\u001b[m\u001b[K In function ‘\u001b[01m\u001b[KAdjustClusters\u001b[m\u001b[K’:\n",
|
||
"\u001b[01m\u001b[KAdjustClusters.c:17:12:\u001b[m\u001b[K \u001b[01;35m\u001b[Kwarning: \u001b[m\u001b[Ksuggest parentheses around assignment used as truth value [\u001b[01;35m\u001b[K-Wparentheses\u001b[m\u001b[K]\n",
|
||
" assert(\u001b[01;35m\u001b[KS\u001b[m\u001b[Kize = (int *) calloc((K + 1), sizeof(int)));\n",
|
||
" \u001b[01;35m\u001b[K^\u001b[m\u001b[K\n",
|
||
"gcc -c -o OBJ/AllocateStructures.o AllocateStructures.c -O3 -Wall -IINCLUDE -DTWO_LEVEL_TREE -g\n",
|
||
"In file included from \u001b[01m\u001b[KINCLUDE/LKH.h:10:0\u001b[m\u001b[K,\n",
|
||
" from \u001b[01m\u001b[KAllocateStructures.c:2\u001b[m\u001b[K:\n",
|
||
"\u001b[01m\u001b[KAllocateStructures.c:\u001b[m\u001b[K In function ‘\u001b[01m\u001b[KAllocateStructures\u001b[m\u001b[K’:\n",
|
||
"\u001b[01m\u001b[KAllocateStructures.c:34:12:\u001b[m\u001b[K \u001b[01;35m\u001b[Kwarning: \u001b[m\u001b[Ksuggest parentheses around assignment used as truth value [\u001b[01;35m\u001b[K-Wparentheses\u001b[m\u001b[K]\n",
|
||
" assert(\u001b[01;35m\u001b[KB\u001b[m\u001b[KestTour = (int *) calloc(1 + Dimension, sizeof(int)));\n",
|
||
" \u001b[01;35m\u001b[K^\u001b[m\u001b[K\n",
|
||
"\u001b[01m\u001b[KAllocateStructures.c:35:12:\u001b[m\u001b[K \u001b[01;35m\u001b[Kwarning: \u001b[m\u001b[Ksuggest parentheses around assignment used as truth value [\u001b[01;35m\u001b[K-Wparentheses\u001b[m\u001b[K]\n",
|
||
" assert(\u001b[01;35m\u001b[KB\u001b[m\u001b[KetterTour = (int *) calloc(1 + Dimension, sizeof(int)));\n",
|
||
" \u001b[01;35m\u001b[K^\u001b[m\u001b[K\n",
|
||
"\u001b[01m\u001b[KAllocateStructures.c:36:12:\u001b[m\u001b[K \u001b[01;35m\u001b[Kwarning: \u001b[m\u001b[Ksuggest parentheses around assignment used as truth value [\u001b[01;35m\u001b[K-Wparentheses\u001b[m\u001b[K]\n",
|
||
" assert(\u001b[01;35m\u001b[KH\u001b[m\u001b[KTable = (HashTable *) malloc(sizeof(HashTable)));\n",
|
||
" \u001b[01;35m\u001b[K^\u001b[m\u001b[K\n",
|
||
"\u001b[01m\u001b[KAllocateStructures.c:39:12:\u001b[m\u001b[K \u001b[01;35m\u001b[Kwarning: \u001b[m\u001b[Ksuggest parentheses around assignment used as truth value [\u001b[01;35m\u001b[K-Wparentheses\u001b[m\u001b[K]\n",
|
||
" assert(\u001b[01;35m\u001b[KR\u001b[m\u001b[Kand = (unsigned *)\n",
|
||
" \u001b[01;35m\u001b[K^\u001b[m\u001b[K\n",
|
||
"\u001b[01m\u001b[KAllocateStructures.c:47:16:\u001b[m\u001b[K \u001b[01;35m\u001b[Kwarning: \u001b[m\u001b[Ksuggest parentheses around assignment used as truth value [\u001b[01;35m\u001b[K-Wparentheses\u001b[m\u001b[K]\n",
|
||
" assert(\u001b[01;35m\u001b[KC\u001b[m\u001b[KacheSig = (int *) calloc(i, sizeof(int)));\n",
|
||
" \u001b[01;35m\u001b[K^\u001b[m\u001b[K\n",
|
||
"\u001b[01m\u001b[KAllocateStructures.c:48:16:\u001b[m\u001b[K \u001b[01;35m\u001b[Kwarning: \u001b[m\u001b[Ksuggest parentheses around assignment used as truth value [\u001b[01;35m\u001b[K-Wparentheses\u001b[m\u001b[K]\n",
|
||
" assert(\u001b[01;35m\u001b[KC\u001b[m\u001b[KacheVal = (int *) calloc(i, sizeof(int)));\n",
|
||
" \u001b[01;35m\u001b[K^\u001b[m\u001b[K\n",
|
||
"\u001b[01m\u001b[KAllocateStructures.c:55:12:\u001b[m\u001b[K \u001b[01;35m\u001b[Kwarning: \u001b[m\u001b[Ksuggest parentheses around assignment used as truth value [\u001b[01;35m\u001b[K-Wparentheses\u001b[m\u001b[K]\n",
|
||
" assert(\u001b[01;35m\u001b[KT\u001b[m\u001b[K = (Node **) malloc((1 + 2 * K) * sizeof(Node *)));\n",
|
||
" \u001b[01;35m\u001b[K^\u001b[m\u001b[K\n",
|
||
"\u001b[01m\u001b[KAllocateStructures.c:56:12:\u001b[m\u001b[K \u001b[01;35m\u001b[Kwarning: \u001b[m\u001b[Ksuggest parentheses around assignment used as truth value [\u001b[01;35m\u001b[K-Wparentheses\u001b[m\u001b[K]\n",
|
||
" assert(\u001b[01;35m\u001b[KG\u001b[m\u001b[K = (GainType *) malloc(2 * K * sizeof(GainType)));\n",
|
||
" \u001b[01;35m\u001b[K^\u001b[m\u001b[K\n",
|
||
"\u001b[01m\u001b[KAllocateStructures.c:57:12:\u001b[m\u001b[K \u001b[01;35m\u001b[Kwarning: \u001b[m\u001b[Ksuggest parentheses around assignment used as truth value [\u001b[01;35m\u001b[K-Wparentheses\u001b[m\u001b[K]\n",
|
||
" assert(\u001b[01;35m\u001b[Kt\u001b[m\u001b[K = (Node **) malloc(6 * K * sizeof(Node *)));\n",
|
||
" \u001b[01;35m\u001b[K^\u001b[m\u001b[K\n",
|
||
"\u001b[01m\u001b[KAllocateStructures.c:58:12:\u001b[m\u001b[K \u001b[01;35m\u001b[Kwarning: \u001b[m\u001b[Ksuggest parentheses around assignment used as truth value [\u001b[01;35m\u001b[K-Wparentheses\u001b[m\u001b[K]\n",
|
||
" assert(\u001b[01;35m\u001b[Kt\u001b[m\u001b[KSaved = (Node **) malloc((1 + 2 * K) * sizeof(Node *)));\n",
|
||
" \u001b[01;35m\u001b[K^\u001b[m\u001b[K\n",
|
||
"\u001b[01m\u001b[KAllocateStructures.c:59:12:\u001b[m\u001b[K \u001b[01;35m\u001b[Kwarning: \u001b[m\u001b[Ksuggest parentheses around assignment used as truth value [\u001b[01;35m\u001b[K-Wparentheses\u001b[m\u001b[K]\n",
|
||
" assert(\u001b[01;35m\u001b[Kp\u001b[m\u001b[K = (int *) malloc(6 * K * sizeof(int)));\n",
|
||
" \u001b[01;35m\u001b[K^\u001b[m\u001b[K\n",
|
||
"\u001b[01m\u001b[KAllocateStructures.c:60:12:\u001b[m\u001b[K \u001b[01;35m\u001b[Kwarning: \u001b[m\u001b[Ksuggest parentheses around assignment used as truth value [\u001b[01;35m\u001b[K-Wparentheses\u001b[m\u001b[K]\n",
|
||
" assert(\u001b[01;35m\u001b[Kq\u001b[m\u001b[K = (int *) malloc(6 * K * sizeof(int)));\n",
|
||
" \u001b[01;35m\u001b[K^\u001b[m\u001b[K\n",
|
||
"\u001b[01m\u001b[KAllocateStructures.c:61:12:\u001b[m\u001b[K \u001b[01;35m\u001b[Kwarning: \u001b[m\u001b[Ksuggest parentheses around assignment used as truth value [\u001b[01;35m\u001b[K-Wparentheses\u001b[m\u001b[K]\n",
|
||
" assert(\u001b[01;35m\u001b[Ki\u001b[m\u001b[Kncl = (int *) malloc(6 * K * sizeof(int)));\n",
|
||
" \u001b[01;35m\u001b[K^\u001b[m\u001b[K\n",
|
||
"\u001b[01m\u001b[KAllocateStructures.c:62:12:\u001b[m\u001b[K \u001b[01;35m\u001b[Kwarning: \u001b[m\u001b[Ksuggest parentheses around assignment used as truth value [\u001b[01;35m\u001b[K-Wparentheses\u001b[m\u001b[K]\n",
|
||
" assert(\u001b[01;35m\u001b[Kc\u001b[m\u001b[Kycle = (int *) malloc(6 * K * sizeof(int)));\n",
|
||
" \u001b[01;35m\u001b[K^\u001b[m\u001b[K\n",
|
||
"\u001b[01m\u001b[KAllocateStructures.c:63:12:\u001b[m\u001b[K \u001b[01;35m\u001b[Kwarning: \u001b[m\u001b[Ksuggest parentheses around assignment used as truth value [\u001b[01;35m\u001b[K-Wparentheses\u001b[m\u001b[K]\n",
|
||
" assert(\u001b[01;35m\u001b[KS\u001b[m\u001b[KwapStack =\n",
|
||
" \u001b[01;35m\u001b[K^\u001b[m\u001b[K\n",
|
||
"\u001b[01m\u001b[KAllocateStructures.c:\u001b[m\u001b[K In function ‘\u001b[01m\u001b[KAllocateSegments\u001b[m\u001b[K’:\n",
|
||
"\u001b[01m\u001b[KAllocateStructures.c:88:16:\u001b[m\u001b[K \u001b[01;35m\u001b[Kwarning: \u001b[m\u001b[Ksuggest parentheses around assignment used as truth value [\u001b[01;35m\u001b[K-Wparentheses\u001b[m\u001b[K]\n",
|
||
" assert(\u001b[01;35m\u001b[KS\u001b[m\u001b[K = (Segment *) malloc(sizeof(Segment)));\n",
|
||
" \u001b[01;35m\u001b[K^\u001b[m\u001b[K\n",
|
||
"gcc -c -o OBJ/Ascent.o Ascent.c -O3 -Wall -IINCLUDE -DTWO_LEVEL_TREE -g\n",
|
||
"gcc -c -o OBJ/Best2OptMove.o Best2OptMove.c -O3 -Wall -IINCLUDE -DTWO_LEVEL_TREE -g\n",
|
||
"gcc -c -o OBJ/Best3OptMove.o Best3OptMove.c -O3 -Wall -IINCLUDE -DTWO_LEVEL_TREE -g\n",
|
||
"gcc -c -o OBJ/Best4OptMove.o Best4OptMove.c -O3 -Wall -IINCLUDE -DTWO_LEVEL_TREE -g\n",
|
||
"gcc -c -o OBJ/Best5OptMove.o Best5OptMove.c -O3 -Wall -IINCLUDE -DTWO_LEVEL_TREE -g\n",
|
||
"gcc -c -o OBJ/BestKOptMove.o BestKOptMove.c -O3 -Wall -IINCLUDE -DTWO_LEVEL_TREE -g\n",
|
||
"gcc -c -o OBJ/BestSpecialOptMove.o BestSpecialOptMove.c -O3 -Wall -IINCLUDE -DTWO_LEVEL_TREE -g\n",
|
||
"gcc -c -o OBJ/Between.o Between.c -O3 -Wall -IINCLUDE -DTWO_LEVEL_TREE -g\n",
|
||
"gcc -c -o OBJ/Between_SL.o Between_SL.c -O3 -Wall -IINCLUDE -DTWO_LEVEL_TREE -g\n",
|
||
"gcc -c -o OBJ/Between_SSL.o Between_SSL.c -O3 -Wall -IINCLUDE -DTWO_LEVEL_TREE -g\n",
|
||
"gcc -c -o OBJ/BridgeGain.o BridgeGain.c -O3 -Wall -IINCLUDE -DTWO_LEVEL_TREE -g\n",
|
||
"gcc -c -o OBJ/BuildKDTree.o BuildKDTree.c -O3 -Wall -IINCLUDE -DTWO_LEVEL_TREE -g\n",
|
||
"In file included from \u001b[01m\u001b[KINCLUDE/LKH.h:10:0\u001b[m\u001b[K,\n",
|
||
" from \u001b[01m\u001b[KBuildKDTree.c:1\u001b[m\u001b[K:\n",
|
||
"\u001b[01m\u001b[KBuildKDTree.c:\u001b[m\u001b[K In function ‘\u001b[01m\u001b[KBuildKDTree\u001b[m\u001b[K’:\n",
|
||
"\u001b[01m\u001b[KBuildKDTree.c:27:12:\u001b[m\u001b[K \u001b[01;35m\u001b[Kwarning: \u001b[m\u001b[Ksuggest parentheses around assignment used as truth value [\u001b[01;35m\u001b[K-Wparentheses\u001b[m\u001b[K]\n",
|
||
" assert(\u001b[01;35m\u001b[KK\u001b[m\u001b[KDTree = (Node **) malloc(Dimension * sizeof(Node *)));\n",
|
||
" \u001b[01;35m\u001b[K^\u001b[m\u001b[K\n",
|
||
"gcc -c -o OBJ/C.o C.c -O3 -Wall -IINCLUDE -DTWO_LEVEL_TREE -g\n",
|
||
"gcc -c -o OBJ/CandidateReport.o CandidateReport.c -O3 -Wall -IINCLUDE -DTWO_LEVEL_TREE -g\n",
|
||
"gcc -c -o OBJ/ChooseInitialTour.o ChooseInitialTour.c -O3 -Wall -IINCLUDE -DTWO_LEVEL_TREE -g\n",
|
||
"gcc -c -o OBJ/Connect.o Connect.c -O3 -Wall -IINCLUDE -DTWO_LEVEL_TREE -g\n",
|
||
"gcc -c -o OBJ/CreateCandidateSet.o CreateCandidateSet.c -O3 -Wall -IINCLUDE -DTWO_LEVEL_TREE -g\n",
|
||
"gcc -c -o OBJ/CreateDelaunayCandidateSet.o CreateDelaunayCandidateSet.c -O3 -Wall -IINCLUDE -DTWO_LEVEL_TREE -g\n",
|
||
"gcc -c -o OBJ/CreateNNCandidateSet.o CreateNNCandidateSet.c -O3 -Wall -IINCLUDE -DTWO_LEVEL_TREE -g\n",
|
||
"In file included from \u001b[01m\u001b[KINCLUDE/LKH.h:10:0\u001b[m\u001b[K,\n",
|
||
" from \u001b[01m\u001b[KCreateNNCandidateSet.c:1\u001b[m\u001b[K:\n",
|
||
"\u001b[01m\u001b[KCreateNNCandidateSet.c:\u001b[m\u001b[K In function ‘\u001b[01m\u001b[KCreateNNCandidateSet\u001b[m\u001b[K’:\n",
|
||
"\u001b[01m\u001b[KCreateNNCandidateSet.c:23:12:\u001b[m\u001b[K \u001b[01;35m\u001b[Kwarning: \u001b[m\u001b[Ksuggest parentheses around assignment used as truth value [\u001b[01;35m\u001b[K-Wparentheses\u001b[m\u001b[K]\n",
|
||
" assert(\u001b[01;35m\u001b[KX\u001b[m\u001b[KNearList = (Node **) malloc(Dimension * sizeof(Node *)));\n",
|
||
" \u001b[01;35m\u001b[K^\u001b[m\u001b[K\n",
|
||
"\u001b[01m\u001b[KCreateNNCandidateSet.c:24:12:\u001b[m\u001b[K \u001b[01;35m\u001b[Kwarning: \u001b[m\u001b[Ksuggest parentheses around assignment used as truth value [\u001b[01;35m\u001b[K-Wparentheses\u001b[m\u001b[K]\n",
|
||
" assert(\u001b[01;35m\u001b[KT\u001b[m\u001b[Ko = (Node **) malloc((K + 1) * sizeof(Node *)));\n",
|
||
" \u001b[01;35m\u001b[K^\u001b[m\u001b[K\n",
|
||
"\u001b[01m\u001b[KCreateNNCandidateSet.c:25:12:\u001b[m\u001b[K \u001b[01;35m\u001b[Kwarning: \u001b[m\u001b[Ksuggest parentheses around assignment used as truth value [\u001b[01;35m\u001b[K-Wparentheses\u001b[m\u001b[K]\n",
|
||
" assert(\u001b[01;35m\u001b[KC\u001b[m\u001b[Kost = (int *) malloc((K + 1) * sizeof(int)));\n",
|
||
" \u001b[01;35m\u001b[K^\u001b[m\u001b[K\n",
|
||
"gcc -c -o OBJ/Create_POPMUSIC_CandidateSet.o Create_POPMUSIC_CandidateSet.c -O3 -Wall -IINCLUDE -DTWO_LEVEL_TREE -g\n",
|
||
"gcc -c -o OBJ/CreateQuadrantCandidateSet.o CreateQuadrantCandidateSet.c -O3 -Wall -IINCLUDE -DTWO_LEVEL_TREE -g\n",
|
||
"In file included from \u001b[01m\u001b[KINCLUDE/LKH.h:10:0\u001b[m\u001b[K,\n",
|
||
" from \u001b[01m\u001b[KCreateQuadrantCandidateSet.c:1\u001b[m\u001b[K:\n",
|
||
"\u001b[01m\u001b[KCreateQuadrantCandidateSet.c:\u001b[m\u001b[K In function ‘\u001b[01m\u001b[KCreateQuadrantCandidateSet\u001b[m\u001b[K’:\n",
|
||
"\u001b[01m\u001b[KCreateQuadrantCandidateSet.c:50:12:\u001b[m\u001b[K \u001b[01;35m\u001b[Kwarning: \u001b[m\u001b[Ksuggest parentheses around assignment used as truth value [\u001b[01;35m\u001b[K-Wparentheses\u001b[m\u001b[K]\n",
|
||
" assert(\u001b[01;35m\u001b[KX\u001b[m\u001b[KMin =\n",
|
||
" \u001b[01;35m\u001b[K^\u001b[m\u001b[K\n",
|
||
"\u001b[01m\u001b[KCreateQuadrantCandidateSet.c:52:12:\u001b[m\u001b[K \u001b[01;35m\u001b[Kwarning: \u001b[m\u001b[Ksuggest parentheses around assignment used as truth value [\u001b[01;35m\u001b[K-Wparentheses\u001b[m\u001b[K]\n",
|
||
" assert(\u001b[01;35m\u001b[KX\u001b[m\u001b[KMax =\n",
|
||
" \u001b[01;35m\u001b[K^\u001b[m\u001b[K\n",
|
||
"\u001b[01m\u001b[KCreateQuadrantCandidateSet.c:54:12:\u001b[m\u001b[K \u001b[01;35m\u001b[Kwarning: \u001b[m\u001b[Ksuggest parentheses around assignment used as truth value [\u001b[01;35m\u001b[K-Wparentheses\u001b[m\u001b[K]\n",
|
||
" assert(\u001b[01;35m\u001b[KY\u001b[m\u001b[KMin =\n",
|
||
" \u001b[01;35m\u001b[K^\u001b[m\u001b[K\n",
|
||
"\u001b[01m\u001b[KCreateQuadrantCandidateSet.c:56:12:\u001b[m\u001b[K \u001b[01;35m\u001b[Kwarning: \u001b[m\u001b[Ksuggest parentheses around assignment used as truth value [\u001b[01;35m\u001b[K-Wparentheses\u001b[m\u001b[K]\n",
|
||
" assert(\u001b[01;35m\u001b[KY\u001b[m\u001b[KMax =\n",
|
||
" \u001b[01;35m\u001b[K^\u001b[m\u001b[K\n",
|
||
"\u001b[01m\u001b[KCreateQuadrantCandidateSet.c:59:16:\u001b[m\u001b[K \u001b[01;35m\u001b[Kwarning: \u001b[m\u001b[Ksuggest parentheses around assignment used as truth value [\u001b[01;35m\u001b[K-Wparentheses\u001b[m\u001b[K]\n",
|
||
" assert(\u001b[01;35m\u001b[KZ\u001b[m\u001b[KMin =\n",
|
||
" \u001b[01;35m\u001b[K^\u001b[m\u001b[K\n",
|
||
"\u001b[01m\u001b[KCreateQuadrantCandidateSet.c:61:16:\u001b[m\u001b[K \u001b[01;35m\u001b[Kwarning: \u001b[m\u001b[Ksuggest parentheses around assignment used as truth value [\u001b[01;35m\u001b[K-Wparentheses\u001b[m\u001b[K]\n",
|
||
" assert(\u001b[01;35m\u001b[KZ\u001b[m\u001b[KMax =\n",
|
||
" \u001b[01;35m\u001b[K^\u001b[m\u001b[K\n",
|
||
"\u001b[01m\u001b[KCreateQuadrantCandidateSet.c:70:12:\u001b[m\u001b[K \u001b[01;35m\u001b[Kwarning: \u001b[m\u001b[Ksuggest parentheses around assignment used as truth value [\u001b[01;35m\u001b[K-Wparentheses\u001b[m\u001b[K]\n",
|
||
" assert(\u001b[01;35m\u001b[KC\u001b[m\u001b[KandidateSet =\n",
|
||
" \u001b[01;35m\u001b[K^\u001b[m\u001b[K\n",
|
||
"\u001b[01m\u001b[KCreateQuadrantCandidateSet.c:113:16:\u001b[m\u001b[K \u001b[01;35m\u001b[Kwarning: \u001b[m\u001b[Ksuggest parentheses around assignment used as truth value [\u001b[01;35m\u001b[K-Wparentheses\u001b[m\u001b[K]\n",
|
||
" assert(\u001b[01;35m\u001b[KS\u001b[m\u001b[KavedCandidateSet =\n",
|
||
" \u001b[01;35m\u001b[K^\u001b[m\u001b[K\n",
|
||
"\u001b[01m\u001b[KCreateQuadrantCandidateSet.c:\u001b[m\u001b[K In function ‘\u001b[01m\u001b[KCreateNearestNeighborCandidateSet\u001b[m\u001b[K’:\n",
|
||
"\u001b[01m\u001b[KCreateQuadrantCandidateSet.c:182:12:\u001b[m\u001b[K \u001b[01;35m\u001b[Kwarning: \u001b[m\u001b[Ksuggest parentheses around assignment used as truth value [\u001b[01;35m\u001b[K-Wparentheses\u001b[m\u001b[K]\n",
|
||
" assert(\u001b[01;35m\u001b[KX\u001b[m\u001b[KMin =\n",
|
||
" \u001b[01;35m\u001b[K^\u001b[m\u001b[K\n",
|
||
"\u001b[01m\u001b[KCreateQuadrantCandidateSet.c:184:12:\u001b[m\u001b[K \u001b[01;35m\u001b[Kwarning: \u001b[m\u001b[Ksuggest parentheses around assignment used as truth value [\u001b[01;35m\u001b[K-Wparentheses\u001b[m\u001b[K]\n",
|
||
" assert(\u001b[01;35m\u001b[KX\u001b[m\u001b[KMax =\n",
|
||
" \u001b[01;35m\u001b[K^\u001b[m\u001b[K\n",
|
||
"\u001b[01m\u001b[KCreateQuadrantCandidateSet.c:186:12:\u001b[m\u001b[K \u001b[01;35m\u001b[Kwarning: \u001b[m\u001b[Ksuggest parentheses around assignment used as truth value [\u001b[01;35m\u001b[K-Wparentheses\u001b[m\u001b[K]\n",
|
||
" assert(\u001b[01;35m\u001b[KY\u001b[m\u001b[KMin =\n",
|
||
" \u001b[01;35m\u001b[K^\u001b[m\u001b[K\n",
|
||
"\u001b[01m\u001b[KCreateQuadrantCandidateSet.c:188:12:\u001b[m\u001b[K \u001b[01;35m\u001b[Kwarning: \u001b[m\u001b[Ksuggest parentheses around assignment used as truth value [\u001b[01;35m\u001b[K-Wparentheses\u001b[m\u001b[K]\n",
|
||
" assert(\u001b[01;35m\u001b[KY\u001b[m\u001b[KMax =\n",
|
||
" \u001b[01;35m\u001b[K^\u001b[m\u001b[K\n",
|
||
"\u001b[01m\u001b[KCreateQuadrantCandidateSet.c:191:16:\u001b[m\u001b[K \u001b[01;35m\u001b[Kwarning: \u001b[m\u001b[Ksuggest parentheses around assignment used as truth value [\u001b[01;35m\u001b[K-Wparentheses\u001b[m\u001b[K]\n",
|
||
" assert(\u001b[01;35m\u001b[KZ\u001b[m\u001b[KMin =\n",
|
||
" \u001b[01;35m\u001b[K^\u001b[m\u001b[K\n",
|
||
"\u001b[01m\u001b[KCreateQuadrantCandidateSet.c:193:16:\u001b[m\u001b[K \u001b[01;35m\u001b[Kwarning: \u001b[m\u001b[Ksuggest parentheses around assignment used as truth value [\u001b[01;35m\u001b[K-Wparentheses\u001b[m\u001b[K]\n",
|
||
" assert(\u001b[01;35m\u001b[KZ\u001b[m\u001b[KMax =\n",
|
||
" \u001b[01;35m\u001b[K^\u001b[m\u001b[K\n",
|
||
"\u001b[01m\u001b[KCreateQuadrantCandidateSet.c:200:12:\u001b[m\u001b[K \u001b[01;35m\u001b[Kwarning: \u001b[m\u001b[Ksuggest parentheses around assignment used as truth value [\u001b[01;35m\u001b[K-Wparentheses\u001b[m\u001b[K]\n",
|
||
" assert(\u001b[01;35m\u001b[KC\u001b[m\u001b[KandidateSet =\n",
|
||
" \u001b[01;35m\u001b[K^\u001b[m\u001b[K\n",
|
||
"\u001b[01m\u001b[KCreateQuadrantCandidateSet.c:224:16:\u001b[m\u001b[K \u001b[01;35m\u001b[Kwarning: \u001b[m\u001b[Ksuggest parentheses around assignment used as truth value [\u001b[01;35m\u001b[K-Wparentheses\u001b[m\u001b[K]\n",
|
||
" assert(\u001b[01;35m\u001b[KS\u001b[m\u001b[KavedCandidateSet =\n",
|
||
" \u001b[01;35m\u001b[K^\u001b[m\u001b[K\n",
|
||
"gcc -c -o OBJ/CTSP_InitialTour.o CTSP_InitialTour.c -O3 -Wall -IINCLUDE -DTWO_LEVEL_TREE -g\n",
|
||
"gcc -c -o OBJ/CVRP_InitialTour.o CVRP_InitialTour.c -O3 -Wall -IINCLUDE -DTWO_LEVEL_TREE -g\n",
|
||
"In file included from \u001b[01m\u001b[KINCLUDE/LKH.h:10:0\u001b[m\u001b[K,\n",
|
||
" from \u001b[01m\u001b[KCVRP_InitialTour.c:1\u001b[m\u001b[K:\n",
|
||
"\u001b[01m\u001b[KCVRP_InitialTour.c:\u001b[m\u001b[K In function ‘\u001b[01m\u001b[KCreateS\u001b[m\u001b[K’:\n",
|
||
"\u001b[01m\u001b[KCVRP_InitialTour.c:138:12:\u001b[m\u001b[K \u001b[01;35m\u001b[Kwarning: \u001b[m\u001b[Ksuggest parentheses around assignment used as truth value [\u001b[01;35m\u001b[K-Wparentheses\u001b[m\u001b[K]\n",
|
||
" assert(\u001b[01;35m\u001b[KS\u001b[m\u001b[K =\n",
|
||
" \u001b[01;35m\u001b[K^\u001b[m\u001b[K\n",
|
||
"gcc -c -o OBJ/Delaunay.o Delaunay.c -O3 -Wall -IINCLUDE -DTWO_LEVEL_TREE -g\n",
|
||
"In file included from \u001b[01m\u001b[KINCLUDE/LKH.h:10:0\u001b[m\u001b[K,\n",
|
||
" from \u001b[01m\u001b[KDelaunay.c:1\u001b[m\u001b[K:\n",
|
||
"\u001b[01m\u001b[KDelaunay.c:\u001b[m\u001b[K In function ‘\u001b[01m\u001b[Kdelaunay\u001b[m\u001b[K’:\n",
|
||
"\u001b[01m\u001b[KDelaunay.c:80:12:\u001b[m\u001b[K \u001b[01;35m\u001b[Kwarning: \u001b[m\u001b[Ksuggest parentheses around assignment used as truth value [\u001b[01;35m\u001b[K-Wparentheses\u001b[m\u001b[K]\n",
|
||
" assert(\u001b[01;35m\u001b[Kp\u001b[m\u001b[K_sorted = (point **) malloc(n * sizeof(point *)));\n",
|
||
" \u001b[01;35m\u001b[K^\u001b[m\u001b[K\n",
|
||
"\u001b[01m\u001b[KDelaunay.c:\u001b[m\u001b[K In function ‘\u001b[01m\u001b[Kalloc_memory\u001b[m\u001b[K’:\n",
|
||
"\u001b[01m\u001b[KDelaunay.c:477:12:\u001b[m\u001b[K \u001b[01;35m\u001b[Kwarning: \u001b[m\u001b[Ksuggest parentheses around assignment used as truth value [\u001b[01;35m\u001b[K-Wparentheses\u001b[m\u001b[K]\n",
|
||
" assert(\u001b[01;35m\u001b[Kp\u001b[m\u001b[K_array = (point *) calloc(n, sizeof(point)));\n",
|
||
" \u001b[01;35m\u001b[K^\u001b[m\u001b[K\n",
|
||
"\u001b[01m\u001b[KDelaunay.c:479:12:\u001b[m\u001b[K \u001b[01;35m\u001b[Kwarning: \u001b[m\u001b[Ksuggest parentheses around assignment used as truth value [\u001b[01;35m\u001b[K-Wparentheses\u001b[m\u001b[K]\n",
|
||
" assert(\u001b[01;35m\u001b[Ke\u001b[m\u001b[K_array = e = (edge *) calloc(n_free_e, sizeof(edge)));\n",
|
||
" \u001b[01;35m\u001b[K^\u001b[m\u001b[K\n",
|
||
"\u001b[01m\u001b[KDelaunay.c:480:12:\u001b[m\u001b[K \u001b[01;35m\u001b[Kwarning: \u001b[m\u001b[Ksuggest parentheses around assignment used as truth value [\u001b[01;35m\u001b[K-Wparentheses\u001b[m\u001b[K]\n",
|
||
" assert(\u001b[01;35m\u001b[Kf\u001b[m\u001b[Kree_list_e = (edge **) calloc(n_free_e, sizeof(edge *)));\n",
|
||
" \u001b[01;35m\u001b[K^\u001b[m\u001b[K\n",
|
||
"gcc -c -o OBJ/Distance.o Distance.c -O3 -Wall -IINCLUDE -DTWO_LEVEL_TREE -g\n",
|
||
"gcc -c -o OBJ/Distance_MTSP.o Distance_MTSP.c -O3 -Wall -IINCLUDE -DTWO_LEVEL_TREE -g\n",
|
||
"gcc -c -o OBJ/Distance_SOP.o Distance_SOP.c -O3 -Wall -IINCLUDE -DTWO_LEVEL_TREE -g\n",
|
||
"gcc -c -o OBJ/Distance_SPECIAL.o Distance_SPECIAL.c -O3 -Wall -IINCLUDE -DTWO_LEVEL_TREE -g\n",
|
||
"gcc -c -o OBJ/eprintf.o eprintf.c -O3 -Wall -IINCLUDE -DTWO_LEVEL_TREE -g\n",
|
||
"gcc -c -o OBJ/ERXT.o ERXT.c -O3 -Wall -IINCLUDE -DTWO_LEVEL_TREE -g\n",
|
||
"gcc -c -o OBJ/Excludable.o Excludable.c -O3 -Wall -IINCLUDE -DTWO_LEVEL_TREE -g\n",
|
||
"gcc -c -o OBJ/Exclude.o Exclude.c -O3 -Wall -IINCLUDE -DTWO_LEVEL_TREE -g\n",
|
||
"gcc -c -o OBJ/FindTour.o FindTour.c -O3 -Wall -IINCLUDE -DTWO_LEVEL_TREE -g\n",
|
||
"gcc -c -o OBJ/FixedOrCommonCandidates.o FixedOrCommonCandidates.c -O3 -Wall -IINCLUDE -DTWO_LEVEL_TREE -g\n",
|
||
"gcc -c -o OBJ/Flip.o Flip.c -O3 -Wall -IINCLUDE -DTWO_LEVEL_TREE -g\n",
|
||
"gcc -c -o OBJ/Flip_SL.o Flip_SL.c -O3 -Wall -IINCLUDE -DTWO_LEVEL_TREE -g\n",
|
||
"gcc -c -o OBJ/Flip_SSL.o Flip_SSL.c -O3 -Wall -IINCLUDE -DTWO_LEVEL_TREE -g\n",
|
||
"gcc -c -o OBJ/Forbidden.o Forbidden.c -O3 -Wall -IINCLUDE -DTWO_LEVEL_TREE -g\n",
|
||
"gcc -c -o OBJ/FreeStructures.o FreeStructures.c -O3 -Wall -IINCLUDE -DTWO_LEVEL_TREE -g\n",
|
||
"gcc -c -o OBJ/fscanint.o fscanint.c -O3 -Wall -IINCLUDE -DTWO_LEVEL_TREE -g\n",
|
||
"gcc -c -o OBJ/Gain23.o Gain23.c -O3 -Wall -IINCLUDE -DTWO_LEVEL_TREE -g\n",
|
||
"gcc -c -o OBJ/GenerateCandidates.o GenerateCandidates.c -O3 -Wall -IINCLUDE -DTWO_LEVEL_TREE -g\n",
|
||
"In file included from \u001b[01m\u001b[KINCLUDE/LKH.h:10:0\u001b[m\u001b[K,\n",
|
||
" from \u001b[01m\u001b[KGenerateCandidates.c:1\u001b[m\u001b[K:\n",
|
||
"\u001b[01m\u001b[KGenerateCandidates.c:\u001b[m\u001b[K In function ‘\u001b[01m\u001b[KGenerateCandidates\u001b[m\u001b[K’:\n",
|
||
"\u001b[01m\u001b[KGenerateCandidates.c:57:20:\u001b[m\u001b[K \u001b[01;35m\u001b[Kwarning: \u001b[m\u001b[Ksuggest parentheses around assignment used as truth value [\u001b[01;35m\u001b[K-Wparentheses\u001b[m\u001b[K]\n",
|
||
" assert(\u001b[01;35m\u001b[KF\u001b[m\u001b[Krom->CandidateSet =\n",
|
||
" \u001b[01;35m\u001b[K^\u001b[m\u001b[K\n",
|
||
"gcc -c -o OBJ/Genetic.o Genetic.c -O3 -Wall -IINCLUDE -DTWO_LEVEL_TREE -g\n",
|
||
"In file included from \u001b[01m\u001b[KINCLUDE/LKH.h:10:0\u001b[m\u001b[K,\n",
|
||
" from \u001b[01m\u001b[KGenetic.c:1\u001b[m\u001b[K:\n",
|
||
"\u001b[01m\u001b[KGenetic.c:\u001b[m\u001b[K In function ‘\u001b[01m\u001b[KAddToPopulation\u001b[m\u001b[K’:\n",
|
||
"\u001b[01m\u001b[KGenetic.c:16:16:\u001b[m\u001b[K \u001b[01;35m\u001b[Kwarning: \u001b[m\u001b[Ksuggest parentheses around assignment used as truth value [\u001b[01;35m\u001b[K-Wparentheses\u001b[m\u001b[K]\n",
|
||
" assert(\u001b[01;35m\u001b[KP\u001b[m\u001b[Kopulation =\n",
|
||
" \u001b[01;35m\u001b[K^\u001b[m\u001b[K\n",
|
||
"\u001b[01m\u001b[KGenetic.c:19:20:\u001b[m\u001b[K \u001b[01;35m\u001b[Kwarning: \u001b[m\u001b[Ksuggest parentheses around assignment used as truth value [\u001b[01;35m\u001b[K-Wparentheses\u001b[m\u001b[K]\n",
|
||
" assert(\u001b[01;35m\u001b[KP\u001b[m\u001b[Kopulation[i] =\n",
|
||
" \u001b[01;35m\u001b[K^\u001b[m\u001b[K\n",
|
||
"\u001b[01m\u001b[KGenetic.c:21:16:\u001b[m\u001b[K \u001b[01;35m\u001b[Kwarning: \u001b[m\u001b[Ksuggest parentheses around assignment used as truth value [\u001b[01;35m\u001b[K-Wparentheses\u001b[m\u001b[K]\n",
|
||
" assert(\u001b[01;35m\u001b[KP\u001b[m\u001b[KenaltyFitness =\n",
|
||
" \u001b[01;35m\u001b[K^\u001b[m\u001b[K\n",
|
||
"\u001b[01m\u001b[KGenetic.c:23:16:\u001b[m\u001b[K \u001b[01;35m\u001b[Kwarning: \u001b[m\u001b[Ksuggest parentheses around assignment used as truth value [\u001b[01;35m\u001b[K-Wparentheses\u001b[m\u001b[K]\n",
|
||
" assert(\u001b[01;35m\u001b[KF\u001b[m\u001b[Kitness =\n",
|
||
" \u001b[01;35m\u001b[K^\u001b[m\u001b[K\n",
|
||
"gcc -c -o OBJ/GeoConversion.o GeoConversion.c -O3 -Wall -IINCLUDE -DTWO_LEVEL_TREE -g\n",
|
||
"gcc -c -o OBJ/GetTime.o GetTime.c -O3 -Wall -IINCLUDE -DTWO_LEVEL_TREE -g\n",
|
||
"gcc -c -o OBJ/GreedyTour.o GreedyTour.c -O3 -Wall -IINCLUDE -DTWO_LEVEL_TREE -g\n",
|
||
"In file included from \u001b[01m\u001b[KINCLUDE/LKH.h:10:0\u001b[m\u001b[K,\n",
|
||
" from \u001b[01m\u001b[KGreedyTour.c:1\u001b[m\u001b[K:\n",
|
||
"\u001b[01m\u001b[KGreedyTour.c:\u001b[m\u001b[K In function ‘\u001b[01m\u001b[KGreedyTour\u001b[m\u001b[K’:\n",
|
||
"\u001b[01m\u001b[KGreedyTour.c:141:20:\u001b[m\u001b[K \u001b[01;35m\u001b[Kwarning: \u001b[m\u001b[Ksuggest parentheses around assignment used as truth value [\u001b[01;35m\u001b[K-Wparentheses\u001b[m\u001b[K]\n",
|
||
" assert(\u001b[01;35m\u001b[KP\u001b[m\u001b[Kerm = (Node **) malloc(Count * sizeof(Node *)));\n",
|
||
" \u001b[01;35m\u001b[K^\u001b[m\u001b[K\n",
|
||
"gcc -c -o OBJ/Hashing.o Hashing.c -O3 -Wall -IINCLUDE -DTWO_LEVEL_TREE -g\n",
|
||
"gcc -c -o OBJ/Heap.o Heap.c -O3 -Wall -IINCLUDE -DTWO_LEVEL_TREE -g\n",
|
||
"In file included from \u001b[01m\u001b[KINCLUDE/LKH.h:10:0\u001b[m\u001b[K,\n",
|
||
" from \u001b[01m\u001b[KHeap.c:1\u001b[m\u001b[K:\n",
|
||
"\u001b[01m\u001b[KHeap.c:\u001b[m\u001b[K In function ‘\u001b[01m\u001b[KHeapMake\u001b[m\u001b[K’:\n",
|
||
"\u001b[01m\u001b[KHeap.c:22:12:\u001b[m\u001b[K \u001b[01;35m\u001b[Kwarning: \u001b[m\u001b[Ksuggest parentheses around assignment used as truth value [\u001b[01;35m\u001b[K-Wparentheses\u001b[m\u001b[K]\n",
|
||
" assert(\u001b[01;35m\u001b[KH\u001b[m\u001b[Keap = (Node **) malloc((Size + 1) * sizeof(Node *)));\n",
|
||
" \u001b[01;35m\u001b[K^\u001b[m\u001b[K\n",
|
||
"gcc -c -o OBJ/Improvement.o Improvement.c -O3 -Wall -IINCLUDE -DTWO_LEVEL_TREE -g\n",
|
||
"gcc -c -o OBJ/IsBackboneCandidate.o IsBackboneCandidate.c -O3 -Wall -IINCLUDE -DTWO_LEVEL_TREE -g\n",
|
||
"gcc -c -o OBJ/IsCandidate.o IsCandidate.c -O3 -Wall -IINCLUDE -DTWO_LEVEL_TREE -g\n",
|
||
"gcc -c -o OBJ/IsCommonEdge.o IsCommonEdge.c -O3 -Wall -IINCLUDE -DTWO_LEVEL_TREE -g\n",
|
||
"gcc -c -o OBJ/IsPossibleCandidate.o IsPossibleCandidate.c -O3 -Wall -IINCLUDE -DTWO_LEVEL_TREE -g\n",
|
||
"gcc -c -o OBJ/KSwapKick.o KSwapKick.c -O3 -Wall -IINCLUDE -DTWO_LEVEL_TREE -g\n",
|
||
"In file included from \u001b[01m\u001b[KINCLUDE/LKH.h:10:0\u001b[m\u001b[K,\n",
|
||
" from \u001b[01m\u001b[KKSwapKick.c:1\u001b[m\u001b[K:\n",
|
||
"\u001b[01m\u001b[KKSwapKick.c:\u001b[m\u001b[K In function ‘\u001b[01m\u001b[KKSwapKick\u001b[m\u001b[K’:\n",
|
||
"\u001b[01m\u001b[KKSwapKick.c:22:12:\u001b[m\u001b[K \u001b[01;35m\u001b[Kwarning: \u001b[m\u001b[Ksuggest parentheses around assignment used as truth value [\u001b[01;35m\u001b[K-Wparentheses\u001b[m\u001b[K]\n",
|
||
" assert(\u001b[01;35m\u001b[Ks\u001b[m\u001b[K = (Node **) malloc(K * sizeof(Node *)));\n",
|
||
" \u001b[01;35m\u001b[K^\u001b[m\u001b[K\n",
|
||
"\u001b[01m\u001b[KKSwapKick.c:33:5:\u001b[m\u001b[K \u001b[01;35m\u001b[Kwarning: \u001b[m\u001b[Kassuming signed overflow does not occur when assuming that (X + c) < X is always false [\u001b[01;35m\u001b[K-Wstrict-overflow\u001b[m\u001b[K]\n",
|
||
" \u001b[01;35m\u001b[Kfor\u001b[m\u001b[K (i = 1; i < K; i++) {\n",
|
||
" \u001b[01;35m\u001b[K^~~\u001b[m\u001b[K\n",
|
||
"gcc -c -o OBJ/LinKernighan.o LinKernighan.c -O3 -Wall -IINCLUDE -DTWO_LEVEL_TREE -g\n",
|
||
"gcc -c -o OBJ/LKHmain.o LKHmain.c -O3 -Wall -IINCLUDE -DTWO_LEVEL_TREE -g\n",
|
||
"gcc -c -o OBJ/Make2OptMove.o Make2OptMove.c -O3 -Wall -IINCLUDE -DTWO_LEVEL_TREE -g\n",
|
||
"gcc -c -o OBJ/Make3OptMove.o Make3OptMove.c -O3 -Wall -IINCLUDE -DTWO_LEVEL_TREE -g\n",
|
||
"gcc -c -o OBJ/Make4OptMove.o Make4OptMove.c -O3 -Wall -IINCLUDE -DTWO_LEVEL_TREE -g\n",
|
||
"gcc -c -o OBJ/Make5OptMove.o Make5OptMove.c -O3 -Wall -IINCLUDE -DTWO_LEVEL_TREE -g\n",
|
||
"gcc -c -o OBJ/MakeKOptMove.o MakeKOptMove.c -O3 -Wall -IINCLUDE -DTWO_LEVEL_TREE -g\n",
|
||
"gcc -c -o OBJ/MergeTourWithBestTour.o MergeTourWithBestTour.c -O3 -Wall -IINCLUDE -DTWO_LEVEL_TREE -g\n",
|
||
"gcc -c -o OBJ/MergeWithTourIPT.o MergeWithTourIPT.c -O3 -Wall -IINCLUDE -DTWO_LEVEL_TREE -g\n",
|
||
"gcc -c -o OBJ/Minimum1TreeCost.o Minimum1TreeCost.c -O3 -Wall -IINCLUDE -DTWO_LEVEL_TREE -g\n",
|
||
"gcc -c -o OBJ/MinimumSpanningTree.o MinimumSpanningTree.c -O3 -Wall -IINCLUDE -DTWO_LEVEL_TREE -g\n",
|
||
"gcc -c -o OBJ/MTSP2TSP.o MTSP2TSP.c -O3 -Wall -IINCLUDE -DTWO_LEVEL_TREE -g\n",
|
||
"In file included from \u001b[01m\u001b[KINCLUDE/LKH.h:10:0\u001b[m\u001b[K,\n",
|
||
" from \u001b[01m\u001b[KMTSP2TSP.c:1\u001b[m\u001b[K:\n",
|
||
"\u001b[01m\u001b[KMTSP2TSP.c:\u001b[m\u001b[K In function ‘\u001b[01m\u001b[KMTSP2TSP\u001b[m\u001b[K’:\n",
|
||
"\u001b[01m\u001b[KMTSP2TSP.c:36:16:\u001b[m\u001b[K \u001b[01;35m\u001b[Kwarning: \u001b[m\u001b[Ksuggest parentheses around assignment used as truth value [\u001b[01;35m\u001b[K-Wparentheses\u001b[m\u001b[K]\n",
|
||
" assert(\u001b[01;35m\u001b[KN\u001b[m\u001b[KodeSet =\n",
|
||
" \u001b[01;35m\u001b[K^\u001b[m\u001b[K\n",
|
||
"\u001b[01m\u001b[KMTSP2TSP.c:69:24:\u001b[m\u001b[K \u001b[01;35m\u001b[Kwarning: \u001b[m\u001b[Ksuggest parentheses around assignment used as truth value [\u001b[01;35m\u001b[K-Wparentheses\u001b[m\u001b[K]\n",
|
||
" assert(\u001b[01;35m\u001b[KN\u001b[m\u001b[K->MergeSuc =\n",
|
||
" \u001b[01;35m\u001b[K^\u001b[m\u001b[K\n",
|
||
"gcc -c -o OBJ/MTSP_InitialTour.o MTSP_InitialTour.c -O3 -Wall -IINCLUDE -DTWO_LEVEL_TREE -g\n",
|
||
"gcc -c -o OBJ/MTSP_Report.o MTSP_Report.c -O3 -Wall -IINCLUDE -DTWO_LEVEL_TREE -g\n",
|
||
"gcc -c -o OBJ/MTSP_WriteSolution.o MTSP_WriteSolution.c -O3 -Wall -IINCLUDE -DTWO_LEVEL_TREE -g\n",
|
||
"In file included from \u001b[01m\u001b[KINCLUDE/LKH.h:10:0\u001b[m\u001b[K,\n",
|
||
" from \u001b[01m\u001b[KMTSP_WriteSolution.c:1\u001b[m\u001b[K:\n",
|
||
"\u001b[01m\u001b[KMTSP_WriteSolution.c:\u001b[m\u001b[K In function ‘\u001b[01m\u001b[KMTSP_WriteSolution\u001b[m\u001b[K’:\n",
|
||
"\u001b[01m\u001b[KMTSP_WriteSolution.c:16:12:\u001b[m\u001b[K \u001b[01;35m\u001b[Kwarning: \u001b[m\u001b[Ksuggest parentheses around assignment used as truth value [\u001b[01;35m\u001b[K-Wparentheses\u001b[m\u001b[K]\n",
|
||
" assert(\u001b[01;35m\u001b[KS\u001b[m\u001b[KolutionFile = fopen(FullFileName, \"w\"));\n",
|
||
" \u001b[01;35m\u001b[K^\u001b[m\u001b[K\n",
|
||
"gcc -c -o OBJ/NormalizeNodeList.o NormalizeNodeList.c -O3 -Wall -IINCLUDE -DTWO_LEVEL_TREE -g\n",
|
||
"gcc -c -o OBJ/NormalizeSegmentList.o NormalizeSegmentList.c -O3 -Wall -IINCLUDE -DTWO_LEVEL_TREE -g\n",
|
||
"gcc -c -o OBJ/OrderCandidateSet.o OrderCandidateSet.c -O3 -Wall -IINCLUDE -DTWO_LEVEL_TREE -g\n",
|
||
"gcc -c -o OBJ/PatchCycles.o PatchCycles.c -O3 -Wall -IINCLUDE -DTWO_LEVEL_TREE -g\n",
|
||
"In file included from \u001b[01m\u001b[KINCLUDE/LKH.h:10:0\u001b[m\u001b[K,\n",
|
||
" from \u001b[01m\u001b[KPatchCycles.c:2\u001b[m\u001b[K:\n",
|
||
"\u001b[01m\u001b[KPatchCycles.c:\u001b[m\u001b[K In function ‘\u001b[01m\u001b[KPatchCyclesRec\u001b[m\u001b[K’:\n",
|
||
"\u001b[01m\u001b[KPatchCycles.c:112:28:\u001b[m\u001b[K \u001b[01;35m\u001b[Kwarning: \u001b[m\u001b[Ksuggest parentheses around assignment used as truth value [\u001b[01;35m\u001b[K-Wparentheses\u001b[m\u001b[K]\n",
|
||
" assert(\u001b[01;35m\u001b[Kc\u001b[m\u001b[KycleSaved =\n",
|
||
" \u001b[01;35m\u001b[K^\u001b[m\u001b[K\n",
|
||
"\u001b[01m\u001b[KPatchCycles.c:146:32:\u001b[m\u001b[K \u001b[01;35m\u001b[Kwarning: \u001b[m\u001b[Ksuggest parentheses around assignment used as truth value [\u001b[01;35m\u001b[K-Wparentheses\u001b[m\u001b[K]\n",
|
||
" assert(\u001b[01;35m\u001b[Kp\u001b[m\u001b[KSaved =\n",
|
||
" \u001b[01;35m\u001b[K^\u001b[m\u001b[K\n",
|
||
"\u001b[01m\u001b[KPatchCycles.c:208:36:\u001b[m\u001b[K \u001b[01;35m\u001b[Kwarning: \u001b[m\u001b[Ksuggest parentheses around assignment used as truth value [\u001b[01;35m\u001b[K-Wparentheses\u001b[m\u001b[K]\n",
|
||
" assert(\u001b[01;35m\u001b[Kp\u001b[m\u001b[KSaved =\n",
|
||
" \u001b[01;35m\u001b[K^\u001b[m\u001b[K\n",
|
||
"\u001b[01m\u001b[KPatchCycles.c:235:20:\u001b[m\u001b[K \u001b[01;35m\u001b[Kwarning: \u001b[m\u001b[Ksuggest parentheses around assignment used as truth value [\u001b[01;35m\u001b[K-Wparentheses\u001b[m\u001b[K]\n",
|
||
" assert(\u001b[01;35m\u001b[Kp\u001b[m\u001b[KSaved = (int *) malloc(2 * k * sizeof(int)));\n",
|
||
" \u001b[01;35m\u001b[K^\u001b[m\u001b[K\n",
|
||
"\u001b[01m\u001b[KPatchCycles.c:\u001b[m\u001b[K In function ‘\u001b[01m\u001b[KShortestCycle\u001b[m\u001b[K’:\n",
|
||
"\u001b[01m\u001b[KPatchCycles.c:304:12:\u001b[m\u001b[K \u001b[01;35m\u001b[Kwarning: \u001b[m\u001b[Ksuggest parentheses around assignment used as truth value [\u001b[01;35m\u001b[K-Wparentheses\u001b[m\u001b[K]\n",
|
||
" assert(\u001b[01;35m\u001b[KS\u001b[m\u001b[Kize = (int *) calloc(1 + M, sizeof(int)));\n",
|
||
" \u001b[01;35m\u001b[K^\u001b[m\u001b[K\n",
|
||
"gcc -c -o OBJ/Penalty_ACVRP.o Penalty_ACVRP.c -O3 -Wall -IINCLUDE -DTWO_LEVEL_TREE -g\n",
|
||
"gcc -c -o OBJ/Penalty_BWTSP.o Penalty_BWTSP.c -O3 -Wall -IINCLUDE -DTWO_LEVEL_TREE -g\n",
|
||
"gcc -c -o OBJ/Penalty_CCVRP.o Penalty_CCVRP.c -O3 -Wall -IINCLUDE -DTWO_LEVEL_TREE -g\n",
|
||
"gcc -c -o OBJ/Penalty_CVRP.o Penalty_CVRP.c -O3 -Wall -IINCLUDE -DTWO_LEVEL_TREE -g\n",
|
||
"gcc -c -o OBJ/Penalty_CVRPTW.o Penalty_CVRPTW.c -O3 -Wall -IINCLUDE -DTWO_LEVEL_TREE -g\n",
|
||
"gcc -c -o OBJ/Penalty_CTSP.o Penalty_CTSP.c -O3 -Wall -IINCLUDE -DTWO_LEVEL_TREE -g\n",
|
||
"gcc -c -o OBJ/Penalty_1_PDTSP.o Penalty_1_PDTSP.c -O3 -Wall -IINCLUDE -DTWO_LEVEL_TREE -g\n",
|
||
"gcc -c -o OBJ/Penalty_MLP.o Penalty_MLP.c -O3 -Wall -IINCLUDE -DTWO_LEVEL_TREE -g\n",
|
||
"gcc -c -o OBJ/Penalty_M_PDTSP.o Penalty_M_PDTSP.c -O3 -Wall -IINCLUDE -DTWO_LEVEL_TREE -g\n",
|
||
"In file included from \u001b[01m\u001b[KINCLUDE/LKH.h:10:0\u001b[m\u001b[K,\n",
|
||
" from \u001b[01m\u001b[KPenalty_M_PDTSP.c:1\u001b[m\u001b[K:\n",
|
||
"\u001b[01m\u001b[KPenalty_M_PDTSP.c:\u001b[m\u001b[K In function ‘\u001b[01m\u001b[KPenalty_M_PDTSP\u001b[m\u001b[K’:\n",
|
||
"\u001b[01m\u001b[KPenalty_M_PDTSP.c:13:16:\u001b[m\u001b[K \u001b[01;35m\u001b[Kwarning: \u001b[m\u001b[Ksuggest parentheses around assignment used as truth value [\u001b[01;35m\u001b[K-Wparentheses\u001b[m\u001b[K]\n",
|
||
" assert(\u001b[01;35m\u001b[KC\u001b[m\u001b[KomLoad = (int *) malloc(DemandDimension * sizeof(int)));\n",
|
||
" \u001b[01;35m\u001b[K^\u001b[m\u001b[K\n",
|
||
"\u001b[01m\u001b[KPenalty_M_PDTSP.c:14:16:\u001b[m\u001b[K \u001b[01;35m\u001b[Kwarning: \u001b[m\u001b[Ksuggest parentheses around assignment used as truth value [\u001b[01;35m\u001b[K-Wparentheses\u001b[m\u001b[K]\n",
|
||
" assert(\u001b[01;35m\u001b[KM\u001b[m\u001b[Kin = (int *) malloc(DemandDimension * sizeof(int)));\n",
|
||
" \u001b[01;35m\u001b[K^\u001b[m\u001b[K\n",
|
||
"gcc -c -o OBJ/Penalty_M1_PDTSP.o Penalty_M1_PDTSP.c -O3 -Wall -IINCLUDE -DTWO_LEVEL_TREE -g\n",
|
||
"gcc -c -o OBJ/Penalty_MTSP.o Penalty_MTSP.c -O3 -Wall -IINCLUDE -DTWO_LEVEL_TREE -g\n",
|
||
"gcc -c -o OBJ/Penalty_OVRP.o Penalty_OVRP.c -O3 -Wall -IINCLUDE -DTWO_LEVEL_TREE -g\n",
|
||
"gcc -c -o OBJ/Penalty_PDPTW.o Penalty_PDPTW.c -O3 -Wall -IINCLUDE -DTWO_LEVEL_TREE -g\n",
|
||
"gcc -c -o OBJ/Penalty_PDTSP.o Penalty_PDTSP.c -O3 -Wall -IINCLUDE -DTWO_LEVEL_TREE -g\n",
|
||
"gcc -c -o OBJ/Penalty_PDTSPF.o Penalty_PDTSPF.c -O3 -Wall -IINCLUDE -DTWO_LEVEL_TREE -g\n",
|
||
"In file included from \u001b[01m\u001b[KINCLUDE/LKH.h:10:0\u001b[m\u001b[K,\n",
|
||
" from \u001b[01m\u001b[KPenalty_PDTSPF.c:1\u001b[m\u001b[K:\n",
|
||
"\u001b[01m\u001b[KPenalty_PDTSPF.c:\u001b[m\u001b[K In function ‘\u001b[01m\u001b[KPenalty_PDTSPF\u001b[m\u001b[K’:\n",
|
||
"\u001b[01m\u001b[KPenalty_PDTSPF.c:15:16:\u001b[m\u001b[K \u001b[01;35m\u001b[Kwarning: \u001b[m\u001b[Ksuggest parentheses around assignment used as truth value [\u001b[01;35m\u001b[K-Wparentheses\u001b[m\u001b[K]\n",
|
||
" assert(\u001b[01;35m\u001b[KQ\u001b[m\u001b[Kueue = (int *) malloc(Capacity * sizeof(int)));\n",
|
||
" \u001b[01;35m\u001b[K^\u001b[m\u001b[K\n",
|
||
"gcc -c -o OBJ/Penalty_PDTSPL.o Penalty_PDTSPL.c -O3 -Wall -IINCLUDE -DTWO_LEVEL_TREE -g\n",
|
||
"In file included from \u001b[01m\u001b[KINCLUDE/LKH.h:10:0\u001b[m\u001b[K,\n",
|
||
" from \u001b[01m\u001b[KPenalty_PDTSPL.c:1\u001b[m\u001b[K:\n",
|
||
"\u001b[01m\u001b[KPenalty_PDTSPL.c:\u001b[m\u001b[K In function ‘\u001b[01m\u001b[KPenalty_PDTSPL\u001b[m\u001b[K’:\n",
|
||
"\u001b[01m\u001b[KPenalty_PDTSPL.c:15:16:\u001b[m\u001b[K \u001b[01;35m\u001b[Kwarning: \u001b[m\u001b[Ksuggest parentheses around assignment used as truth value [\u001b[01;35m\u001b[K-Wparentheses\u001b[m\u001b[K]\n",
|
||
" assert(\u001b[01;35m\u001b[KS\u001b[m\u001b[Ktack = (int *) malloc(Dim * sizeof(int)));\n",
|
||
" \u001b[01;35m\u001b[K^\u001b[m\u001b[K\n",
|
||
"gcc -c -o OBJ/Penalty_RCTVRP.o Penalty_RCTVRP.c -O3 -Wall -IINCLUDE -DTWO_LEVEL_TREE -g\n",
|
||
"gcc -c -o OBJ/Penalty_SOP.o Penalty_SOP.c -O3 -Wall -IINCLUDE -DTWO_LEVEL_TREE -g\n",
|
||
"gcc -c -o OBJ/Penalty_TRP.o Penalty_TRP.c -O3 -Wall -IINCLUDE -DTWO_LEVEL_TREE -g\n",
|
||
"gcc -c -o OBJ/Penalty_TSPDL.o Penalty_TSPDL.c -O3 -Wall -IINCLUDE -DTWO_LEVEL_TREE -g\n",
|
||
"gcc -c -o OBJ/Penalty_TSPPD.o Penalty_TSPPD.c -O3 -Wall -IINCLUDE -DTWO_LEVEL_TREE -g\n",
|
||
"gcc -c -o OBJ/Penalty_TSPTW.o Penalty_TSPTW.c -O3 -Wall -IINCLUDE -DTWO_LEVEL_TREE -g\n",
|
||
"gcc -c -o OBJ/Penalty_VRPB.o Penalty_VRPB.c -O3 -Wall -IINCLUDE -DTWO_LEVEL_TREE -g\n",
|
||
"gcc -c -o OBJ/Penalty_VRPBTW.o Penalty_VRPBTW.c -O3 -Wall -IINCLUDE -DTWO_LEVEL_TREE -g\n",
|
||
"gcc -c -o OBJ/Penalty_VRPPD.o Penalty_VRPPD.c -O3 -Wall -IINCLUDE -DTWO_LEVEL_TREE -g\n",
|
||
"gcc -c -o OBJ/PDPTW_Reduce.o PDPTW_Reduce.c -O3 -Wall -IINCLUDE -DTWO_LEVEL_TREE -g\n",
|
||
"gcc -c -o OBJ/printff.o printff.c -O3 -Wall -IINCLUDE -DTWO_LEVEL_TREE -g\n",
|
||
"gcc -c -o OBJ/PrintParameters.o PrintParameters.c -O3 -Wall -IINCLUDE -DTWO_LEVEL_TREE -g\n",
|
||
"gcc -c -o OBJ/Random.o Random.c -O3 -Wall -IINCLUDE -DTWO_LEVEL_TREE -g\n",
|
||
"gcc -c -o OBJ/ReadCandidates.o ReadCandidates.c -O3 -Wall -IINCLUDE -DTWO_LEVEL_TREE -g\n",
|
||
"In file included from \u001b[01m\u001b[KINCLUDE/LKH.h:10:0\u001b[m\u001b[K,\n",
|
||
" from \u001b[01m\u001b[KReadCandidates.c:1\u001b[m\u001b[K:\n",
|
||
"\u001b[01m\u001b[KReadCandidates.c:\u001b[m\u001b[K In function ‘\u001b[01m\u001b[KReadCandidates\u001b[m\u001b[K’:\n",
|
||
"\u001b[01m\u001b[KReadCandidates.c:56:24:\u001b[m\u001b[K \u001b[01;35m\u001b[Kwarning: \u001b[m\u001b[Ksuggest parentheses around assignment used as truth value [\u001b[01;35m\u001b[K-Wparentheses\u001b[m\u001b[K]\n",
|
||
" assert(\u001b[01;35m\u001b[KF\u001b[m\u001b[Krom->CandidateSet =\n",
|
||
" \u001b[01;35m\u001b[K^\u001b[m\u001b[K\n",
|
||
"gcc -c -o OBJ/ReadEdges.o ReadEdges.c -O3 -Wall -IINCLUDE -DTWO_LEVEL_TREE -g\n",
|
||
"In file included from \u001b[01m\u001b[KINCLUDE/LKH.h:10:0\u001b[m\u001b[K,\n",
|
||
" from \u001b[01m\u001b[KReadEdges.c:1\u001b[m\u001b[K:\n",
|
||
"\u001b[01m\u001b[KReadEdges.c:\u001b[m\u001b[K In function ‘\u001b[01m\u001b[KReadEdges\u001b[m\u001b[K’:\n",
|
||
"\u001b[01m\u001b[KReadEdges.c:25:12:\u001b[m\u001b[K \u001b[01;35m\u001b[Kwarning: \u001b[m\u001b[Ksuggest parentheses around assignment used as truth value [\u001b[01;35m\u001b[K-Wparentheses\u001b[m\u001b[K]\n",
|
||
" assert(\u001b[01;35m\u001b[Kn\u001b[m\u001b[Kode_set = (node *) calloc(Dimension + 1, sizeof(node)));\n",
|
||
" \u001b[01;35m\u001b[K^\u001b[m\u001b[K\n",
|
||
"\u001b[01m\u001b[KReadEdges.c:47:20:\u001b[m\u001b[K \u001b[01;35m\u001b[Kwarning: \u001b[m\u001b[Ksuggest parentheses around assignment used as truth value [\u001b[01;35m\u001b[K-Wparentheses\u001b[m\u001b[K]\n",
|
||
" assert(\u001b[01;35m\u001b[Ke\u001b[m\u001b[K = (edge *) malloc(sizeof(edge)));\n",
|
||
" \u001b[01;35m\u001b[K^\u001b[m\u001b[K\n",
|
||
"\u001b[01m\u001b[KReadEdges.c:31:9:\u001b[m\u001b[K \u001b[01;35m\u001b[Kwarning: \u001b[m\u001b[Kignoring return value of ‘\u001b[01m\u001b[Kfscanf\u001b[m\u001b[K’, declared with attribute warn_unused_result [\u001b[01;35m\u001b[K-Wunused-result\u001b[m\u001b[K]\n",
|
||
" \u001b[01;35m\u001b[Kfscanf(EdgeFile, \"%d %d\\n\", &i, &Edges)\u001b[m\u001b[K;\n",
|
||
" \u001b[01;35m\u001b[K^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\u001b[m\u001b[K\n",
|
||
"\u001b[01m\u001b[KReadEdges.c:36:13:\u001b[m\u001b[K \u001b[01;35m\u001b[Kwarning: \u001b[m\u001b[Kignoring return value of ‘\u001b[01m\u001b[Kfgets\u001b[m\u001b[K’, declared with attribute warn_unused_result [\u001b[01;35m\u001b[K-Wunused-result\u001b[m\u001b[K]\n",
|
||
" \u001b[01;35m\u001b[Kfgets(line, 80, EdgeFile)\u001b[m\u001b[K;\n",
|
||
" \u001b[01;35m\u001b[K^~~~~~~~~~~~~~~~~~~~~~~~~\u001b[m\u001b[K\n",
|
||
"gcc -c -o OBJ/ReadLine.o ReadLine.c -O3 -Wall -IINCLUDE -DTWO_LEVEL_TREE -g\n",
|
||
"In file included from \u001b[01m\u001b[KINCLUDE/LKH.h:10:0\u001b[m\u001b[K,\n",
|
||
" from \u001b[01m\u001b[KReadLine.c:1\u001b[m\u001b[K:\n",
|
||
"\u001b[01m\u001b[KReadLine.c:\u001b[m\u001b[K In function ‘\u001b[01m\u001b[KReadLine\u001b[m\u001b[K’:\n",
|
||
"\u001b[01m\u001b[KReadLine.c:28:16:\u001b[m\u001b[K \u001b[01;35m\u001b[Kwarning: \u001b[m\u001b[Ksuggest parentheses around assignment used as truth value [\u001b[01;35m\u001b[K-Wparentheses\u001b[m\u001b[K]\n",
|
||
" assert(\u001b[01;35m\u001b[KB\u001b[m\u001b[Kuffer = (char *) malloc(MaxBuffer = 80));\n",
|
||
" \u001b[01;35m\u001b[K^\u001b[m\u001b[K\n",
|
||
"\u001b[01m\u001b[KReadLine.c:33:20:\u001b[m\u001b[K \u001b[01;35m\u001b[Kwarning: \u001b[m\u001b[Ksuggest parentheses around assignment used as truth value [\u001b[01;35m\u001b[K-Wparentheses\u001b[m\u001b[K]\n",
|
||
" assert(\u001b[01;35m\u001b[KB\u001b[m\u001b[Kuffer = (char *) realloc(Buffer, MaxBuffer));\n",
|
||
" \u001b[01;35m\u001b[K^\u001b[m\u001b[K\n",
|
||
"\u001b[01m\u001b[KReadLine.c:40:16:\u001b[m\u001b[K \u001b[01;35m\u001b[Kwarning: \u001b[m\u001b[Ksuggest parentheses around assignment used as truth value [\u001b[01;35m\u001b[K-Wparentheses\u001b[m\u001b[K]\n",
|
||
" assert(\u001b[01;35m\u001b[KL\u001b[m\u001b[KastLine = (char *) malloc((i + 1) * sizeof(char)));\n",
|
||
" \u001b[01;35m\u001b[K^\u001b[m\u001b[K\n",
|
||
"gcc -c -o OBJ/ReadParameters.o ReadParameters.c -O3 -Wall -IINCLUDE -DTWO_LEVEL_TREE -g\n",
|
||
"In file included from \u001b[01m\u001b[KINCLUDE/LKH.h:10:0\u001b[m\u001b[K,\n",
|
||
" from \u001b[01m\u001b[KReadParameters.c:1\u001b[m\u001b[K:\n",
|
||
"\u001b[01m\u001b[KReadParameters.c:\u001b[m\u001b[K In function ‘\u001b[01m\u001b[KReadParameters\u001b[m\u001b[K’:\n",
|
||
"\u001b[01m\u001b[KReadParameters.c:616:24:\u001b[m\u001b[K \u001b[01;35m\u001b[Kwarning: \u001b[m\u001b[Ksuggest parentheses around assignment used as truth value [\u001b[01;35m\u001b[K-Wparentheses\u001b[m\u001b[K]\n",
|
||
" assert(\u001b[01;35m\u001b[KC\u001b[m\u001b[KandidateFileName =\n",
|
||
" \u001b[01;35m\u001b[K^\u001b[m\u001b[K\n",
|
||
"\u001b[01m\u001b[KReadParameters.c:625:28:\u001b[m\u001b[K \u001b[01;35m\u001b[Kwarning: \u001b[m\u001b[Ksuggest parentheses around assignment used as truth value [\u001b[01;35m\u001b[K-Wparentheses\u001b[m\u001b[K]\n",
|
||
" assert(\u001b[01;35m\u001b[KC\u001b[m\u001b[KandidateFileName =\n",
|
||
" \u001b[01;35m\u001b[K^\u001b[m\u001b[K\n",
|
||
"\u001b[01m\u001b[KReadParameters.c:677:24:\u001b[m\u001b[K \u001b[01;35m\u001b[Kwarning: \u001b[m\u001b[Ksuggest parentheses around assignment used as truth value [\u001b[01;35m\u001b[K-Wparentheses\u001b[m\u001b[K]\n",
|
||
" assert(\u001b[01;35m\u001b[KE\u001b[m\u001b[KdgeFileName = (char **) malloc(sizeof(char *)));\n",
|
||
" \u001b[01;35m\u001b[K^\u001b[m\u001b[K\n",
|
||
"\u001b[01m\u001b[KReadParameters.c:685:28:\u001b[m\u001b[K \u001b[01;35m\u001b[Kwarning: \u001b[m\u001b[Ksuggest parentheses around assignment used as truth value [\u001b[01;35m\u001b[K-Wparentheses\u001b[m\u001b[K]\n",
|
||
" assert(\u001b[01;35m\u001b[KE\u001b[m\u001b[KdgeFileName =\n",
|
||
" \u001b[01;35m\u001b[K^\u001b[m\u001b[K\n",
|
||
"\u001b[01m\u001b[KReadParameters.c:844:24:\u001b[m\u001b[K \u001b[01;35m\u001b[Kwarning: \u001b[m\u001b[Ksuggest parentheses around assignment used as truth value [\u001b[01;35m\u001b[K-Wparentheses\u001b[m\u001b[K]\n",
|
||
" assert(\u001b[01;35m\u001b[KM\u001b[m\u001b[KergeTourFileName =\n",
|
||
" \u001b[01;35m\u001b[K^\u001b[m\u001b[K\n",
|
||
"\u001b[01m\u001b[KReadParameters.c:853:28:\u001b[m\u001b[K \u001b[01;35m\u001b[Kwarning: \u001b[m\u001b[Ksuggest parentheses around assignment used as truth value [\u001b[01;35m\u001b[K-Wparentheses\u001b[m\u001b[K]\n",
|
||
" assert(\u001b[01;35m\u001b[KM\u001b[m\u001b[KergeTourFileName =\n",
|
||
" \u001b[01;35m\u001b[K^\u001b[m\u001b[K\n",
|
||
"\u001b[01m\u001b[KReadParameters.c:\u001b[m\u001b[K In function ‘\u001b[01m\u001b[KGetFileName\u001b[m\u001b[K’:\n",
|
||
"\u001b[01m\u001b[KReadParameters.c:1164:12:\u001b[m\u001b[K \u001b[01;35m\u001b[Kwarning: \u001b[m\u001b[Ksuggest parentheses around assignment used as truth value [\u001b[01;35m\u001b[K-Wparentheses\u001b[m\u001b[K]\n",
|
||
" assert(\u001b[01;35m\u001b[Kt\u001b[m\u001b[K = (char *) malloc(strlen(Rest) + 1));\n",
|
||
" \u001b[01;35m\u001b[K^\u001b[m\u001b[K\n",
|
||
"gcc -c -o OBJ/ReadPenalties.o ReadPenalties.c -O3 -Wall -IINCLUDE -DTWO_LEVEL_TREE -g\n",
|
||
"gcc -c -o OBJ/ReadProblem.o ReadProblem.c -O3 -Wall -IINCLUDE -DTWO_LEVEL_TREE -g\n",
|
||
"In file included from \u001b[01m\u001b[KINCLUDE/LKH.h:10:0\u001b[m\u001b[K,\n",
|
||
" from \u001b[01m\u001b[KReadProblem.c:1\u001b[m\u001b[K:\n",
|
||
"\u001b[01m\u001b[KReadProblem.c:\u001b[m\u001b[K In function ‘\u001b[01m\u001b[KReadProblem\u001b[m\u001b[K’:\n",
|
||
"\u001b[01m\u001b[KReadProblem.c:555:28:\u001b[m\u001b[K \u001b[01;35m\u001b[Kwarning: \u001b[m\u001b[Ksuggest parentheses around assignment used as truth value [\u001b[01;35m\u001b[K-Wparentheses\u001b[m\u001b[K]\n",
|
||
" assert(\u001b[01;35m\u001b[KC\u001b[m\u001b[Kon =\n",
|
||
" \u001b[01;35m\u001b[K^\u001b[m\u001b[K\n",
|
||
"\u001b[01m\u001b[KReadProblem.c:663:16:\u001b[m\u001b[K \u001b[01;35m\u001b[Kwarning: \u001b[m\u001b[Ksuggest parentheses around assignment used as truth value [\u001b[01;35m\u001b[K-Wparentheses\u001b[m\u001b[K]\n",
|
||
" assert(\u001b[01;35m\u001b[KC\u001b[m\u001b[KostMatrix =\n",
|
||
" \u001b[01;35m\u001b[K^\u001b[m\u001b[K\n",
|
||
"\u001b[01m\u001b[KReadProblem.c:773:16:\u001b[m\u001b[K \u001b[01;35m\u001b[Kwarning: \u001b[m\u001b[Ksuggest parentheses around assignment used as truth value [\u001b[01;35m\u001b[K-Wparentheses\u001b[m\u001b[K]\n",
|
||
" assert(\u001b[01;35m\u001b[KM\u001b[m\u001b[KergeTourFile =\n",
|
||
" \u001b[01;35m\u001b[K^\u001b[m\u001b[K\n",
|
||
"\u001b[01m\u001b[KReadProblem.c:\u001b[m\u001b[K In function ‘\u001b[01m\u001b[KCopy\u001b[m\u001b[K’:\n",
|
||
"\u001b[01m\u001b[KReadProblem.c:875:12:\u001b[m\u001b[K \u001b[01;35m\u001b[Kwarning: \u001b[m\u001b[Ksuggest parentheses around assignment used as truth value [\u001b[01;35m\u001b[K-Wparentheses\u001b[m\u001b[K]\n",
|
||
" assert(\u001b[01;35m\u001b[KB\u001b[m\u001b[Kuffer = (char *) malloc(strlen(S) + 1));\n",
|
||
" \u001b[01;35m\u001b[K^\u001b[m\u001b[K\n",
|
||
"\u001b[01m\u001b[KReadProblem.c:\u001b[m\u001b[K In function ‘\u001b[01m\u001b[KCreateNodes\u001b[m\u001b[K’:\n",
|
||
"\u001b[01m\u001b[KReadProblem.c:896:12:\u001b[m\u001b[K \u001b[01;35m\u001b[Kwarning: \u001b[m\u001b[Ksuggest parentheses around assignment used as truth value [\u001b[01;35m\u001b[K-Wparentheses\u001b[m\u001b[K]\n",
|
||
" assert(\u001b[01;35m\u001b[KN\u001b[m\u001b[KodeSet = (Node *) calloc(Dimension + 1, sizeof(Node)));\n",
|
||
" \u001b[01;35m\u001b[K^\u001b[m\u001b[K\n",
|
||
"\u001b[01m\u001b[KReadProblem.c:905:20:\u001b[m\u001b[K \u001b[01;35m\u001b[Kwarning: \u001b[m\u001b[Ksuggest parentheses around assignment used as truth value [\u001b[01;35m\u001b[K-Wparentheses\u001b[m\u001b[K]\n",
|
||
" assert(\u001b[01;35m\u001b[KN\u001b[m\u001b[K->MergeSuc =\n",
|
||
" \u001b[01;35m\u001b[K^\u001b[m\u001b[K\n",
|
||
"\u001b[01m\u001b[KReadProblem.c:\u001b[m\u001b[K In function ‘\u001b[01m\u001b[KRead_CTSP_SET_SECTION\u001b[m\u001b[K’:\n",
|
||
"\u001b[01m\u001b[KReadProblem.c:966:12:\u001b[m\u001b[K \u001b[01;35m\u001b[Kwarning: \u001b[m\u001b[Ksuggest parentheses around assignment used as truth value [\u001b[01;35m\u001b[K-Wparentheses\u001b[m\u001b[K]\n",
|
||
" assert(\u001b[01;35m\u001b[KC\u001b[m\u001b[KolorUsed = (int *) calloc(Salesmen + 1, sizeof(int)));\n",
|
||
" \u001b[01;35m\u001b[K^\u001b[m\u001b[K\n",
|
||
"\u001b[01m\u001b[KReadProblem.c:\u001b[m\u001b[K In function ‘\u001b[01m\u001b[KRead_DEMAND_SECTION\u001b[m\u001b[K’:\n",
|
||
"\u001b[01m\u001b[KReadProblem.c:1012:20:\u001b[m\u001b[K \u001b[01;35m\u001b[Kwarning: \u001b[m\u001b[Ksuggest parentheses around assignment used as truth value [\u001b[01;35m\u001b[K-Wparentheses\u001b[m\u001b[K]\n",
|
||
" assert(\u001b[01;35m\u001b[KN\u001b[m\u001b[K->M_Demand =\n",
|
||
" \u001b[01;35m\u001b[K^\u001b[m\u001b[K\n",
|
||
"\u001b[01m\u001b[KReadProblem.c:\u001b[m\u001b[K In function ‘\u001b[01m\u001b[KRead_EDGE_WEIGHT_SECTION\u001b[m\u001b[K’:\n",
|
||
"\u001b[01m\u001b[KReadProblem.c:1282:16:\u001b[m\u001b[K \u001b[01;35m\u001b[Kwarning: \u001b[m\u001b[Ksuggest parentheses around assignment used as truth value [\u001b[01;35m\u001b[K-Wparentheses\u001b[m\u001b[K]\n",
|
||
" assert(\u001b[01;35m\u001b[KC\u001b[m\u001b[KostMatrix =\n",
|
||
" \u001b[01;35m\u001b[K^\u001b[m\u001b[K\n",
|
||
"\u001b[01m\u001b[KReadProblem.c:1293:16:\u001b[m\u001b[K \u001b[01;35m\u001b[Kwarning: \u001b[m\u001b[Ksuggest parentheses around assignment used as truth value [\u001b[01;35m\u001b[K-Wparentheses\u001b[m\u001b[K]\n",
|
||
" assert(\u001b[01;35m\u001b[KC\u001b[m\u001b[KostMatrix = (int *) calloc((size_t) n * n, sizeof(int)));\n",
|
||
" \u001b[01;35m\u001b[K^\u001b[m\u001b[K\n",
|
||
"\u001b[01m\u001b[KReadProblem.c:\u001b[m\u001b[K In function ‘\u001b[01m\u001b[KConvert2FullMatrix\u001b[m\u001b[K’:\n",
|
||
"\u001b[01m\u001b[KReadProblem.c:2207:12:\u001b[m\u001b[K \u001b[01;35m\u001b[Kwarning: \u001b[m\u001b[Ksuggest parentheses around assignment used as truth value [\u001b[01;35m\u001b[K-Wparentheses\u001b[m\u001b[K]\n",
|
||
" assert(\u001b[01;35m\u001b[KC\u001b[m\u001b[KostMatrix = (int *) calloc((size_t) n * n, sizeof(int)));\n",
|
||
" \u001b[01;35m\u001b[K^\u001b[m\u001b[K\n",
|
||
"gcc -c -o OBJ/RecordBestTour.o RecordBestTour.c -O3 -Wall -IINCLUDE -DTWO_LEVEL_TREE -g\n",
|
||
"gcc -c -o OBJ/RecordBetterTour.o RecordBetterTour.c -O3 -Wall -IINCLUDE -DTWO_LEVEL_TREE -g\n",
|
||
"gcc -c -o OBJ/RemoveFirstActive.o RemoveFirstActive.c -O3 -Wall -IINCLUDE -DTWO_LEVEL_TREE -g\n",
|
||
"gcc -c -o OBJ/ResetCandidateSet.o ResetCandidateSet.c -O3 -Wall -IINCLUDE -DTWO_LEVEL_TREE -g\n",
|
||
"gcc -c -o OBJ/RestoreTour.o RestoreTour.c -O3 -Wall -IINCLUDE -DTWO_LEVEL_TREE -g\n",
|
||
"gcc -c -o OBJ/SegmentSize.o SegmentSize.c -O3 -Wall -IINCLUDE -DTWO_LEVEL_TREE -g\n",
|
||
"gcc -c -o OBJ/Sequence.o Sequence.c -O3 -Wall -IINCLUDE -DTWO_LEVEL_TREE -g\n",
|
||
"gcc -c -o OBJ/SFCTour.o SFCTour.c -O3 -Wall -IINCLUDE -DTWO_LEVEL_TREE -g\n",
|
||
"In file included from \u001b[01m\u001b[KINCLUDE/LKH.h:10:0\u001b[m\u001b[K,\n",
|
||
" from \u001b[01m\u001b[KSFCTour.c:1\u001b[m\u001b[K:\n",
|
||
"\u001b[01m\u001b[KSFCTour.c:\u001b[m\u001b[K In function ‘\u001b[01m\u001b[KSFCTour\u001b[m\u001b[K’:\n",
|
||
"\u001b[01m\u001b[KSFCTour.c:64:12:\u001b[m\u001b[K \u001b[01;35m\u001b[Kwarning: \u001b[m\u001b[Ksuggest parentheses around assignment used as truth value [\u001b[01;35m\u001b[K-Wparentheses\u001b[m\u001b[K]\n",
|
||
" assert(\u001b[01;35m\u001b[KP\u001b[m\u001b[Kerm = (Node **) malloc(Dimension * sizeof(Node *)));\n",
|
||
" \u001b[01;35m\u001b[K^\u001b[m\u001b[K\n",
|
||
"gcc -c -o OBJ/SolveCompressedSubproblem.o SolveCompressedSubproblem.c -O3 -Wall -IINCLUDE -DTWO_LEVEL_TREE -g\n",
|
||
"gcc -c -o OBJ/SINTEF_WriteSolution.o SINTEF_WriteSolution.c -O3 -Wall -IINCLUDE -DTWO_LEVEL_TREE -g\n",
|
||
"In file included from \u001b[01m\u001b[KINCLUDE/LKH.h:10:0\u001b[m\u001b[K,\n",
|
||
" from \u001b[01m\u001b[KSINTEF_WriteSolution.c:1\u001b[m\u001b[K:\n",
|
||
"\u001b[01m\u001b[KSINTEF_WriteSolution.c:\u001b[m\u001b[K In function ‘\u001b[01m\u001b[KSINTEF_WriteSolution\u001b[m\u001b[K’:\n",
|
||
"\u001b[01m\u001b[KSINTEF_WriteSolution.c:18:12:\u001b[m\u001b[K \u001b[01;35m\u001b[Kwarning: \u001b[m\u001b[Ksuggest parentheses around assignment used as truth value [\u001b[01;35m\u001b[K-Wparentheses\u001b[m\u001b[K]\n",
|
||
" assert(\u001b[01;35m\u001b[KR\u001b[m\u001b[KesultFile = fopen(FullFileName, \"w\"));\n",
|
||
" \u001b[01;35m\u001b[K^\u001b[m\u001b[K\n",
|
||
"gcc -c -o OBJ/SOP_RepairTour.o SOP_RepairTour.c -O3 -Wall -IINCLUDE -DTWO_LEVEL_TREE -g\n",
|
||
"In file included from \u001b[01m\u001b[KINCLUDE/LKH.h:10:0\u001b[m\u001b[K,\n",
|
||
" from \u001b[01m\u001b[KSOP_RepairTour.c:1\u001b[m\u001b[K:\n",
|
||
"\u001b[01m\u001b[KSOP_RepairTour.c:\u001b[m\u001b[K In function ‘\u001b[01m\u001b[KSOP_RepairTour\u001b[m\u001b[K’:\n",
|
||
"\u001b[01m\u001b[KSOP_RepairTour.c:28:12:\u001b[m\u001b[K \u001b[01;35m\u001b[Kwarning: \u001b[m\u001b[Ksuggest parentheses around assignment used as truth value [\u001b[01;35m\u001b[K-Wparentheses\u001b[m\u001b[K]\n",
|
||
" assert(\u001b[01;35m\u001b[KF\u001b[m\u001b[Kringe = (Node **) malloc(DimensionSaved * sizeof(Node *)));\n",
|
||
" \u001b[01;35m\u001b[K^\u001b[m\u001b[K\n",
|
||
"gcc -c -o OBJ/SolveDelaunaySubproblems.o SolveDelaunaySubproblems.c -O3 -Wall -IINCLUDE -DTWO_LEVEL_TREE -g\n",
|
||
"In file included from \u001b[01m\u001b[KINCLUDE/LKH.h:10:0\u001b[m\u001b[K,\n",
|
||
" from \u001b[01m\u001b[KSolveDelaunaySubproblems.c:1\u001b[m\u001b[K:\n",
|
||
"\u001b[01m\u001b[KSolveDelaunaySubproblems.c:\u001b[m\u001b[K In function ‘\u001b[01m\u001b[KDelaunayClustering\u001b[m\u001b[K’:\n",
|
||
"\u001b[01m\u001b[KSolveDelaunaySubproblems.c:106:12:\u001b[m\u001b[K \u001b[01;35m\u001b[Kwarning: \u001b[m\u001b[Ksuggest parentheses around assignment used as truth value [\u001b[01;35m\u001b[K-Wparentheses\u001b[m\u001b[K]\n",
|
||
" assert(\u001b[01;35m\u001b[KE\u001b[m\u001b[KdgeSet = (Edge *) malloc(Count * sizeof(Edge)));\n",
|
||
" \u001b[01;35m\u001b[K^\u001b[m\u001b[K\n",
|
||
"\u001b[01m\u001b[KSolveDelaunaySubproblems.c:162:20:\u001b[m\u001b[K \u001b[01;35m\u001b[Kwarning: \u001b[m\u001b[Ksuggest parentheses around assignment used as truth value [\u001b[01;35m\u001b[K-Wparentheses\u001b[m\u001b[K]\n",
|
||
" assert(\u001b[01;35m\u001b[KE\u001b[m\u001b[KdgeSet =\n",
|
||
" \u001b[01;35m\u001b[K^\u001b[m\u001b[K\n",
|
||
"gcc -c -o OBJ/SolveKarpSubproblems.o SolveKarpSubproblems.c -O3 -Wall -IINCLUDE -DTWO_LEVEL_TREE -g\n",
|
||
"gcc -c -o OBJ/SolveKCenterSubproblems.o SolveKCenterSubproblems.c -O3 -Wall -IINCLUDE -DTWO_LEVEL_TREE -g\n",
|
||
"In file included from \u001b[01m\u001b[KINCLUDE/LKH.h:10:0\u001b[m\u001b[K,\n",
|
||
" from \u001b[01m\u001b[KSolveKCenterSubproblems.c:1\u001b[m\u001b[K:\n",
|
||
"\u001b[01m\u001b[KSolveKCenterSubproblems.c:\u001b[m\u001b[K In function ‘\u001b[01m\u001b[KKCenterClustering\u001b[m\u001b[K’:\n",
|
||
"\u001b[01m\u001b[KSolveKCenterSubproblems.c:76:12:\u001b[m\u001b[K \u001b[01;35m\u001b[Kwarning: \u001b[m\u001b[Ksuggest parentheses around assignment used as truth value [\u001b[01;35m\u001b[K-Wparentheses\u001b[m\u001b[K]\n",
|
||
" assert(\u001b[01;35m\u001b[KC\u001b[m\u001b[Kenter = (Node **) calloc((K + 1), sizeof(Node *)));\n",
|
||
" \u001b[01;35m\u001b[K^\u001b[m\u001b[K\n",
|
||
"gcc -c -o OBJ/SolveKMeansSubproblems.o SolveKMeansSubproblems.c -O3 -Wall -IINCLUDE -DTWO_LEVEL_TREE -g\n",
|
||
"In file included from \u001b[01m\u001b[KINCLUDE/LKH.h:10:0\u001b[m\u001b[K,\n",
|
||
" from \u001b[01m\u001b[KSolveKMeansSubproblems.c:1\u001b[m\u001b[K:\n",
|
||
"\u001b[01m\u001b[KSolveKMeansSubproblems.c:\u001b[m\u001b[K In function ‘\u001b[01m\u001b[KKMeansClustering\u001b[m\u001b[K’:\n",
|
||
"\u001b[01m\u001b[KSolveKMeansSubproblems.c:90:12:\u001b[m\u001b[K \u001b[01;35m\u001b[Kwarning: \u001b[m\u001b[Ksuggest parentheses around assignment used as truth value [\u001b[01;35m\u001b[K-Wparentheses\u001b[m\u001b[K]\n",
|
||
" assert(\u001b[01;35m\u001b[KC\u001b[m\u001b[Kenter = (Node *) calloc((K + 1), sizeof(Node)));\n",
|
||
" \u001b[01;35m\u001b[K^\u001b[m\u001b[K\n",
|
||
"\u001b[01m\u001b[KSolveKMeansSubproblems.c:91:12:\u001b[m\u001b[K \u001b[01;35m\u001b[Kwarning: \u001b[m\u001b[Ksuggest parentheses around assignment used as truth value [\u001b[01;35m\u001b[K-Wparentheses\u001b[m\u001b[K]\n",
|
||
" assert(\u001b[01;35m\u001b[KC\u001b[m\u001b[KenterRef = (Node **) calloc((K + 1), sizeof(Node *)));\n",
|
||
" \u001b[01;35m\u001b[K^\u001b[m\u001b[K\n",
|
||
"\u001b[01m\u001b[KSolveKMeansSubproblems.c:92:12:\u001b[m\u001b[K \u001b[01;35m\u001b[Kwarning: \u001b[m\u001b[Ksuggest parentheses around assignment used as truth value [\u001b[01;35m\u001b[K-Wparentheses\u001b[m\u001b[K]\n",
|
||
" assert(\u001b[01;35m\u001b[KS\u001b[m\u001b[KumXc = (double *) calloc(K + 1, sizeof(double)));\n",
|
||
" \u001b[01;35m\u001b[K^\u001b[m\u001b[K\n",
|
||
"\u001b[01m\u001b[KSolveKMeansSubproblems.c:93:12:\u001b[m\u001b[K \u001b[01;35m\u001b[Kwarning: \u001b[m\u001b[Ksuggest parentheses around assignment used as truth value [\u001b[01;35m\u001b[K-Wparentheses\u001b[m\u001b[K]\n",
|
||
" assert(\u001b[01;35m\u001b[KS\u001b[m\u001b[KumYc = (double *) calloc(K + 1, sizeof(double)));\n",
|
||
" \u001b[01;35m\u001b[K^\u001b[m\u001b[K\n",
|
||
"\u001b[01m\u001b[KSolveKMeansSubproblems.c:94:12:\u001b[m\u001b[K \u001b[01;35m\u001b[Kwarning: \u001b[m\u001b[Ksuggest parentheses around assignment used as truth value [\u001b[01;35m\u001b[K-Wparentheses\u001b[m\u001b[K]\n",
|
||
" assert(\u001b[01;35m\u001b[KS\u001b[m\u001b[KumZc = (double *) calloc(K + 1, sizeof(double)));\n",
|
||
" \u001b[01;35m\u001b[K^\u001b[m\u001b[K\n",
|
||
"\u001b[01m\u001b[KSolveKMeansSubproblems.c:95:12:\u001b[m\u001b[K \u001b[01;35m\u001b[Kwarning: \u001b[m\u001b[Ksuggest parentheses around assignment used as truth value [\u001b[01;35m\u001b[K-Wparentheses\u001b[m\u001b[K]\n",
|
||
" assert(\u001b[01;35m\u001b[KC\u001b[m\u001b[Kount = (int *) calloc(K + 1, sizeof(int)));\n",
|
||
" \u001b[01;35m\u001b[K^\u001b[m\u001b[K\n",
|
||
"\u001b[01m\u001b[KSolveKMeansSubproblems.c:96:12:\u001b[m\u001b[K \u001b[01;35m\u001b[Kwarning: \u001b[m\u001b[Ksuggest parentheses around assignment used as truth value [\u001b[01;35m\u001b[K-Wparentheses\u001b[m\u001b[K]\n",
|
||
" assert(\u001b[01;35m\u001b[KM\u001b[m\u001b[Kovement = (int *) calloc(K + 1, sizeof(int)));\n",
|
||
" \u001b[01;35m\u001b[K^\u001b[m\u001b[K\n",
|
||
"\u001b[01m\u001b[KSolveKMeansSubproblems.c:97:12:\u001b[m\u001b[K \u001b[01;35m\u001b[Kwarning: \u001b[m\u001b[Ksuggest parentheses around assignment used as truth value [\u001b[01;35m\u001b[K-Wparentheses\u001b[m\u001b[K]\n",
|
||
" assert(\u001b[01;35m\u001b[KM\u001b[m\u001b[KMax = (int *) calloc(K + 1, sizeof(int)));\n",
|
||
" \u001b[01;35m\u001b[K^\u001b[m\u001b[K\n",
|
||
"\u001b[01m\u001b[KSolveKMeansSubproblems.c:98:12:\u001b[m\u001b[K \u001b[01;35m\u001b[Kwarning: \u001b[m\u001b[Ksuggest parentheses around assignment used as truth value [\u001b[01;35m\u001b[K-Wparentheses\u001b[m\u001b[K]\n",
|
||
" assert(\u001b[01;35m\u001b[KP\u001b[m\u001b[Kerm = (Node **) malloc(Dimension * sizeof(Node *)));\n",
|
||
" \u001b[01;35m\u001b[K^\u001b[m\u001b[K\n",
|
||
"gcc -c -o OBJ/SolveRoheSubproblems.o SolveRoheSubproblems.c -O3 -Wall -IINCLUDE -DTWO_LEVEL_TREE -g\n",
|
||
"gcc -c -o OBJ/SolveSFCSubproblems.o SolveSFCSubproblems.c -O3 -Wall -IINCLUDE -DTWO_LEVEL_TREE -g\n",
|
||
"In file included from \u001b[01m\u001b[KINCLUDE/LKH.h:10:0\u001b[m\u001b[K,\n",
|
||
" from \u001b[01m\u001b[KSolveSFCSubproblems.c:1\u001b[m\u001b[K:\n",
|
||
"\u001b[01m\u001b[KSolveSFCSubproblems.c:\u001b[m\u001b[K In function ‘\u001b[01m\u001b[KSolveSFCSubproblems\u001b[m\u001b[K’:\n",
|
||
"\u001b[01m\u001b[KSolveSFCSubproblems.c:29:12:\u001b[m\u001b[K \u001b[01;35m\u001b[Kwarning: \u001b[m\u001b[Ksuggest parentheses around assignment used as truth value [\u001b[01;35m\u001b[K-Wparentheses\u001b[m\u001b[K]\n",
|
||
" assert(\u001b[01;35m\u001b[KS\u001b[m\u001b[Kuc = (Node **) malloc((1 + Dimension) * sizeof(Node *)));\n",
|
||
" \u001b[01;35m\u001b[K^\u001b[m\u001b[K\n",
|
||
"gcc -c -o OBJ/SolveSubproblem.o SolveSubproblem.c -O3 -Wall -IINCLUDE -DTWO_LEVEL_TREE -g\n",
|
||
"gcc -c -o OBJ/SolveSubproblemBorderProblems.o SolveSubproblemBorderProblems.c -O3 -Wall -IINCLUDE -DTWO_LEVEL_TREE -g\n",
|
||
"In file included from \u001b[01m\u001b[KINCLUDE/LKH.h:10:0\u001b[m\u001b[K,\n",
|
||
" from \u001b[01m\u001b[KSolveSubproblemBorderProblems.c:1\u001b[m\u001b[K:\n",
|
||
"\u001b[01m\u001b[KSolveSubproblemBorderProblems.c:\u001b[m\u001b[K In function ‘\u001b[01m\u001b[KSolveSubproblemBorderProblems\u001b[m\u001b[K’:\n",
|
||
"\u001b[01m\u001b[KSolveSubproblemBorderProblems.c:37:12:\u001b[m\u001b[K \u001b[01;35m\u001b[Kwarning: \u001b[m\u001b[Ksuggest parentheses around assignment used as truth value [\u001b[01;35m\u001b[K-Wparentheses\u001b[m\u001b[K]\n",
|
||
" assert(\u001b[01;35m\u001b[KS\u001b[m\u001b[KubproblemSaved =\n",
|
||
" \u001b[01;35m\u001b[K^\u001b[m\u001b[K\n",
|
||
"\u001b[01m\u001b[KSolveSubproblemBorderProblems.c:\u001b[m\u001b[K In function ‘\u001b[01m\u001b[KMarkBorderPoints\u001b[m\u001b[K’:\n",
|
||
"\u001b[01m\u001b[KSolveSubproblemBorderProblems.c:91:12:\u001b[m\u001b[K \u001b[01;35m\u001b[Kwarning: \u001b[m\u001b[Ksuggest parentheses around assignment used as truth value [\u001b[01;35m\u001b[K-Wparentheses\u001b[m\u001b[K]\n",
|
||
" assert(\u001b[01;35m\u001b[KA\u001b[m\u001b[K = (Node **) malloc(DimensionSaved * sizeof(Node *)));\n",
|
||
" \u001b[01;35m\u001b[K^\u001b[m\u001b[K\n",
|
||
"gcc -c -o OBJ/SolveTourSegmentSubproblems.o SolveTourSegmentSubproblems.c -O3 -Wall -IINCLUDE -DTWO_LEVEL_TREE -g\n",
|
||
"gcc -c -o OBJ/SOP_InitialTour.o SOP_InitialTour.c -O3 -Wall -IINCLUDE -DTWO_LEVEL_TREE -g\n",
|
||
"In file included from \u001b[01m\u001b[KINCLUDE/LKH.h:10:0\u001b[m\u001b[K,\n",
|
||
" from \u001b[01m\u001b[KSOP_InitialTour.c:1\u001b[m\u001b[K:\n",
|
||
"\u001b[01m\u001b[KSOP_InitialTour.c:\u001b[m\u001b[K In function ‘\u001b[01m\u001b[KSOP_InitialTour\u001b[m\u001b[K’:\n",
|
||
"\u001b[01m\u001b[KSOP_InitialTour.c:29:12:\u001b[m\u001b[K \u001b[01;35m\u001b[Kwarning: \u001b[m\u001b[Ksuggest parentheses around assignment used as truth value [\u001b[01;35m\u001b[K-Wparentheses\u001b[m\u001b[K]\n",
|
||
" assert(\u001b[01;35m\u001b[KF\u001b[m\u001b[Kringe = (Node **) malloc(DimensionSaved * sizeof(Node *)));\n",
|
||
" \u001b[01;35m\u001b[K^\u001b[m\u001b[K\n",
|
||
"\u001b[01m\u001b[KSOP_InitialTour.c:30:12:\u001b[m\u001b[K \u001b[01;35m\u001b[Kwarning: \u001b[m\u001b[Ksuggest parentheses around assignment used as truth value [\u001b[01;35m\u001b[K-Wparentheses\u001b[m\u001b[K]\n",
|
||
" assert(\u001b[01;35m\u001b[KS\u001b[m\u001b[Kubset = (int *) malloc(DimensionSaved * sizeof(int)));\n",
|
||
" \u001b[01;35m\u001b[K^\u001b[m\u001b[K\n",
|
||
"gcc -c -o OBJ/SOP_Report.o SOP_Report.c -O3 -Wall -IINCLUDE -DTWO_LEVEL_TREE -g\n",
|
||
"gcc -c -o OBJ/StatusReport.o StatusReport.c -O3 -Wall -IINCLUDE -DTWO_LEVEL_TREE -g\n",
|
||
"gcc -c -o OBJ/Statistics.o Statistics.c -O3 -Wall -IINCLUDE -DTWO_LEVEL_TREE -g\n",
|
||
"gcc -c -o OBJ/StoreTour.o StoreTour.c -O3 -Wall -IINCLUDE -DTWO_LEVEL_TREE -g\n",
|
||
"gcc -c -o OBJ/SymmetrizeCandidateSet.o SymmetrizeCandidateSet.c -O3 -Wall -IINCLUDE -DTWO_LEVEL_TREE -g\n",
|
||
"gcc -c -o OBJ/TrimCandidateSet.o TrimCandidateSet.c -O3 -Wall -IINCLUDE -DTWO_LEVEL_TREE -g\n",
|
||
"In file included from \u001b[01m\u001b[KINCLUDE/LKH.h:10:0\u001b[m\u001b[K,\n",
|
||
" from \u001b[01m\u001b[KTrimCandidateSet.c:1\u001b[m\u001b[K:\n",
|
||
"\u001b[01m\u001b[KTrimCandidateSet.c:\u001b[m\u001b[K In function ‘\u001b[01m\u001b[KTrimCandidateSet\u001b[m\u001b[K’:\n",
|
||
"\u001b[01m\u001b[KTrimCandidateSet.c:25:20:\u001b[m\u001b[K \u001b[01;35m\u001b[Kwarning: \u001b[m\u001b[Ksuggest parentheses around assignment used as truth value [\u001b[01;35m\u001b[K-Wparentheses\u001b[m\u001b[K]\n",
|
||
" assert(\u001b[01;35m\u001b[KF\u001b[m\u001b[Krom->CandidateSet =\n",
|
||
" \u001b[01;35m\u001b[K^\u001b[m\u001b[K\n",
|
||
"gcc -c -o OBJ/TSPDL_InitialTour.o TSPDL_InitialTour.c -O3 -Wall -IINCLUDE -DTWO_LEVEL_TREE -g\n",
|
||
"In file included from \u001b[01m\u001b[KINCLUDE/LKH.h:10:0\u001b[m\u001b[K,\n",
|
||
" from \u001b[01m\u001b[KTSPDL_InitialTour.c:1\u001b[m\u001b[K:\n",
|
||
"\u001b[01m\u001b[KTSPDL_InitialTour.c:\u001b[m\u001b[K In function ‘\u001b[01m\u001b[KTSPDL_InitialTour\u001b[m\u001b[K’:\n",
|
||
"\u001b[01m\u001b[KTSPDL_InitialTour.c:24:12:\u001b[m\u001b[K \u001b[01;35m\u001b[Kwarning: \u001b[m\u001b[Ksuggest parentheses around assignment used as truth value [\u001b[01;35m\u001b[K-Wparentheses\u001b[m\u001b[K]\n",
|
||
" assert(\u001b[01;35m\u001b[KT\u001b[m\u001b[K = (Node **) malloc(DimensionSaved * sizeof(Node *)));\n",
|
||
" \u001b[01;35m\u001b[K^\u001b[m\u001b[K\n",
|
||
"gcc -c -o OBJ/TSPTW_MakespanCost.o TSPTW_MakespanCost.c -O3 -Wall -IINCLUDE -DTWO_LEVEL_TREE -g\n",
|
||
"gcc -c -o OBJ/TSPTW_Reduce.o TSPTW_Reduce.c -O3 -Wall -IINCLUDE -DTWO_LEVEL_TREE -g\n",
|
||
"In file included from \u001b[01m\u001b[KINCLUDE/LKH.h:10:0\u001b[m\u001b[K,\n",
|
||
" from \u001b[01m\u001b[KTSPTW_Reduce.c:1\u001b[m\u001b[K:\n",
|
||
"\u001b[01m\u001b[KTSPTW_Reduce.c:\u001b[m\u001b[K In function ‘\u001b[01m\u001b[KTSPTW_Reduce\u001b[m\u001b[K’:\n",
|
||
"\u001b[01m\u001b[KTSPTW_Reduce.c:11:12:\u001b[m\u001b[K \u001b[01;35m\u001b[Kwarning: \u001b[m\u001b[Ksuggest parentheses around assignment used as truth value [\u001b[01;35m\u001b[K-Wparentheses\u001b[m\u001b[K]\n",
|
||
" assert(\u001b[01;35m\u001b[KR\u001b[m\u001b[K = (char **) malloc(((n + 1) * sizeof(char *))));\n",
|
||
" \u001b[01;35m\u001b[K^\u001b[m\u001b[K\n",
|
||
"\u001b[01m\u001b[KTSPTW_Reduce.c:13:16:\u001b[m\u001b[K \u001b[01;35m\u001b[Kwarning: \u001b[m\u001b[Ksuggest parentheses around assignment used as truth value [\u001b[01;35m\u001b[K-Wparentheses\u001b[m\u001b[K]\n",
|
||
" assert(\u001b[01;35m\u001b[KR\u001b[m\u001b[K[i] = (char *) calloc(n + 1, sizeof(char)));\n",
|
||
" \u001b[01;35m\u001b[K^\u001b[m\u001b[K\n",
|
||
"\u001b[01m\u001b[KTSPTW_Reduce.c:37:24:\u001b[m\u001b[K \u001b[01;35m\u001b[Kwarning: \u001b[m\u001b[Ksuggest parentheses around assignment used as truth value [\u001b[01;35m\u001b[K-Wparentheses\u001b[m\u001b[K]\n",
|
||
" assert(\u001b[01;35m\u001b[KC\u001b[m\u001b[Kon = (Constraint *) malloc(sizeof(Constraint)));\n",
|
||
" \u001b[01;35m\u001b[K^\u001b[m\u001b[K\n",
|
||
"gcc -c -o OBJ/VRPB_Reduce.o VRPB_Reduce.c -O3 -Wall -IINCLUDE -DTWO_LEVEL_TREE -g\n",
|
||
"gcc -c -o OBJ/BIT.o BIT.c -O3 -Wall -IINCLUDE -DTWO_LEVEL_TREE -g\n",
|
||
"In file included from \u001b[01m\u001b[KINCLUDE/LKH.h:10:0\u001b[m\u001b[K,\n",
|
||
" from \u001b[01m\u001b[KBIT.c:1\u001b[m\u001b[K:\n",
|
||
"\u001b[01m\u001b[KBIT.c:\u001b[m\u001b[K In function ‘\u001b[01m\u001b[KBIT_Make\u001b[m\u001b[K’:\n",
|
||
"\u001b[01m\u001b[KBIT.c:60:12:\u001b[m\u001b[K \u001b[01;35m\u001b[Kwarning: \u001b[m\u001b[Ksuggest parentheses around assignment used as truth value [\u001b[01;35m\u001b[K-Wparentheses\u001b[m\u001b[K]\n",
|
||
" assert(\u001b[01;35m\u001b[KM\u001b[m\u001b[KinTree = (int *) calloc(1 << (p + 1), sizeof(int)));\n",
|
||
" \u001b[01;35m\u001b[K^\u001b[m\u001b[K\n",
|
||
"\u001b[01m\u001b[KBIT.c:61:12:\u001b[m\u001b[K \u001b[01;35m\u001b[Kwarning: \u001b[m\u001b[Ksuggest parentheses around assignment used as truth value [\u001b[01;35m\u001b[K-Wparentheses\u001b[m\u001b[K]\n",
|
||
" assert(\u001b[01;35m\u001b[KM\u001b[m\u001b[KaxTree = (int *) calloc(1 << (p + 1), sizeof(int)));\n",
|
||
" \u001b[01;35m\u001b[K^\u001b[m\u001b[K\n",
|
||
"\u001b[01m\u001b[KBIT.c:62:12:\u001b[m\u001b[K \u001b[01;35m\u001b[Kwarning: \u001b[m\u001b[Ksuggest parentheses around assignment used as truth value [\u001b[01;35m\u001b[K-Wparentheses\u001b[m\u001b[K]\n",
|
||
" assert(\u001b[01;35m\u001b[KL\u001b[m\u001b[K = (int *) malloc((n + 1) * sizeof(int)));\n",
|
||
" \u001b[01;35m\u001b[K^\u001b[m\u001b[K\n",
|
||
"gcc -c -o OBJ/WriteCandidates.o WriteCandidates.c -O3 -Wall -IINCLUDE -DTWO_LEVEL_TREE -g\n",
|
||
"gcc -c -o OBJ/WritePenalties.o WritePenalties.c -O3 -Wall -IINCLUDE -DTWO_LEVEL_TREE -g\n",
|
||
"gcc -c -o OBJ/WriteTour.o WriteTour.c -O3 -Wall -IINCLUDE -DTWO_LEVEL_TREE -g\n",
|
||
"In file included from \u001b[01m\u001b[KINCLUDE/LKH.h:10:0\u001b[m\u001b[K,\n",
|
||
" from \u001b[01m\u001b[KWriteTour.c:1\u001b[m\u001b[K:\n",
|
||
"\u001b[01m\u001b[KWriteTour.c:\u001b[m\u001b[K In function ‘\u001b[01m\u001b[KWriteTour\u001b[m\u001b[K’:\n",
|
||
"\u001b[01m\u001b[KWriteTour.c:34:12:\u001b[m\u001b[K \u001b[01;35m\u001b[Kwarning: \u001b[m\u001b[Ksuggest parentheses around assignment used as truth value [\u001b[01;35m\u001b[K-Wparentheses\u001b[m\u001b[K]\n",
|
||
" assert(\u001b[01;35m\u001b[KT\u001b[m\u001b[KourFile = fopen(FullFileName, \"w\"));\n",
|
||
" \u001b[01;35m\u001b[K^\u001b[m\u001b[K\n",
|
||
"\u001b[01m\u001b[KWriteTour.c:\u001b[m\u001b[K In function ‘\u001b[01m\u001b[KFullName\u001b[m\u001b[K’:\n",
|
||
"\u001b[01m\u001b[KWriteTour.c:81:16:\u001b[m\u001b[K \u001b[01;35m\u001b[Kwarning: \u001b[m\u001b[Ksuggest parentheses around assignment used as truth value [\u001b[01;35m\u001b[K-Wparentheses\u001b[m\u001b[K]\n",
|
||
" assert(\u001b[01;35m\u001b[KN\u001b[m\u001b[KewName = (char *) calloc(strlen(Name) + 1, 1));\n",
|
||
" \u001b[01;35m\u001b[K^\u001b[m\u001b[K\n",
|
||
"\u001b[01m\u001b[KWriteTour.c:85:12:\u001b[m\u001b[K \u001b[01;35m\u001b[Kwarning: \u001b[m\u001b[Ksuggest parentheses around assignment used as truth value [\u001b[01;35m\u001b[K-Wparentheses\u001b[m\u001b[K]\n",
|
||
" assert(\u001b[01;35m\u001b[KC\u001b[m\u001b[KostBuffer = (char *) malloc(400));\n",
|
||
" \u001b[01;35m\u001b[K^\u001b[m\u001b[K\n",
|
||
"\u001b[01m\u001b[KWriteTour.c:93:16:\u001b[m\u001b[K \u001b[01;35m\u001b[Kwarning: \u001b[m\u001b[Ksuggest parentheses around assignment used as truth value [\u001b[01;35m\u001b[K-Wparentheses\u001b[m\u001b[K]\n",
|
||
" assert(\u001b[01;35m\u001b[KN\u001b[m\u001b[KewName =\n",
|
||
" \u001b[01;35m\u001b[K^\u001b[m\u001b[K\n",
|
||
"gcc -c -o OBJ/MergeWithTourGPX2.o MergeWithTourGPX2.c -O3 -Wall -IINCLUDE -DTWO_LEVEL_TREE -g\n",
|
||
"gcc -c -o OBJ/gpx.o gpx.c -O3 -Wall -IINCLUDE -DTWO_LEVEL_TREE -g\n",
|
||
"In file included from \u001b[01m\u001b[Kgpx.c:13:0\u001b[m\u001b[K:\n",
|
||
"\u001b[01m\u001b[Kgpx.c:\u001b[m\u001b[K In function ‘\u001b[01m\u001b[Knew_candidates\u001b[m\u001b[K’:\n",
|
||
"\u001b[01m\u001b[KINCLUDE/gpx.h:8:29:\u001b[m\u001b[K \u001b[01;35m\u001b[Kwarning: \u001b[m\u001b[Kargument 1 range [18446744071562067968, 18446744073709551615] exceeds maximum object size 9223372036854775807 [\u001b[01;35m\u001b[K-Walloc-size-larger-than=\u001b[m\u001b[K]\n",
|
||
" #define new_int(n) ((int *) \u001b[01;35m\u001b[Kcalloc(n, sizeof(int))\u001b[m\u001b[K)\n",
|
||
" \u001b[01;35m\u001b[K^~~~~~~~~~~~~~~~~~~~~~\u001b[m\u001b[K\n",
|
||
"\u001b[01m\u001b[Kgpx.c:906:10:\u001b[m\u001b[K \u001b[01;36m\u001b[Knote: \u001b[m\u001b[Kin expansion of macro ‘\u001b[01m\u001b[Knew_int\u001b[m\u001b[K’\n",
|
||
" id = \u001b[01;36m\u001b[Knew_int\u001b[m\u001b[K(n);\n",
|
||
" \u001b[01;36m\u001b[K^~~~~~~\u001b[m\u001b[K\n",
|
||
"In file included from \u001b[01m\u001b[KINCLUDE/LKH.h:15:0\u001b[m\u001b[K,\n",
|
||
" from \u001b[01m\u001b[Kgpx.c:12\u001b[m\u001b[K:\n",
|
||
"\u001b[01m\u001b[K/usr/include/stdlib.h:541:14:\u001b[m\u001b[K \u001b[01;36m\u001b[Knote: \u001b[m\u001b[Kin a call to allocation function ‘\u001b[01m\u001b[Kcalloc\u001b[m\u001b[K’ declared here\n",
|
||
" extern void *\u001b[01;36m\u001b[Kcalloc\u001b[m\u001b[K (size_t __nmemb, size_t __size)\n",
|
||
" \u001b[01;36m\u001b[K^~~~~~\u001b[m\u001b[K\n",
|
||
"gcc -o ../LKH OBJ/Activate.o OBJ/AddCandidate.o OBJ/AddExtraCandidates.o OBJ/AddTourCandidates.o OBJ/AdjustCandidateSet.o OBJ/AdjustClusters.o OBJ/AllocateStructures.o OBJ/Ascent.o OBJ/Best2OptMove.o OBJ/Best3OptMove.o OBJ/Best4OptMove.o OBJ/Best5OptMove.o OBJ/BestKOptMove.o OBJ/BestSpecialOptMove.o OBJ/Between.o OBJ/Between_SL.o OBJ/Between_SSL.o OBJ/BridgeGain.o OBJ/BuildKDTree.o OBJ/C.o OBJ/CandidateReport.o OBJ/ChooseInitialTour.o OBJ/Connect.o OBJ/CreateCandidateSet.o OBJ/CreateDelaunayCandidateSet.o OBJ/CreateNNCandidateSet.o OBJ/Create_POPMUSIC_CandidateSet.o OBJ/CreateQuadrantCandidateSet.o OBJ/CTSP_InitialTour.o OBJ/CVRP_InitialTour.o OBJ/Delaunay.o OBJ/Distance.o OBJ/Distance_MTSP.o OBJ/Distance_SOP.o OBJ/Distance_SPECIAL.o OBJ/eprintf.o OBJ/ERXT.o OBJ/Excludable.o OBJ/Exclude.o OBJ/FindTour.o OBJ/FixedOrCommonCandidates.o OBJ/Flip.o OBJ/Flip_SL.o OBJ/Flip_SSL.o OBJ/Forbidden.o OBJ/FreeStructures.o OBJ/fscanint.o OBJ/Gain23.o OBJ/GenerateCandidates.o OBJ/Genetic.o OBJ/GeoConversion.o OBJ/GetTime.o OBJ/GreedyTour.o OBJ/Hashing.o OBJ/Heap.o OBJ/Improvement.o OBJ/IsBackboneCandidate.o OBJ/IsCandidate.o OBJ/IsCommonEdge.o OBJ/IsPossibleCandidate.o OBJ/KSwapKick.o OBJ/LinKernighan.o OBJ/LKHmain.o OBJ/Make2OptMove.o OBJ/Make3OptMove.o OBJ/Make4OptMove.o OBJ/Make5OptMove.o OBJ/MakeKOptMove.o OBJ/MergeTourWithBestTour.o OBJ/MergeWithTourIPT.o OBJ/Minimum1TreeCost.o OBJ/MinimumSpanningTree.o OBJ/MTSP2TSP.o OBJ/MTSP_InitialTour.o OBJ/MTSP_Report.o OBJ/MTSP_WriteSolution.o OBJ/NormalizeNodeList.o OBJ/NormalizeSegmentList.o OBJ/OrderCandidateSet.o OBJ/PatchCycles.o OBJ/Penalty_ACVRP.o OBJ/Penalty_BWTSP.o OBJ/Penalty_CCVRP.o OBJ/Penalty_CVRP.o OBJ/Penalty_CVRPTW.o OBJ/Penalty_CTSP.o OBJ/Penalty_1_PDTSP.o OBJ/Penalty_MLP.o OBJ/Penalty_M_PDTSP.o OBJ/Penalty_M1_PDTSP.o OBJ/Penalty_MTSP.o OBJ/Penalty_OVRP.o OBJ/Penalty_PDPTW.o OBJ/Penalty_PDTSP.o OBJ/Penalty_PDTSPF.o OBJ/Penalty_PDTSPL.o OBJ/Penalty_RCTVRP.o OBJ/Penalty_SOP.o OBJ/Penalty_TRP.o OBJ/Penalty_TSPDL.o OBJ/Penalty_TSPPD.o OBJ/Penalty_TSPTW.o OBJ/Penalty_VRPB.o OBJ/Penalty_VRPBTW.o OBJ/Penalty_VRPPD.o OBJ/PDPTW_Reduce.o OBJ/printff.o OBJ/PrintParameters.o OBJ/Random.o OBJ/ReadCandidates.o OBJ/ReadEdges.o OBJ/ReadLine.o OBJ/ReadParameters.o OBJ/ReadPenalties.o OBJ/ReadProblem.o OBJ/RecordBestTour.o OBJ/RecordBetterTour.o OBJ/RemoveFirstActive.o OBJ/ResetCandidateSet.o OBJ/RestoreTour.o OBJ/SegmentSize.o OBJ/Sequence.o OBJ/SFCTour.o OBJ/SolveCompressedSubproblem.o OBJ/SINTEF_WriteSolution.o OBJ/SOP_RepairTour.o OBJ/SolveDelaunaySubproblems.o OBJ/SolveKarpSubproblems.o OBJ/SolveKCenterSubproblems.o OBJ/SolveKMeansSubproblems.o OBJ/SolveRoheSubproblems.o OBJ/SolveSFCSubproblems.o OBJ/SolveSubproblem.o OBJ/SolveSubproblemBorderProblems.o OBJ/SolveTourSegmentSubproblems.o OBJ/SOP_InitialTour.o OBJ/SOP_Report.o OBJ/StatusReport.o OBJ/Statistics.o OBJ/StoreTour.o OBJ/SymmetrizeCandidateSet.o OBJ/TrimCandidateSet.o OBJ/TSPDL_InitialTour.o OBJ/TSPTW_MakespanCost.o OBJ/TSPTW_Reduce.o OBJ/VRPB_Reduce.o OBJ/BIT.o OBJ/WriteCandidates.o OBJ/WritePenalties.o OBJ/WriteTour.o OBJ/MergeWithTourGPX2.o OBJ/gpx.o -O3 -Wall -IINCLUDE -DTWO_LEVEL_TREE -g -lm\n",
|
||
"make[2]: Leaving directory '/content/attention-learn-to-route/problems/vrp/lkh/LKH-3.0.4/SRC'\n",
|
||
"make[1]: Leaving directory '/content/attention-learn-to-route/problems/vrp/lkh/LKH-3.0.4/SRC'\n",
|
||
"100% 10000/10000 [1:08:11<00:00, 2.44it/s]\n",
|
||
"Average cost: 5.696028145550453 +- 0.0050328261742021594\n",
|
||
"Average serial duration: 0.8167137485980988 +- 0.020030664725074258\n",
|
||
"Average parallel duration: 0.4083568742990494\n",
|
||
"Calculated total duration: 1:08:03\n",
|
||
"100% 10000/10000 [1:10:04<00:00, 2.71it/s]\n",
|
||
"Average cost: 5.315933202636222 +- 0.005863093116473662\n",
|
||
"Average serial duration: 0.8393062797307969 +- 0.01968194562154598\n",
|
||
"Average parallel duration: 0.41965313986539843\n",
|
||
"Calculated total duration: 1:09:56\n",
|
||
"100% 10000/10000 [1:44:36<00:00, 1.30it/s]\n",
|
||
"Average cost: 4.79850860915198 +- 0.006437226305693672\n",
|
||
"Average serial duration: 1.253744786477089 +- 0.027773503763267766\n",
|
||
"Average parallel duration: 0.6268723932385445\n",
|
||
"Calculated total duration: 1:44:28\n"
|
||
],
|
||
"name": "stdout"
|
||
}
|
||
]
|
||
}
|
||
]
|
||
} |