Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.04.2011, 10:21   #1
danilakh
Новичок
Джуниор
 
Регистрация: 19.04.2011
Сообщений: 5
По умолчанию Транспортная задача

Добрые день!

У кого есть идеи по реализации задачи:

"Имеется набор из n количества точек, раскиданных на области, ограниченной двумя эллипсами. Линии, ограниченные по длине параметром p, выходящие из центра, соединяют максимальное количество точек. Линии должны покрыть все точки. Необходимо найти такой набор точек, при котором суммарная длина линий, покрывших все точки, будет максимальной. При этом сам путь должен быть оптимальным, то есть кратчайшим для данного набора точек (минимакс)"


Независимые переменные
W – ширина внутреннего эллипса
H – высота внутреннего эллипса
L – ширина полосы между границами внутреннего и внешнего эллипса
n – количество точек
P – длина линии

Зависимые переменные (что должна находить модель)
N – количество линий
D – суммарная длина всех линий
xi, yj – координаты точек


{x1y1;x2y2;…xnyn} – последовательность точек в линии NX

Задача должна быть решена в VB с возможностью интеграции в макрос Excel.


1) Есть ли люди, готовы взяться за реализацию данной идеи - условия в ЛС

2) У кого какие идеи по работе данного алогитма?

Спасибо!
Изображения
Тип файла: jpg picture.jpg (15.5 Кб, 153 просмотров)
danilakh вне форума Ответить с цитированием
Старый 19.04.2011, 11:24   #2
was3110
Форумчанин
 
Аватар для was3110
 
Регистрация: 25.04.2010
Сообщений: 254
По умолчанию

Интересно, а алгоритм минимизации пути существует (доступен)? Это как бы является исходными данными... Точки надо разбрасывать так, что бы максимально противодействовать алгоритму минимизации. А иначе если поручить такую задачу одному программисту, он будет постоянно бороться сам с собой (поочередно усложняя и совершенствуя, то один алгоритм, то другой ...). Мои контакты в профиле.
помогать студентам - моя вторая профессия
was3110 вне форума Ответить с цитированием
Старый 19.04.2011, 14:50   #3
danilakh
Новичок
Джуниор
 
Регистрация: 19.04.2011
Сообщений: 5
По умолчанию

Алгоритм нужно найти

Как вариант -

