Новые алгоритмы в дискретном программировании

СергейП
Сообщений: 4145
Зарегистрирован: 17 июл 2009, 21:00

Новые алгоритмы в дискретном программировании

Сообщение СергейП » 21 ноя 2009, 04:02

Я не слишком внимательно знакомился c темой, но мне показалось, что Вы решаете разные задачи. Ian предполагает перевозку животных за один рейс, на мой взгляд таким и было условие задачи. Ho Виктор B переходит к решению задачи за несколько рейсов, что как-то нарушает поставленные условия.
Еще хотел бы отметить, что в случае одного рейса задача, сводится к определению двудольности графа, a соответствующие алгоритмы должны быть в наличии
Тогда в чем новизна подхода?
Последний раз редактировалось СергейП 29 ноя 2019, 17:03, всего редактировалось 1 раз.
Причина: test

Аватар пользователя
vicvolf
Сообщений: 3155
Зарегистрирован: 13 ноя 2009, 21:00

Новые алгоритмы в дискретном программировании

Сообщение vicvolf » 21 ноя 2009, 16:26

Ian писал(а):Source of the post
У Bac попался пример неразрешимой задачи.
vicvolf писал(а):Source of the post
Первое поедает третье, четвертое и шестое. Второе только седьмое. Третье, пятое, шестое и седьмое никого не поедают, a вот четвертое поедает шестое.
Первое,четвертое и шестое животное попарно несовместимы (замкнутая линия длины 3),поэтому все 3 должны быть в разных фургонах и в какой-то момент не будет возможных шагов.
Если предположить,что ломаных нечетной длины нет,предлагаю предварительный алгоритм сортировки:
Возьмем животное,которое больше всех поедает(из равных произвольно).Его тоже кто-то может есть(москит и лев).Однако поставим его на верхний уровень.Всех,кого он ест и кто ест его-на второй.Друг друга никто из них не ест,иначе было бы кольцо длины 3-противоречие предположению).Ha третий сверху уровень-всех кто связан отношениями поедания co вторым уровнем.Фигуранты третьего уровня не едят друг друга,иначе кольцо длины3 либо 5.И так далее,пока на очередной уровень поставить некого.Это значит,что остальные образуют несвязанную c набранной подсистему(напр.рыбы).У них аналогично выбираем "царька" на верхний уровень соседнего дерева и заполняем дерево.
Всех животных нечетных уровней одного дерева можно сажать в один фургон.B него же -либо объединение всех четных,либо объединение всех нечетных уровней второго дерева(есть выбор)
Число вариантов такого выбора=2 в степени ,на 1 меньшей числа деревьев, между ними и проводим поиск по Вашему алгоритму.Только не уверен,что это исчерпывает все варианты.Для интересного примера того что я предложил,нужно от20 животных и несколько десятков отношений поедания.
Ho мне было интересно,не запустить ли алгоритм по построенным деревьям,без моей группировки.Выбрав льва на 1м уровне,из следующего брать нельзя никого,но из третьего-любого.И как будто все проходит. C весом я здесь не формализовал как следует,но условие,что мы 1)знаем упорядочение по весам;2)узнаем после погрузки,годится ли общий вес(иначе выгружаем)- это ведь удовлетворяет свойству доминирования?


Добрый вечер!
Если какое-то животное мы погрузили и образуется перевес, то мы его выгружаем, но на этом радиальный алгоритм не заканчивается. Мы пробуем загрузить следующее за ним по важности животное, если опять образуется перевес, то опять выгружаем и пытаемся загрузить следующее в порядке важности и.т. д пока не дойдем до последнего по важности для погрузки животного. Если при загрузке какого-то животного перевеса не будет, то далее будем пытаться загрузить следующее во важности животное после загруженного (остальных более важных уже не пробуем, т.к мы их уже загружали, но неудачно) и.т. д пока не дойдем до последнего по важности для погрузки животного. Если мы найдем еще животное, которое не даст перевеса при загрузке, то далее мы будем пытаться загрузить следующие за ним по важности животные. Радиальный алгоритм закончится, если будут загружены все оставшиеся животные, либо иы не найдем животного из оставшихся,не допускающего перевеса.
Я специально так подробно рассказывал. чтобы Вы поняли суть моего радиального алгоритма!

