কনকর্ডের হালকা


16

পটভূমি

ট্রাভেলিং বিক্রয়িক সমস্যা (টিএসপি) সবচেয়ে কম সার্কিট জন্য অনুরোধ যে ভিজিট শহরগুলোর একটি প্রদত্ত সংগ্রহ। এই প্রশ্নের উদ্দেশ্যে, শহরগুলি বিমানের পয়েন্ট হবে এবং তাদের মধ্যে দূরত্বগুলি হবে সাধারণ ইউক্লিডিয়ান দূরত্ব (নিকটতম পূর্ণসংখ্যার সাথে বৃত্তাকার)। সার্কিটটি অবশ্যই "রাউন্ড-ট্রিপ" হতে হবে, এর অর্থ এটি শুরু শহরে ফিরে আসতে হবে।

কনকর্ড টিএসপি সমাধানকারী ইউক্লিডিয় ট্রাভেলিং বিক্রয়িক সমস্যা দৃষ্টান্ত সমাধান করতে পারে, ঠিক এবং অনেক দ্রুত একাধিক আশা করবে। উদাহরণস্বরূপ, কনকর্ড একটি 85,900-পয়েন্ট দৃষ্টিকোণটি ঠিক সমাধান করতে সক্ষম হয়েছিল , যার অংশগুলি এর মতো দেখায়:Pla85900 ট্যুর অঙ্কনের অংশটি

তবে কিছু টিএসপি দৃষ্টান্ত কনকর্ডের জন্য খুব দীর্ঘ সময় নেয়। উদাহরণস্বরূপ, মোনা লিসার উপর ভিত্তি করে কেউ এই 100,000-পয়েন্ট দৃষ্টান্তটি সমাধান করতে সক্ষম হয়নি । (যদি আপনি এটি সমাধান করতে পারেন তবে এক হাজার ডলার পুরষ্কার দেওয়া হচ্ছে!)

সোর্স কোড বা এক্সিকিউটেবল হিসাবে ডাউনলোডের জন্য কনকর্ড উপলব্ধ । ডিফল্টরূপে এটি বিল্ট-ইন লিনিয়ার প্রোগ্রাম (এলপি) সলভার কিউসপ্ট ব্যবহার করে তবে এটি সিপিএলএক্সের মতো আরও ভাল এলপি সলভার ব্যবহার করতে পারে।

চ্যালেঞ্জ

আপনি তৈরি করতে পারেন এমন সবচেয়ে ছোট টিএসপি উদাহরণটি কী যা কনকর্ডকে সমাধান করতে পাঁচ মিনিটেরও বেশি সময় নেয় ?

উদাহরণটি আউটপুট করতে আপনি কোনও প্রোগ্রাম লিখতে পারেন, বা আপনার পছন্দ মতো অন্য কোনও পদ্ধতি ব্যবহার করতে পারেন।

স্কোরিং

উদাহরণে কম পয়েন্টগুলি আরও ভাল। বন্ধনগুলি ফাইলের ফাইল আকার দ্বারা ভেঙে যাবে (নীচে দেখুন)।

প্রমিতকরণ

বিভিন্ন কম্পিউটার দ্রুত বা ধীর গতিতে চলে, তাই আমরা রানটাইমের জন্য পরিমাপের মান হিসাবে কনকর্ডের জন্য নিওএস সার্ভারটি ব্যবহার করব । আপনি নীচের সাধারণ 2-ডি স্থানাঙ্ক ফর্মের পয়েন্টগুলির একটি তালিকা জমা দিতে পারেন:

#cities
x_0 y_0
x_1 y_1
.
.
.
x_n-1 y_n-1

NEOS- এ যে সেটিংস ব্যবহার করা উচিত সেগুলি হ'ল "কনকর্ড ডেটা (এক্সআই-লিস্ট ফাইল, এল 2 নর্ম)", "অ্যালগরিদম: কনকর্ড (কিউস্পট)", এবং "র্যান্ডম সিড: ফিক্সড"।

বেসলাইন

টিএসপিএলআইবিrl1889.tsp থেকে 1,889-পয়েন্টের দৃষ্টান্তটি "মোট চলমান সময়: 871.18 (সেকেন্ড)" লাগে, যা পাঁচ মিনিটেরও বেশি সময় নেয়। দেখে মনে হচ্ছে:

কোনও শহরগুলির চিত্র rl1889.tsp


2
শক্ত কনকোডের ক্ষেত্রে উত্সাহ সম্পর্কিত প্রাসঙ্গিক এসই পোস্ট

উত্তর:


17

88 টি শহর, NEOS এ 341 সেকেন্ড রানটাইম

সাম্প্রতিক একটি গবেষণাপত্রে আমরা ইউক্লিডিয়ান টিএসপি দৃষ্টান্তগুলি সমাধানের জন্য কঠোর একটি পরিবার তৈরি করেছি। আপনি এই পরিবার থেকে উদাহরণসই পাশাপাশি সেগুলি তৈরি করার কোডটি এখানে ডাউনলোড করতে পারেন:

