0 / 0 / 0
Регистрация: 20.04.2022
Сообщений: 2
|
|
1 | |
Задача коммивояжера20.04.2022, 11:11. Показов 1141. Ответов 0
Метки c++, времени, задача коммивояжера, интеграл, интегральная функция, матрица, матрица c++, метод ветвей и границ, ограничение, плотность вероятности, программы, работы, среднее арифметическое, функция (Все метки)
Всем доброго времени суток!
Заранее выражаю Вам благодарность за интерес к данной теме. Мне необходима по возможности консультация и советы от более опытных людей в программированию на С++, так как у меня другой основной язык программирования, поэтому некоторые моменты реализации остаются для меня загадкой даже после усердного поиска в интернете. Огромное спасибо Вам заранее! В университете дали задание решить задачу коммивояжера методом ветвей и границ с реализацией на С++. Преподаватель поделился программой, которую необходимо "доработать" в соответствии с определенными требованиями, а именно: 1) Размерность задачи: а) 21 и 35; б) 25 и 31. Этот пункт в принципе мне понятен - размерность матрицы, например из а, 21 на 21 и 35 на 35. С остальными аналогично. Поправьте, пожалуйста, если я неправильно понял, буду очень благодарен. Далее дано следующее указание, которое мне немного не понятно. 2) Исходная функция плотности вероятности для случайных данных: а) c2·(1+x^2), x∈[0,1]; (во всех случаях надо подобрать константу ci, чтобы на отрезке [0,1] такой плотностью вероятности задавалось бы всё распределение, т.е. нужный интеграл от 0 до 1 давал бы значение 1; (при этом можно сказать, что «обычное» равномерное распределение имеет плотность c, и не будет ошибкой сказать c·(1+x^0), x∈[0,1]). Здесь, как я понимаю необходимо очевидно вычислить интеграл, который равняется 3/4 (дробь). Опять же если я не прав, пожалуйста, поправьте, буду очень благодарен. Далее, вопрос заключается в том, что делать с этим интегралом после вычисления? Как я понимаю, эту функцию плотности вероятности нужно реализовать на С++ и с помощью неё заполнять матрицы, размерность которых указана в пункте 1. Пожалуйста, подскажите как это сделать или хотя бы приведите аналогичный пример реализации заполнения матрицы через функцию плотности вероятности. Буду здесь очень благодарен! Далее по заданию идут пункты которые я уже разобрал, однако остались вопросы еще по некоторым моментам. 3) . Далее запускаем МВГ с ограниченным временем выполнения (truncated branchand-bound method), причём 5 вариантов: 0.01·Т, 0.03·Т, 0.1·Т, 0.3·Т и 0.5·Т (т.е. 1%, 3%, 10%, 30% и 50% от времени, предварительно вычисленного для этой размерности). Каждый из этих вариантов запускается 2 способами: с применением вызова последовательности правых задач (ППЗ, см. материал лекции) и без его применения. Таким образом, всего у каждого из вас будут такие разные задачи: • 2 варианта размерности; • 5 вариантов времени; • 2 варианта вызова ППЗ итого 2×5×2 = 20 вариантов. Здесь у меня главный вопрос заключается в том, как реализовать в коде "ограниченное время выполнения". Столько статей пересмотрел и нигде не находил хоть приближенного ответа на поставленную задачу. Заранее огромное спасибо! И последний пункт, по которому у меня остался вопрос. 4) Для каждого запуска фиксируем результат (значение целевой функции), полученный к окончанию выделенного времени. После этого досчитываем задачу до конца – и тоже получаем значение целевой функции. Отношение оптимального значения к значению целевой функции, полученному к окончанию выделенного времени, назовём качеством решения. Усредняем эти значения качества на 10 новых запусках – это будет критерием качества этой одной из 20 задач, указанных в пункте 3. При этом само усреднение можно делать разными способами (не только как среднее арифметическое). Здесь в принципе мне большая часть не понятна. Единственное догадываюсь, что в общем нужно рассчитать среднее время выполнения программы - оно и будет тем самым качеством решения. Поправьте меня опять же, если я не прав, пожалуйста. Также буду очень благодарен за разъяснения и догадки по этому пункту. На этом у меня все. Мне безумно неудобно просить Вас о каких-либо готовых решениях реализации того или иного пункта задания, но я буду очень признателен, если Вы хотя бы хоть как-то поможете мне с отдельными пунктами в силу Ваших возможностей и знаний. Еще раз всем огромное спасибо! До связи!
0
|
20.04.2022, 11:11 | |
Ответы с готовыми решениями:
0
Задача коммивояжера C++ Задача коммивояжера Задача коммивояжёра Задача коммивояжера (C++ -> Си) Задача коммивояжёра выбор алгоритма |
20.04.2022, 11:11 | |
20.04.2022, 11:11 | |
Помогаю со студенческими работами здесь
1
Задача коммивояжера методом динамического программирования Задача коммивояжера - выход за пределы массива Задача коммивояжера методом локального поиска Задача коммивояжера (метод ветвей и границ) Алгоритм Коммивояжера Метод коммивояжера Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Опции темы | |
|
Новые блоги и статьи | |||||
Как проводить научные вычисления на Python
InfoMaster 15.01.2025
Python стал одним из наиболее востребованных языков программирования в области научных вычислений благодаря своей простоте, гибкости и обширной экосистеме специализированных библиотек. Научные. . .
|
Создание игры типа Minecraft на PyGame/Python: пошаговое руководство
InfoMaster 15.01.2025
В данном руководстве мы рассмотрим процесс создания игры в стиле Minecraft с использованием библиотеки PyGame на языке программирования Python. Этот проект идеально подходит как для начинающих. . .
|
Как создать свою первую игру в стиле Doom на Unreal Engine
InfoMaster 15.01.2025
Разработка шутера от первого лица в стиле классического Doom представляет собой увлекательное путешествие в мир игрового программирования, где сочетаются творческий подход и технические навыки. . . .
|
Параллельное программирование: основные технологии и принципы
InfoMaster 15.01.2025
Введение в параллельное программирование
Параллельное программирование представляет собой фундаментальный подход к разработке программного обеспечения, который позволяет одновременно выполнять. . .
|
Как написать микросервис на C# с Kafka, MediatR, Redis и GitLab CI/CD
InfoMaster 15.01.2025
В современной разработке программного обеспечения микросервисная архитектура стала стандартом де-факто для создания масштабируемых и гибких приложений. Этот подход позволяет разделить сложную систему. . .
|
Что такое CQRS и как это реализовать на C# с MediatR
InfoMaster 15.01.2025
Концепция CQRS и её роль в современной разработке
В современном мире разработки программного обеспечения архитектурные паттерны играют ключевую роль в создании масштабируемых и поддерживаемых. . .
|
Как настроить CI/CD с Azure DevOps
InfoMaster 15.01.2025
CI/ CD, или непрерывная интеграция и непрерывное развертывание, представляет собой современный подход к разработке программного обеспечения, который позволяет автоматизировать и оптимизировать процесс. . .
|
Как настроить CI/CD с помощью Jenkins
InfoMaster 15.01.2025
Введение в CI/ CD и Jenkins
В современной разработке программного обеспечения непрерывная интеграция (CI) и непрерывная доставка (CD) стали неотъемлемыми элементами процесса создания качественных. . .
|
Как написать микросервис на Go/Golang с Kafka, REST и GitHub CI/CD
InfoMaster 14.01.2025
Определение микросервиса, преимущества использования Go/ Golang
Микросервис – это архитектурный подход к разработке программного обеспечения, при котором приложение состоит из небольших, независимо. . .
|
Как написать микросервис с нуля на C# с RabbitMQ, CQRS, Swagger и CI/CD
InfoMaster 14.01.2025
В современном мире разработки программного обеспечения микросервисная архитектура стала стандартом де-факто для создания масштабируемых и гибких приложений. Этот архитектурный подход предполагает. . .
|
Как создать интернет-магазин на PHP и JavaScript
InfoMaster 14.01.2025
В современном мире электронная коммерция стала неотъемлемой частью бизнеса. Создание собственного интернет-магазина открывает широкие возможности для предпринимателей, позволяя достичь большей. . .
|
Как написать Тетрис на Ассемблере
InfoMaster 14.01.2025
Тетрис – одна из самых узнаваемых и популярных компьютерных игр, созданная в 1984 году советским программистом Алексеем Пажитновым. За прошедшие десятилетия она завоевала симпатии миллионы людей по. . .
|