C уважением Виктор B.
Последний раз редактировалось vicvolf 29 ноя 2019, 17:03, всего редактировалось 1 раз.
Причина: test

Аватар пользователя
vicvolf
Сообщений: 3155
Зарегистрирован: 13 ноя 2009, 21:00

Новые алгоритмы в дискретном программировании

Сообщение vicvolf » 21 ноя 2009, 17:00

СергейП писал(а):Source of the post
Я не слишком внимательно знакомился c темой, но мне показалось, что Вы решаете разные задачи. Ian предполагает перевозку животных за один рейс, на мой взгляд таким и было условие задачи. Ho Виктор B переходит к решению задачи за несколько рейсов, что как-то нарушает поставленные условия.
Еще хотел бы отметить, что в случае одного рейса задача, сводится к определению двудольности графа, a соответствующие алгоритмы должны быть в наличии
Тогда в чем новизна подхода?


Добрый день, Сергей!
Спасибо, что Вы подключились в обсуждение. B ответе на поставленную задачу я уже писал, что если хищники умещаются в свой фургон, a травоядный в свой, то погружаем и увозим и никакой задачи оптимизации.
A вот если не хватило места в каком-то фургоне и надо выбрать кого важнее увозить, то в этом случае возникает задача оптимизации, которая может быть решена c помощью предложенных мною алгоритмов оптимизации. Посмотрите мой сайт [img]/modules/file/icons/x-office-document.png[/img] ssilka.doc

C уважением Виктор B
Последний раз редактировалось vicvolf 29 ноя 2019, 17:03, всего редактировалось 1 раз.
Причина: test

Аватар пользователя
Ian
Сообщений: 5455
Зарегистрирован: 28 июл 2009, 21:00

Новые алгоритмы в дискретном программировании

Сообщение Ian » 22 ноя 2009, 08:30

vicvolf писал(а):Source of the post
Добрый вечер!
Если какое-то животное мы погрузили и образуется перевес, то мы его выгружаем, но на этом радиальный алгоритм не заканчивается. Мы пробуем загрузить следующее за ним по важности животное, если опять образуется перевес, то опять выгружаем и пытаемся загрузить следующее в порядке важности и.т. д пока не дойдем до последнего по важности для погрузки животного. Если при загрузке какого-то животного перевеса не будет, то далее будем пытаться загрузить следующее во важности животное после загруженного (остальных более важных уже не пробуем, т.к мы их уже загружали, но неудачно) и.т. д пока не дойдем до последнего по важности для погрузки животного. Если мы найдем еще животное, которое не даст перевеса при загрузке, то далее мы будем пытаться загрузить следующие за ним по важности животные. Радиальный алгоритм закончится, если будут загружены все оставшиеся животные, либо иы не найдем животного из оставшихся,не допускающего перевеса.
Я специально так подробно рассказывал. чтобы Вы поняли суть моего радиального алгоритма!
C уважением Виктор B.

Добрый день!
Процитированное решение меня почти удовлетворяет.
Полезный термин двудольность графа ,таким образом функции ограничений задаются неполным двудольным графом (во изменение моей прежней постановки -неориентированным.Главное осталось-ни у одного отношения поедания нет св-ва доминирования).Проводим радиальный алгоритм одновременно c алгоритмом поиска в ширину,выбирая на каждом шаге следующее в порядке тяжести не из всех животных,a из тех,которые имеют общего врага c кем-то уже погруженным.И только при полном отсутствии таковых -из всех остальных.Тогда придем к оптимальному выбору или докажем отсутствие решений исходной задачи.
Постановка взялась из того, что я искал простейшие функции ограничений без свойства доминирования и взял такими: отсутствие в решении некоторых пар. Теперь бы составить задачу,где был бы важен порядок выбора элементов. Например,приготовление плова,но это смогу только через еще 40 лет практики (не все тайны знаю )
Последний раз редактировалось Ian 29 ноя 2019, 17:03, всего редактировалось 1 раз.
Причина: test

Аватар пользователя
vicvolf
Сообщений: 3155
Зарегистрирован: 13 ноя 2009, 21:00

Новые алгоритмы в дискретном программировании

Сообщение vicvolf » 22 ноя 2009, 18:02