http://www.or.uni-bonn.de/%7Ehougardy/HardTSPInstances.html

এই পরিবারটির 88 টি শহরের উদাহরণ কনকর্ডকে নিওস সার্ভারে 5 মিনিটেরও বেশি সময় নেয়। এই পরিবারটির 178-শহরের উদাহরণটি সমাধান করতে ইতিমধ্যে এক দিনেরও বেশি সময় নেয় takes


1
এটা চমৎকার!!
এ। রেক্স

খুব সুন্দর কাগজ! আশ্চর্যজনক ফলাফল। আপনি সম্পূর্ণরূপে এই জয়ের প্রাপ্য!
অগস্ট

8

77 টি শহর, 7.24 মিনিট (434.4 সেকেন্ড) NEOS এ রানের গড় সময় on

আমি পার্টিতে কিছুটা দেরি করেছি, তবে আমি একটি-77 নোডের উদাহরণটি দিতে চাই, WeruSnowflake77।

স্থানীয় এবং বিশ্বব্যাপী বৈশিষ্ট্যগুলি সংক্ষিপ্ততম খুঁজে পাওয়া ভ্রমণের দৈর্ঘ্যের সাথে তার সেরা নীচে আবদ্ধ হওয়ার জন্য কতটা সময় লাগে তার উপর একটি concর্ধ্বমুখী চাপ চাপার চেষ্টা করার সময় আমি এই উদাহরণটি তৈরি করেছি।

এই উদাহরণটি তৈরির জন্য, আমি একটি বেস গ্রাফ (13 x 13 বর্গ) দিয়ে শুরু করেছি, এবং তারপরে নিয়মিতভাবে নতুন পয়েন্টগুলি বা পুরানো পয়েন্টগুলি অনুবাদ করেছি, যা সামঞ্জস্য করে কাটার আগে গড়ের শাখাগুলিতে আরও গভীরে যেতে দেখা যায় এমন সমন্বয়গুলি ধরে রেখে।

কৌশলটি জেনেটিক অ্যালগোরিদম যেভাবে বিদ্যমান ট্যুরকে রূপান্তরিত করে এবং পরবর্তী প্রজন্মের মিউটেশনগুলির জন্য সংক্ষিপ্ত ভ্রমণগুলি বজায় রাখে তার ঠিক অনুরূপ, গ্রাফটি নিজেই পরিবর্তিত হচ্ছে এবং শক্ত-থেকে-সমাধানের গ্রাফ ধরে রাখা যায়। এটি ঠিক নীচের সীমানা তৈরিতে সহায়তা করার জন্য শিথিলকরণগুলি ব্যবহার করে গ্রাফগুলিকে যেভাবে পরিবর্তন করি তার সাথেও এটির অনুরূপ, আমি বিপরীত পথে চলছি না, নিম্ন সীমানা খুঁজে পাওয়ার জন্য হার্ড সহ একটি গ্রাফ বানাতে একটি বিদ্যমান গ্রাফকে পরিবর্তন করছি।

প্রক্রিয়াটিতে আমি কয়েকটি ছোট গ্রাফ পেয়েছি যা সমাধান করতে একত্রে কয়েক মিনিট সময় নেয় তবে আমি এটি প্রথম ছোট গ্রাফ পেয়েছি যা কমপক্ষে সর্বনিম্ন 5 মিনিট সময় নেয়।

স্থির বীজ এবং কিউস্পট ব্যবহার করে NEOS এ 10 ট্রায়াল রান করার সাথে গড় রানটাইম ছিল 7.24 মিনিট (434.531 সেকেন্ড)। সর্বনিম্ন রানটাইম ছিল 5.6 মিনিট (336.64 সেকেন্ড)। সর্বোচ্চ রানটাইমটি ছিল 8.6 মিনিট (515.80 সেকেন্ড)। কোনও পরীক্ষা বাতিল করা হয়নি। নীচে পূর্ণ মানদণ্ডের সারণী:

বেঞ্চমার্কের ফলাফল 10 রান ছাড়িয়ে গেছে:

----------------------------------
| Run | Job ID# | Total running  |
|     |         | time (seconds) |
|-----|---------|----------------|
| 1   | 7739963 | 513.44         |
| 2   | 7740009 | 336.64         |
| 3   | 7740023 | 514.25         |
| 4   | 7740029 | 447.97         |
| 5   | 7740038 | 357.10         |
| 6   | 7740072 | 447.47         |
| 7   | 7740073 | 336.19         |
| 8   | 7740075 | 515.80         |
| 9   | 7740088 | 361.26         |
| 10  | 7740091 | 515.19         |
----------------------------------

weruSnowflake77 (এক্সআই তালিকা, এল 2 আদর্শ):