Т.е. для заданного набора точек. Задаются набор два массива координат X[1 to i] Y[1 to i] и массив названий точек A[1 to i]. Далее алгоритм будет находить самый эффективный способ соединения этих точек с центром линиями заданной длины (т.е. как вариант первый шаг - из всего множества линий ограниченной длины найти ту, которая соединяет максимальное число точек - если таких линий несколько, то выбираем линию наименьшей длины (либо можно брать любую...возможно сделать такое допущение). Затем мы записываем маршрут в виде слова состоящий из точек маршрута (допустим "ahnfgt"), далее мы выкидываем из множества точек точки: a, h, n, f, g, t и повторяем операцию

Т.е. перебирать все точки это не вариант - n*n! операций

Но можно попробовать ограничить длину линии кол-вом точек...т.е. не более 7-ти, тогда уже операций будет меньше - n!/(n-7)! При этом для нахождения всех линий будет примерно (n/7)*(n!/(n-7)!) операций и это все для одного набора точек...ну а затем уже будем генерить случайные наборы точек, для нахождения самого максимального варианта маршрута.

Вариант в лоб - но пока единственное что есть. Задача для применения на практике, так что возможно использовать допущения если это упростит.
danilakh вне форума Ответить с цитированием
Старый 19.04.2011, 15:03   #4
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

для начала давайте уточним с исходными:
у Вас два эллипса или две окружности?
я утверждаю, что невозможно добиться одинаковой ширины полосы между двумя эллипсами. если за основу берем один эллипс а вокруг него делаем полосу одинаковой ширины - это уже будет не эллипс, а другая кривая со своим уравнением.
сделать полоску одинаковой ширины между двумя кругами - пожалуйста, достаточно чтобы их центры находились в одно точке.
если это практическая задача и эллипсы указаны чтобы приблизительно обозначить полусу где должны располагаться точки - то конечно, такое урощение подойдет, потому что никак не повлияет на результаты вычислений а лишь н аначальное размещение точек.
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 19.04.2011, 15:11   #5
danilakh
Новичок
Джуниор
 
Регистрация: 19.04.2011
Сообщений: 5
По умолчанию

Цитата:
Сообщение от IgorGO Посмотреть сообщение
для начала давайте уточним с исходными:
у Вас два эллипса или две окружности?
я утверждаю, что невозможно добиться одинаковой ширины полосы между двумя эллипсами. если за основу берем один эллипс а вокруг него делаем полосу одинаковой ширины - это уже будет не эллипс, а другая кривая со своим уравнением.
сделать полоску одинаковой ширины между двумя кругами - пожалуйста, достаточно чтобы их центры находились в одно точке.
если это практическая задача и эллипсы указаны чтобы приблизительно обозначить полусу где должны располагаться точки - то конечно, такое урощение подойдет, потому что никак не повлияет на результаты вычислений а лишь н аначальное размещение точек.
одни эллипс внутри, второй тоже эллипс, конечно же не подобный первому т.к. отношение диаметров поменятся, но это тоже эллипс

Но Вы правы, это не суть задачи...как проще сделать либо два эллипса (т.е. задаются 4 параметра), либо эллипс и полоса одинаковой ширины (т.е. будет три параметра)

Т.к. я далек от программирования, то начинал с простого (вообще с квадрата), т.к. в экселе рандомно можно генерить числа на заданном отрезке, как реализовать случайное выбрасывание в эллипс не знаю...но это сильное упрощение для задачи не подойдет, хотя я думаю можно и ограничиться кругом, но на мой взгляд между кругом и эллипсом не большая разница будет
danilakh вне форума Ответить с цитированием
Старый 19.04.2011, 15:13   #6
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

да и задачу Вы ставите
Цитата:
Необходимо найти такой набор точек
может можно так сформулировать:
для существующего набора точек построить ломаные линии так чтобы:
1.каждая линия начинается из цетра и может проходить любое количество точек
2.общая длина каждой линии не должна превышать Р
3.должны быть "пройдены все точки"
4.суммарная длина всех линий должна быть минимальна.
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 19.04.2011, 15:25   #7
danilakh
Новичок
Джуниор
 
Регистрация: 19.04.2011
Сообщений: 5
По умолчанию

Цитата:
Сообщение от IgorGO Посмотреть сообщение
да и задачу Вы ставите
может можно так сформулировать:
для существующего набора точек построить ломаные линии так чтобы:
1.каждая линия начинается из цетра и может проходить любое количество точек
2.общая длина каждой линии не должна превышать Р
3.должны быть "пройдены все точки"
4.суммарная длина всех линий должна быть минимальна.
согласен, можно так, вот только не уверен на счет 4-ого пункта. Тут первично лисло линий, т.е. чтобы число таких линий было минимальным...
danilakh вне форума Ответить с цитированием
Старый 19.04.2011, 15:42   #8
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

я нисколько не давлю на Вас, это Ваша задача и Вам решать как ее ставить. минимизировать количество линий - это то же очень логичная постановка задачи.

я могу это сделать.
но времени уйдет много, это не до конца недели, а скорее всего до конца месяца.
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 19.04.2011, 15:59   #9
danilakh
Новичок
Джуниор
 
Регистрация: 19.04.2011
Сообщений: 5
По умолчанию

IgorGo, напишите, пожалуйста Ваши контакты на danilakh@yandex.ru (e-mail, телефон)
danilakh вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Транспортная задача Наташульчик Microsoft Office Excel 21 20.12.2010 13:36
Транспортная задача nadia.mot Помощь студентам 0 17.10.2010 19:09
Транспортная задача Roger Wilco Помощь студентам 2 07.05.2009 16:32