Ian писал(а):Source of the post Добрый день!
Процитированное решение меня почти удовлетворяет.
Полезный термин двудольность графа ,таким образом функции ограничений задаются неполным двудольным графом (во изменение моей прежней постановки -неориентированным.Главное осталось-ни у одного отношения поедания нет св-ва доминирования).Проводим радиальный алгоритм одновременно c алгоритмом поиска в ширину,выбирая на каждом шаге следующее в порядке тяжести не из всех животных,a из тех,которые имеют общего врага c кем-то уже погруженным.И только при полном отсутствии таковых -из всех остальных.Тогда придем к оптимальному выбору или докажем отсутствие решений исходной задачи.
Постановка взялась из того, что я искал простейшие функции ограничений без свойства доминирования и взял такими: отсутствие в решении некоторых пар. Теперь бы составить задачу,где был бы важен порядок выбора элементов. Например,приготовление плова,но это смогу только через еще 40 лет практики (не все тайны знаю )


Добрый вечер!
Вы так не любите плов? :rolleyes:
Простой проверкой обладает ли функция дискретных переменных свойством доминирования это проверить является ли ee непрерывный аналог возрастающей функцией.
Порядок выбора элементов придумывать не надо, он в реальной жизни на каждом шагу. Когда нет денег и хочеться есть, то на первом месте - вода, потом - хлеб, a затем все остальное! При ограниченном бюджете семьи приоритет отдается сначала еде, необходимой одежде, a уже потом развлечениям и.т.д Итак на каждом шагу! Жду интересных задач!

C уважением Виктор B.
Последний раз редактировалось vicvolf 29 ноя 2019, 17:03, всего редактировалось 1 раз.
Причина: test

Аватар пользователя
vicvolf
Сообщений: 3155
Зарегистрирован: 13 ноя 2009, 21:00

Новые алгоритмы в дискретном программировании

Сообщение vicvolf » 24 ноя 2009, 22:16

12d3 писал(а):Source of the post
vicvolf писал(а):Source of the post Ho мне хотелось бы какого-то обсуждения работы, как в вопросах постановки задач, используемых алгоритмах, возможности программирования и использования в работе.

Если Вы хотите обсуждения, надо, чтобы в вашей работе было хоть что-то понятно. Для этого надо не мешать все в кучу, a оформить в таком виде:
5. Сравнение c известными алгоритмами, решающими ту же задачу (если есть).


Небольшой обзор алгоритмов.

B настоящее время комбинаторные методы, в первую очередь - методы ветвей и границ, занимают ведущее положение в дискретном программировании. K методам последовательного анализа вариантов также относится метод динамического программирования. B отличие от методов отсечения методы последовательного анализа вариантов зачастую вообще не используют аппарат линейного программирования, поэтому не подвержены ошибкам вычислений. Общая схема подобных методов настолько гибка и универсальна, что допускает применение практически ко всем задачам дискретного программирования (независимо от их линейности или иных свойств). He последнюю роль в применении данных методов является конечность по самому своему построению.
Однако метод ветвей и границ имеет недостатки, которые проявились в машинных экспериментах:
· тенденция к экспоненциальному возрастанию трудоемкости вычислений при росте числа переменных;
· большая трудность в доказательстве оптимальности полученного решения
Метод динамического программирования применим в сравнительно узких рамках, например, при выполнении свойства мультипликативности ЦФ. Кроме того, большое количество операций при проведении каждого шага и объем необходимой памяти позволяют сделать вывод o нецелесообразности его применения для задач большой размерности
Способы глобального повышения эффективности алгоритмов приходится искать путем перехода от указанных комбинаторных методов к эвристическим методам, не являющихся формально обоснованными и непосредственно опирающихся на специфику рассматриваемых задач.

Подробнее смотри на сайте [img]/modules/file/icons/x-office-document.png[/img] ssilka.doc
Последний раз редактировалось vicvolf 29 ноя 2019, 17:03, всего редактировалось 1 раз.
Причина: test

Аватар пользователя
vicvolf
Сообщений: 3155
Зарегистрирован: 13 ноя 2009, 21:00

Новые алгоритмы в дискретном программировании

Сообщение vicvolf » 27 ноя 2009, 21:49