77
-700 -700
700 -700
200 0
0 200
-200 0
0 -200
0 0
-600 600
-500 600
-400 600
-300 600
-200 600
-100 600
0 600
100 600
200 600
300 600
400 600
500 600
600 600
-600 -600
-500 -600
-400 -600
-300 -600
-200 -600
-100 -600
0 -600
100 -600
200 -600
300 -600
400 -600
500 -600
600 -600
600 -500
600 -400
600 -300
600 -200
600 -100
600 0
600 100
600 200
600 300
600 400
600 500
-600 -500
-600 -400
-600 -300
-600 -200
-600 -100
-600 0
-600 100
-600 200
-600 300
-600 400
-600 500
-500 -500
-400 -400
-300 -300
-200 -200
-100 -100
100 100
200 200
300 300
400 400
500 500
100 -100
200 -200
300 -300
400 -400
500 -500
-100 100
-200 200
-300 300
-400 400
-500 500
700 700
-700 700

সংগ্রহস্থলের প্রয়োগ

রেপো থেকে ফাইল সেট করতে সমস্যা:

  • weruSnowflake77.txt (এক্সআই তালিকা ফাইল, এল 2 আদর্শ)
  • weruSnowflake77.tsp (টিএসপিএলবি ফর্ম্যাট, EUC_2D)

শান্ত! আপনি যদি আপনার পোস্টে এটি সম্পাদনা করতে চান তবে আপনার উদাহরণের একটি চিত্র এখানে দেওয়া হয়েছে: i.stack.imgur.com/DnJ7T.png
এ। রেক্স

@ এআরেক্স ধন্যবাদ! হ্যাঁ এটি অন্যতম সর্বোত্তম রুট। এটিতে (অনুমানের) একই অনুকূল দৈর্ঘ্যের প্রচুর বিভিন্ন রুট থাকা উচিত। আমাদের পক্ষে উদাহরণস্বরূপ কতগুলি পৃথক অনুকূল রুট থাকতে পারে তা পরিমাপ করার জন্য কি কোনও ভাল উপায় আছে? যদি কনকর্ড শাখা তৈরি করে কাটা পড়ে, তবে আমি বাজি ধরতে পারি যে এটি একই দৈর্ঘ্যের সমস্ত শাখা মনে রাখতে পারে ...
লরেন্স ওয়ারু

5

পাইথন 3, 911 শহরগুলি, NEOS এ চালানোর সময় 1418 সেকেন্ড

নিম্নলিখিত পাইথন 3.x স্ক্রিপ্টটি 911 শহরের স্থানাঙ্ক উত্পন্ন করে। 47739 এর সংক্ষিপ্ততম পথ গণনা করতে এটি NEOS 1418 সেকেন্ড সময় নিয়েছে।

এখানে আপনার সংক্ষিপ্ততম পথের একটি চিত্র রয়েছে (এ। রেক্সকে ধন্যবাদ): 911 শহরের মধ্যে সংক্ষিপ্ততম পথ

কোড / অ্যালগরিদমটি ফিগেনবাউম দ্বিখণ্ডনের উপর ভিত্তি করে তৈরি করা হয় , যা আমি একটি সিরিজ মান উত্পন্ন করতে ব্যবহার করি, যা আমি শহরগুলির স্থানাঙ্ক তৈরির ভিত্তি হিসাবে ব্যবহার করি। আমি প্যারামিটারগুলি দিয়ে পরীক্ষা করেছিলাম যতক্ষণ না আমি 1000 এর নিচে বেশ কয়েকটি শহর খুঁজে পেয়েছি যেগুলি NEOS কে অবাক করে দেওয়ার মতো সময় নিয়েছে (প্রয়োজনীয় 5 মিনিটেরও উপরে)।

x = 0.579
coords = []
for _ in range(1301):
    if int(3001*x) not in coords:
        coords.append(int(3001*x))
    x = 3.8*x*(1-x)
coords = list(zip(coords, coords[::-1]))
print(len(coords))
for coord in coords:
    print(f"{coord[0]} {coord[1]}")

পিএস: আমার কাছে স্ক্রিপ্ট চলছে কম সংখ্যক শহরগুলির সন্ধানে যা নিওস এ> 5 মিনিট সময় নেয়। আমি যদি কিছু খুঁজে পাই তবে আমি এই উত্তরটিতে তাদের পোস্ট করব।

পিএস: ধিক্কার! এই স্ক্রিপ্টটি এল প্যারামিটার 1811 এর পরিবর্তে ১৩০১ এর পরিবর্তে ১১66 টি শহরে ফলাফল নেওয়ার সময় মাত্র ৪৪ ঘণ্টারও বেশি সময় চলবে যা একই পরামিতিগুলির সাথে অন্যান্য ক্ষেত্রে এর চেয়ে অনেক বেশি ...


আপনি যদি আপনার পোস্টে এটি সম্পাদনা করতে চান তবে আপনার 911-সিটি ট্যুরের একটি চিত্র এখানে রয়েছে: i.imgur.com/G1ZPX0k.png
এ। রেক্স

@ এআরেক্স ধন্যবাদ এটি যুক্ত।
অগস্টে
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.