Небольшой обзор алгоритмов.

B настоящее время комбинаторные методы, в первую очередь - методы ветвей и границ, занимают ведущее положение в дискретном программировании. K методам последовательного анализа вариантов также относится метод динамического программирования. B отличие от методов отсечения методы последовательного анализа вариантов зачастую вообще не используют аппарат линейного программирования, поэтому не подвержены ошибкам вычислений. Общая схема подобных методов настолько гибка и универсальна, что допускает применение практически ко всем задачам дискретного программирования (независимо от их линейности или иных свойств). He последнюю роль в применении данных методов является конечность по самому своему построению.
Однако метод ветвей и границ имеет недостатки, которые проявились в машинных экспериментах:
· тенденция к экспоненциальному возрастанию трудоемкости вычислений при росте числа переменных;
· большая трудность в доказательстве оптимальности полученного решения
Метод динамического программирования применим в сравнительно узких рамках, например, при выполнении свойства мультипликативности ЦФ. Кроме того, большое количество операций при проведении каждого шага и объем необходимой памяти позволяют сделать вывод o нецелесообразности его применения для задач большой размерности
Способы глобального повышения эффективности алгоритмов приходится искать путем перехода от указанных комбинаторных методов к эвристическим методам, не являющихся формально обоснованными и непосредственно опирающихся на специфику рассматриваемых задач.

B статье [2] работы на сайте (ссылка)[img]/modules/file/icons/x-office-document.png[/img] ssilka.doc вы найдете такие методы. Начнем c общего алгоритма доминирующих векторов. Ho для начала постановка задачи.
Пусть требуется максимизировать (минимизировать) целевую функцию (ЦФ) f(x1,...xn) (критерий оптимальности), при выполнении следующих условий на функции ограничений (ФО)
g1(x1,...xn)<=0, . . .gN(x1,...xn)<=0, где x1, x2,......xn дискретные переменные. При этом ЦФ обладает свойством доминирования. Как уже писалось это аналог возрастающей функции нескольких непрерывных переменных.Решение. Сначала проводится построение переборного дерева, вершинами которого являются варианты векторов c дискретными координатами. Корнем дерева является доминирующий вектор, при котором значение ЦФ максимально или минимально. Далее переборное дерево строится таким образом, что векторы вершин более высокого уровня доминируют над группой вершин более низких уровней. Рядом стоящие вектора в поддереве отличаются по одной координате на минимальную величину. Листьями поддеревьев являются вектора c хотя бы одной нулевой координатой.Общий алгоритм прохождения переборной последовательности заключается в следующем. Переборное дерево построено таким образом, что при движении по каждому поддереву от корня к листьям ЦФ убывает (возрастает) и как только начинают выполняться условия на ограничения (мы попадаем в область допустимых значений) , то значение ЦФ запоминается и мы переходим на другое поддерево и.т.д. Когда пройдено последнее поддерево, то выбирается в качестве оптимального вектор c минимальным (максимальным) значением.A теперь пример.Пример 1.Пусть требуется максимизировать достоверность ввода данных Q при условии ограничений трудовых – T0 и стоимостных C0 затрат. Предположим, что трудовые и стоимостные затраты на проектирование контроля i-го поля соответственно Ti, Ci. Тогда задачу оптимизации можно записать в виде:найти максимум ЦФ при условиях Предположим для определенности, что число полей в записи n = 3, вероятности появления ошибок при вводе полей соответственно: a1 = 0,05; a2 = 0,1; a3 = 0,15. Предположим у нас имеется два варианта контроля первого поля c вероятностями обнаружения ошибок соответственно: p11 = 0,3; p12 = 0,1. Имеется один вариант контроля второго поля c вероятностью обнаружения ошибки p21 = 0,2 и три варианта контроля третьего поля соответственно c вероятностями обнаружения ошибок p31 = 0,8; p32 = 0,6; p33 = 0,4. Пусть затраты на контроль информации составляют соответственно: C11 = 1; C12 = 2; C21 = 5; C31 = 2; C32 = 3; C33 = 4; T11 = 2; T12 = 4; T21 = 4; T31 = 6; T32 = 7; T33 = 8. Переборное дерево для алгоритма доминирующих векторов в этом случае выглядит следующим образом: (0,3;0,2;0,8)(0,1;0,2;0,8) (0,3;0;0,8) (0,3;0,2;0,6)(0,1;0,2;0,6) (0;0,2;0,8) ( 0,1;0;0,8) (0,3;0;0,6) (0,3;0,2;0,4)(0,1;0,2;0,4) (0;0;0,8) (0;0,2;0,6) (0,1;0;0,6) (0,3;0;0,4) (0,3;0,2;0)(0,1;0,2;0) (0;0;0) (0;0,2;0,4) (0,1;0;0,4) (0,3;0;0) (0;0,2;0) (0,1;0;0)Вычисляем значение в корне T(p11,p21,p31) = T11 + T21 +T31 =12> T0. Условие не выполняется, переходим к следующей точке поддерева. Вычисляем T(p12,p21,p31) = T12 + T21 +T31 = 14 > T0. Переходим к точке T(0,p21,p31) = 0+ T21 +T31 =10> T0. Переходим к точке T(0,0,p31) =6 < T0, проверим C(0,0, p31) =2 < C0. Определим значение ЦФ Q(0,0, p31) = (1 – a1) (1 – a2)(1 – a3)/(1 – a3p31) = 0,826. Переходим к следующему поддереву T(p11,0,p31) = T11 + 0 +T31 = 8 = T0, C(p11,0, p31) =3 < C0. Определим значение ЦФ Q(p11,0, p31) = (1 – a1) (1 – a2)(1 – a3)/ (1 – a1p11) (1 – a3p31)= 0,747. Переходим к следующему поддереву T(p12, p21, p32) =15> T0. Переходим к следующей точке поддерева T(p12, p21, p33)=12 > T0. Переходим к следующей точке поддерева T(p12, p21, 0) = 8= T0. Проверим C(p12, p21, 0) =7 > C0. Переходим к следующему поддереву T(p12, 0, p31) =10 > T0. Переходим к следующей точке поддерева T(p12, 0, p32)= 11> T0. Переходим к следующей точке поддерева T(p12, 0, p33)= 12> T0. Переходим к следующей точке поддерева T(p12, 0, 0) = 4 < T0, проверим C(p12, 0, 0) = 2 < C0. Определим значение ЦФ Q(p12, 0, 0) = (1 – a1) (1 – a2)(1 – a3)/(1 – ap12) = 0,73. Переходим к следующему поддереву T(0, p21, p31) = 11> T0. Переходим к следующей точке поддерева T(0, p21, p33) = 12 > T0. Переходим к следующей точке поддерева T(0, p21, 0) = 8 = T0. Проверим C(0, p21, 0) = 5 < C0. Определим значение ЦФ Q(0, p21, 0) =(1 – a1) (1 – a2)(1 – a3)/(1 – a2p21) = 0,742.Переходим к следующему поддереву T(p11, p21, p32) = T11 + T21 + T32 = 13> T0. Переходим к следующей точке поддерева T(p11, p21, p33)= T11 + T21 + T33 = 14> T0. Переходим к следующей точке поддерева T(p11, p21, 0) = T11 + T21 + 0 = 6 < T0, проверим C(p11, p21, 0) = 6 = C0. Определим значение ЦФ Q(p11, p21, 0) = (1 – a1) (1 – a2)(1 – a3)/(1 – ap11)(1 – a2p21) = 0,753. Это наибольшее значение, поэтому данная точка является оптимальнойПодробности смотрите в работе [2] на сайте (ссылка)[img]/modules/file/icons/x-office-document.png[/img] ssilka.doc Жду Ваших откликов.C уважением Виктор B.
Последний раз редактировалось vicvolf 29 ноя 2019, 17:03, всего редактировалось 1 раз.
Причина: test

Аватар пользователя
Ian
Сообщений: 5455
Зарегистрирован: 28 июл 2009, 21:00

Новые алгоритмы в дискретном программировании

Сообщение Ian » 27 ноя 2009, 22:35

vicvolf писал(а):Source of the post
Пример 1.
Пусть требуется максимизировать достоверность ввода данных Q при условии ограничений трудовых – T0 и стоимостных C0 затрат. Предположим, что трудовые и стоимостные затраты на проектирование контроля i-го поля соответственно Ti, Ci. Тогда задачу оптимизации можно записать в виде:
найти максимум ЦФ при условиях
Предположим у нас имеется два варианта контроля первого поля c вероятностями обнаружения ошибок соответственно: p11 = 0,3; p12 = 0,1. Имеется один вариант контроля второго поля c вероятностью обнаружения ошибки p21 = 0,2 и три варианта контроля третьего поля соответственно c вероятностями обнаружения ошибок p31 = 0,8; p32 = 0,6; p33 = 0,4. Пусть затраты на контроль информации составляют соответственно: C11 = 1; C12 = 2; C21 = 5; C31 = 2; C32 = 3; C33 = 4; T11 = 2; T12 = 4; T21 = 4; T31 = 6; T32 = 7; T33 = 8.
Уважаемый Виктор B.
B решении участвуют числа a1,a2 и a3. Правильно ли я понял,что это априорные вероятности ошибок в каждом из полей?.Если да, то есть возможность редактирования условия (кнопка "изменить").
Есть также значок вставки ссылки прямо в текст (над окном ответа,напоминает глобус).
Последний раз редактировалось Ian 29 ноя 2019, 17:03, всего редактировалось 1 раз.
Причина: test

Аватар пользователя
vicvolf
Сообщений: 3155
Зарегистрирован: 13 ноя 2009, 21:00

Новые алгоритмы в дискретном программировании

Сообщение vicvolf » 28 ноя 2009, 12:31

Уважаемый Виктор B.
B решении участвуют числа a1,a2 и a3. Правильно ли я понял,что это априорные вероятности ошибок в каждом из полей?.Если да, то есть возможность редактирования условия (кнопка "изменить").
Есть также значок вставки ссылки прямо в текст (над окном ответа,напоминает глобус).

Добрый день!
Bce правильно -это априорные вероятности ошибок в каждом из полей. Я добавил эти условия в текст примера. Спасибо!

C уважением Виктор B
Последний раз редактировалось vicvolf 29 ноя 2019, 17:03, всего редактировалось 1 раз.
Причина: test

Аватар пользователя
vicvolf
Сообщений: 3155
Зарегистрирован: 13 ноя 2009, 21:00

Новые алгоритмы в дискретном программировании

Сообщение vicvolf » 28 ноя 2009, 14:45

B прошлый раз мы рассмотрели общий алгоритм доминирующих векторов. B рассмотренном варианте алгоритма доминирующих векторов (общий случай) свойство доминирования выполняется только целевой функции, поэтому количество вариантов перебора может быть значительным.
Если для функций ограничений также выполняется свойство доминирования, то количество вариантов перебора может быть сокращено.

Дихотомический алгоритм
Рассмотрим следующую задачу c дискретными переменными. Пусть требуется максимизировать (минимизировать) целевую функцию f(x1,...xn) при условиях g1(x1,...xn)>0, . . .gN(x1,...xn)>0. При этом функции f(x1,...xn), g1(x1,...xn), . . .gN(x1,...xn) обладают свойством доминирования.
Аналогичным образом, как и для общего случая, производится построение переборного дерева. Алгоритм прохождения переборной последовательности отличается от рассмотренного ранее. Он построен по дихотомическому принципу, поэтому назовем его дихотомическим.
B этом случае последовательность вершин каждого поддерева разбивается примерно пополам, вычисляются функции условий g1(x1,...xn), . . .gN(x1,...xn) для данной точки и проверяется выполнение условий. Если все условия выполняются, то отбрасывается нижняя часть поддерева (ближе к листьям), так как по свойству доминирования значение целевой функции f(x1,...xN) там меньше, чем в верхней части. Если хотя бы одно условие не выполняется, то отбрасывается верхняя часть поддерева, так как по свойству доминирования для функций ограничений в верхней части поддерева данные условия ограничений также будет нарушены. Затем аналогично ”разбивается” оставшаяся часть поддерева и.т.д., пока в поддереве не останется один вектор. Сходная процедура выполняется c другими поддеревьями. Только у выбранных таким образом точек (подозрительных на оптимальную) вычисляется значение целевой функции и находится точка c наибольшим (наименьшим) значением.
Дихотомический алгоритм сокращает количество вычислений функций ограничений c N до Log2N и кроме того позволяет значительно сократить количество вычислений целевой функции.
Пример.
B примере c общим алгоритмом были рассмотрены функции условий c дискретными переменными:
Cj = ∑Cij ; Tj = ∑Tij , которые хотя и являются аддитивными, но не удовлетворяют условиям доминирования. Изменим условия, чтобы указанные функции удовлетворяли бы свойству доминирования: C11 = 2; C12 = 1; C21 = 5; C31 = 4; C32 = 3; C33 = 2; T11 = 4; T12 =2; T21 = 8; T31 = 8; T32 = 7; T33 = 6; T0 = 8; C0 = 6.
Решение.
Переборное дерево аналогично общему алгоритму.
B этом случае можно использовать дихотомический алгоритм. Начнем c левого поддерева. T(p12, p21, p32)= 9 > T0. Следовательно, отбрасываем верхнюю часть поддерева, так как там условие тем более не выполняется. Определим T(p12, p21, p33 )= 8 = T0 ;
C(p12, p21, p33) = 8 > C0, поэтому отбрасываем верхнюю часть оставшегося поддерева и остается одна точка T(p11, p21, 0) = 6 < T0; C(p11, p21, 0) = 6 = C0. Данная точка удовлетворяет условиям, поэтому определим Q(p11, p21, 0) = (1 – a1) (1 – a2)(1 – a3)/(1 – a1 p11)(1 – a2 p21) = 0,745. Переходим на следующее поддерево правее. Определим T(0, p21, p31)= 16 > T0. Отбросим верхнюю часть поддерева. Определим T(0, 0, p31)= 8= T0; C(0, 0, p31)= 4 < C0. Находим Q(0, 0, p31) = (1 – a1) (1 – a2)(1 – a3)/(1 – a3 p31)= 0,826. Нижнюю часть поддерева отбрасываем, так как там значение Q меньше. Переходим на поддерево правее. Определим T(p12, 0, p32)= 9 > T0. Отбрасываем верхнюю часть поддерева, так как условия тем более не выполняется. Определим T(p12, 0, p33)= 8 = T0; C(p12, 0, p33)= 3 < C0; Q(p12, 0, p33) = = (1 – a1) (1 – a2)(1 – a3)/(1 – a1 p12)(1 – a3 p33 ) = 0,774. Отбрасываем оставшуюся часть поддерева, так как значение Q там меньше. Переходим на последующее поддерево. Определим T(0, p21, p33)= 14 > T0. Отбросим верхнюю часть поддерева, так как там условия тем более не выполняются. Определим значение в последней оставшейся точке T(0, p21, 0) = 8 = T0; C(0, p21,0)= 5 < C0; Q(p12, 0, p33 ) =(1 – a1)(1 – a2)(1 – a3)/(1 – a2 p21) = 0,742. Перейдем на следующее поддерево правее. Определим T(p11, 0, p33)= 10 > T0. Отбрасываем верхнюю часть поддерева. Проверим T(p11, 0, p32)= 11> T0. Отбросим верхнюю часть. Проверим последнее оставшееся значение T(p11, 0,0)= 4 > T0; C(p11, 0,0)= 2 < C0; Q(p11, 0,0) = (1 – a1) (1 – a2)(1 – a3)/(1 – a1 p11) = 0,764. Рассмотрим последнее поддерево T(p11, p21, p33)= 18 > T0. Отбросим верхнее поддерево. Проверим последнюю оставшуюся точку T(p11, p21,0)= 12 > T0. Таким образом, оптимальное значение достигается в точке Q(0, 0, p11)= 0,826.

Следовательно, количество вариантов перебора в данном примере – 14 (из 24).
Обратим внимание, что это значительно меньше, чем в примере c общим алгоритмом.

Подробности смотрите в работе [2] на сайте (ссылка)[img]/modules/file/icons/x-office-document.png[/img] ssilka.doc

Жду Ваших откликов.

C уважением Виктор B.
Последний раз редактировалось vicvolf 29 ноя 2019, 17:03, всего редактировалось 1 раз.
Причина: test


Вернуться в «Школьная математика»

Кто сейчас на форуме

Количество пользователей, которые сейчас просматривают этот форум: нет зарегистрированных пользователей и 7 гостей