Решение задачи нахождения кратчайшего маршрута методами динамического программирования

Постановка задачи линейного программирования. Модифицированный симплекс-метод решения задачи нахождения кратчайшего маршрута. Практическое применение модифицированного симплекс-метода. Реализация программного продукта и описание среды разработки.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 24.04.2014
Размер файла 380,8 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

26

Оглавление

динамический программирование симплекс маршрут

  • Введение
  • 1. Теоретическая часть
  • 1.1 Постановка задачи линейного программирования
  • 1.2 Модифицированный симплекс-метод решения задач линейного программирования
  • 2. Практическое применение модифицированного симплекс-метода для решения задачи линейного программирования
  • 3. Реализация программного продукта
  • 3.1 Описание среды разработки и системные требования
  • 3.2 Руководство пользователя
  • Заключение
  • Приложениея

Введение

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

Это так называемые задачи математического программирования, возникающие в самых разнообразных областях человеческой деятельности и прежде всего в экономических исследованиях, в практике планирования и организации производства.

Изучение этого круга задач и методов их решения привело к созданию новой научной дисциплины, получившей позднее название линейного программирования.

Однако до второй половины 20 века методы оптимизации во многих областях науки и техники применялись очень редко, поскольку практическое использование математических методов оптимизации требовало огромной вычислительной работы, которую без ЭВМ реализовать было крайне трудно, а в ряде случаев - невозможно.

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

Цель курсового проекта: решение задачи нахождения кратчайшего маршрута методами динамического программирования.

Задачи:

- Изучить основы линейного программирования;

- Изучить модифицированный симплекс-метод решения задач линейного программирования;

- Решить поставленную задачу модифицированным симплекс методом

- Реализовать решение поставленной задачи на ЭВМ.

1. Теоретическая часть

1.1 Постановка задачи линейного программирования

Линейное программирование -- математическая дисциплина, посвящённая теории и методам решения экстремальных задач на множествах n-мерного векторного пространства, задаваемых системами линейных уравнений и неравенств. Называется программированием условно, не имея ничего общего с написанием машинного кода.

Линейное программирование является частным случаем выпуклого программирования, которое в свою очередь является частным случаем математического программирования. Одновременно оно -- основа нескольких методов решения задач целочисленного и нелинейного программирования. Одним из обобщений линейного программирования является дробно-линейное программирование.

Многие свойства задач линейного программирования можно интерпретировать также как свойства многогранников и таким образом геометрически формулировать и доказывать их.

Термин «программирование» нужно понимать в смысле «планирования». Он был предложен в середине 1940-х годов Джорджем Данцигом, одним из основателей линейного программирования, ещё до того, как компьютеры были использованы для решения линейных задач оптимизации.

К числу задач линейного программирования можно отнести задачи:

- рационального использования сырья и материалов;

- задачи оптимального раскроя;

- оптимизации производственной программы предприятий;

- оптимального размещения и концентрации производства;

- составления оптимального плана перевозок, работы транспорта (транспортные задачи);

- управления производственными запасами;

- и многие другие, принадлежащие сфере оптимального планирования.

Линейное программирование является одной из основных частей того раздела современной математики, который получил название математического программирования. В общей постановке, задачи этого раздела выглядят следующим образом.

Требуется найти такие неотрицательные , которые обеспечивают максимум или минимум целевой функции (формула 1.1), которые удовлетворяют системе ограничений (формула 1.2) и не противоречат условиям неотрицательности: .

(1.1)

(1.2)

… … … … … … … … … …

В зависимости от вида функции F(X) различают разделы математического программирования: квадратичное программирование, выпуклое программирование, целочисленное программирование и т.д. Линейное программирование характеризуется тем, что функция F(X) является линейной функцией переменных X1, X2, …, Xn. [1]

Формы задач линейного программирования:

1. стандартная;

1.1 первая стандартная форма (формула 1.3);

(1.3)

… … … … … … … … … …

.

1.2 вторая стандартная форма (формула 1.4);

(1.4)

… … … … … … … … … …

.

2. каноническая (формула 1.5).

(1.5)

… … … … … … … … …

.

Задачу на минимум (формула 1.6) можно решать как задачу на максимум. Достаточно знаки целевой функции поменять на противоположные (формула 1.7). В результате необходимо знак целевой функции поменять на противоположный.

(1.6)

(1.7)

Аналогично можно сменить знак неравенства меньше или равно (формула 1.8) на больше или равно (формула 1.9).

(1.8)

(1.9)

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

Эта теорема имеет важнейшие значение, так как она указывает путь решения задачи линейного программирования. Совсем не надо перебирать все точки допустимой области. Достаточно перебрать вершины допустимой области, а ведь их конечное число. Кроме того, не нужно перебирать все вершины, можно этот перебор существенно сократить.

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

1.2 Модифицированный симплекс-метод решения задач линейного программирования

Для решения задач линейного программирования существует множество методов. Рассмотрим один из них улучшенный (модифицированный) симплекс-метод

Для начала расскажем, что такое симплекс-метод. Слово SIMPLEX в обычном смысле означает простой, несоставной, в противоположность слову COMPLEX.

Данный метод получил несколько различных форм (модификаций) и был разработан в 1947 году Г. Данцигом.

Сущность симплекс-метода заключается в том, что если число неизвестных больше числа уравнений, то данная система неопределенная с бесчисленным множеством решений. Для решения системы все неизвестные произвольно подразделяют на базисные и свободные. Число базисных переменных определяется числом линейно-независимых уравнений. Остальные неизвестные свободные. Им придают произвольные значения и подставляют в систему. Любому набору свободных неизвестных можно придать бесчисленное множество произвольных значений, которые дадут бесчисленное множество решений. Если все свободные неизвестные приравнять к нулю, то решение будет состоять из значений базисных неизвестных. Такое решение называется базисным. [7]

В теории линейного программирования существует теорема, которая утверждает, что среди базисных решений системы можно найти оптимальное, а в некоторых случаях и несколько оптимальных решений, но все они обеспечат экстремум целевой функции. Таким образом, если найти какой-либо базисный план, а затем улучшить его, то получится оптимальное решение. На этом принципе и построен симплекс-метод. [17]

Одним из модификаций симплекс-метода является улучшенный симплекс-метод. В литературе этот метод встречается также под названием метода обратной матрицы или модифицированного симплекс-метода.

При решении задач линейного программирования, в которых n (количество переменных) существенно больше m (количество ограничений), улучшенный симплекс-метод требует по сравнению с другими значительно меньшего количества вычислительных операций и объема памяти ЭВМ.

В улучшенном симплекс-методе реализуется та же основная идея, что и в обычном симплекс-методе, но здесь на каждой итерации пересчитывается не вся матрица A-1, обратная матрице ограничений A, а лишь та часть, которая относится к текущему базису Ax. [15]

Рассмотрим поэтапно шаги решения задачи линейного программирования улучшенным симплекс-методом:

1. В начале первого цикла нам известны обратная матрица (единичная матрица), базисное решение xb = b.

2. Образуем для каждой небазисной переменной характеристическую разность j, используя уравнение:

j = cj -- = cj -- Pj , (2)

где - двойственные переменные, которые можно найти следующим образом:

= cx * , (2.1)

где cx - вектор коэффициентов целевой функции при базисных переменных.

3. Предполагая, что используется стандартное правило выбора вводимого столбца, находим:

. (2.2)

4. Если s 0 - процедура останавливается. Текущее базисное решение является оптимальным.

5. Если s 0, вычисляем преобразованный столбец:

= Ps . (2.3)

6.Пусть

= (, , ..., ) . (2.4)

Если все 0 - процедура останавливается: оптимум неограничен.

7. В противном случае находим выводимую из базиса переменную:

= . (2.5)

8. Строим увеличенную матрицу:

, (2.6)

и трансформируем ее с ведущим элементом . Первые m столбцов дают матрицу, обратную новому базису.

9. Преобразуем базисное решение:

xb i xb i -- * , i r, (2.7)

xb r , (2.8)

и переходим к этапу 2.

Этот вариант называют также модифицированным симплекс-методом, поскольку он уменьшает объем вычислений на каждом шаге. Идея заключается в том, что на каждом шаге каноническую форму задачи для текущего базиса можно получить независимо от других таких форм непосредственно из исходной записи стандартной задачи ЛП.

Для этого нужно:

1. Сохранять исходную запись задачи на протяжении всей работы метода, это та цена, которую приходится платить за больше быстродействие;

2. Использовать так называемые симплекс - множители р - коэффициенты для непосредственного перехода от исходной записи задачи к ее текущей канонической форме базиса;

3. Использовать обращенный базис ВО№ - матрицу размера m x m, позволяющую вычислять на каждом шаге ведущий столбец aґs и обновлять симплекс - множители р.

Улучшенный симплекс-метод, обладает значительными преимуществами по сравнению со стандартной формой. Это относится к точности, скорости и требованиям к памяти. Большая часть этих преимуществ определяется тем фактором, что, как правило, матрицы больших линейных задач (то есть с n>m>100) являются слабо заполненными, содержат малый процент ненулевых элементов.

Обычной является плотность 5% или менее. Улучшенная форма симплекс-метода в большей степени способна использовать преимущества, вытекающие из этого факта. В этой форме характеристические разности и ведущий вектор вычисляются непосредственно по исходным данным. Поскольку исходная матрица слабо заполнена, а перемножение следует производить только тогда, когда оба сомножителя отличны от нуля, то время вычислений значительно сокращается. [9]

В дополнение к этому использование только исходных данных приводит к тому, что уменьшается возможность накопления ошибок округления. Наоборот, стандартные симплексные таблицы, даже если они первоначально являются слабо заполненными, в ходе итеративного процесса быстро заполняются ненулевыми элементами. Таким образом, время вычислений увеличивается, и, поскольку каждая таблица вычисляется из предшествующей, накопление ошибок может начать играть более серьезную роль. [15]

2. Практическое применение модифицированного симплекс-метода для решения задачи линейного программирования

Задание: Решить задачу модифицированным симплекс-методом.

Для производства двух видов изделий А и Б используется три типа технологического оборудования. На производство единицы изделия А оборудование первого типа используется а1=4 часов, оборудование второго типа а2=8 часов, а оборудование третьего типа а3=9 часов. На производство единицы изделия Б оборудование первого типа используется б1=7 часов, оборудование второго типа б2=3 часов, а оборудование третьего типа б3=5 часов.

На изготовление этих изделий оборудование первого типа может работать не более чем t1=49 часов, оборудование второго типа не более чем t2=51 часов, оборудование третьего типа не более чем t3=45 часов.

Прибыль от реализации единицы готового изделия А составляет АЛЬФА=6 рублей, а изделия Б - БЕТТА=5 рублей.

Составить план производства изделий А и Б, обеспечивающий максимальную прибыль от их реализации.

Решение: Составим математическую модель задачи.

Пусть план производства продукции (x1, x2), то есть производится x1 единиц продукции А и x2 единиц продукции В, по смыслу задачи x1 x2, ? 0. Тогда целевая функция - прибыль от продажи такого количества изделий, составляет F =6x1 + 5x2 > max, ее нужно максимизировать. Составим ограничения, связанные с ограниченным количеством ресурсов.

При плане производства (х1, х2) используется 4х1+7х2 часов работы оборудования первого типа, всего доступно 49 часов работы, поэтому 4х1+7х2? 49.

При плане производства (х1, х2) используется 8х1+3х2 часов работы оборудования второго типа, всего доступно 51 часов работы, поэтому 8х1+3х2? 51.

При плане производства (х1, х2) используется 9х1+5х2 часов работы оборудования третьего типа, всего доступно 45 часов работы, поэтому 9х1+5х2? 45.

Пришли к задаче линейного программирования:

F=6x1+5x2 > max,

,

х12?0.

Приводим ее к каноническому виду, вводя дополнительные переменные:

F=6x1+5x2 > max,

,

х12,х34,х5 ? 0.

Базис для этой задачи - столбцы {x3, x4, x5}. Записываем основную задачу (таблица 1):

Таблица 1 - Основная задача

Ограничения

Значение

x1

x2

x3

x4

x5

x3

49

4

7

1

0

0

x4

51

8

3

0

1

0

x5

45

9

5

0

0

1

Цел.функция

0

-6

-5

0

0

0

Оценки (-6;-5), наименьшая оценка в столбце х1, вводим его в базис. Выбираем столбец для вывода, находя min {49/4; 51/8; 45/9} = 45/9 = 5. Выводим из базиса х5.

Новый базис {x3, x4, x1}. Пересчитываем элементы столбца базисных значений и значение целевой функции, и обращенный базис (как по методу Жордана-Гаусса, используя выбранный разрешающий элемент).

Таблица 2 - Первая итерация

Базис

Значение

Обращение

aij

x3

49

1

0

0

4

x4

51

0

1

0

8

x1

45

0

0

1

9

Цел.функция

0

0

0

0

-6

Делим третью строку на 9, вычитаем из первой третью, умноженную на 4; вычитаем из второй третью, умноженную на 8; прибавляем к последней третью, умноженную на 6.

Таблица 3 - Вторая итерация

Базис

Значение

Обращение

aij

x3

29

1

0

-4/9

x4

11

0

1

-8/9

x1

5

0

0

1/9

Цел.функция

30

0

0

2/3

Находим новые симплекс-множители в последней строке (0 0 2/3). Вычисляем оценки для следующего шага:

(0 0 2/3) - (6 5) = (0 -5/3).

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

a2' = B-1a2 = =

Вносим этот столбец в таблицу (Таблица 3). Выбираем переменную для вывода, находя min{29/43/9;-;5/5/9} = 261/43. Выводим из базиса х3.

Таблица 3 - Третья итерация

Базис

Значение

Обращение

aij

x3

29

1

0

-4/9

43/9

x4

11

0

1

-8/9

-13/9

x1

5

0

0

1/9

5/9

Цел.функция

30

0

0

2/3

-5/3

Новый базис {x2, x4, x1}. Пересчитываем элементы столбца базисных значений и значение целевой функции, и обращенный базис:

Таблица 4 - Итоговая таблица

Базис

Значение

Обращение

aij

х2

261/43

9/43

0

-4/43

x4

850/43

13/43

1

-44/43

x1

70/43

-5/43

0

7/43

Цел.функция

1725/43

15/43

0

22/43

Находим новые симплекс-множители (15/43 0 22/43). Вычисляем оценки:

(15/43 0 22/43) - (6 5) = (0 0).

Отрицательных оценок нет. План оптимален в скобках указаны значения в десятичных дробях:

х1 = 70/43(1,63),

х2 = 261/43(6,07),

F = 1725/43(40,12).

3. Реализация программного продукта

3.1 Описание среды разработки и системные требования

Требования к аппаратуре и программному обеспечению.

Аппаратные требования:

Необходимый объем ОЗУ 64 Мб и графическим адаптером, поддерживающим режим 800х600 и выше, глубина цвета 32 бит. Необходимое место на жестком диске 28 Кб. Клавиатура, мышь.

Программные требования:

Операционная система: Windows2000 и выше.

Перед реализацией программного продукта, необходимо выбрать наиболее удобный и универсальный, применямый на практике в различных сферах метод. Для реализации было решено выбрать симплекс-метод, поскольку им можно решить практически любую задачу линейного программирования.

Так же необходимо выбрать среду разработки, в которой будет реализовываться программный продукт. Для данной методики было решено использовать Microsoft Visual Studio, с пакетом объектно-ориентированного программирования С++, т.к. данный язык имеет высокое быстродействие, широкую функциональность, поддержку графического программирования, что необходимо по задумке для воплощения идеи автора программы, а так же простой, понятный, "дружественный" интерфейс.

Требования к пользовательскому интерфейсам:

- программа должна работать в графическом режиме;

- в программе должны использоваться кнопки для решения;

- программа должна содержать поля для ввода данных;

- программа должна выводить на экран решения .

3.2 Руководство пользователя

Порядок работы с программой:

- Запускаем программу Simplex_GUI.exe;

- Задаем размерность матрицы (рисунок 2);

Рисунок 2 - Размерность матрицы

- Кликаем по кнопке задать;

- Далее заполняем появившиеся поля, в виде матрицы, которая в принципе является нашей симплекс таблицей (рисунок 3);

Рисунок 3 - Заполненная матрица

- Кликаем кнопку вычислить;

- После недолгих расчетов появляется окошко с результатами расчетов, значение x4 мы в расчет не берем, поскольку это дополнительная переменная, необходимая для расчетов(рисунок 4).

-

Рисунок 4 - Решение

Заключение

В первой главе данной курсовой работы были раскрыты теоретические основы линейного программирования, было установлено, что целью линейного программирования является решение задач оптимизации, то есть поиск такого решения, при котором мы получим максимальную выгоду, с минимальными убытками. Так же был разобран модифицированный симплекс-метод. Модифицированному симплекс метод, так же как и обычный может решать практически все задачи оптимизации, но кроме того, как мы выяснили имеет ряд преимуществ, такие как: скорость, точность и меньший объем требуемой памяти ЭВМ.

Во второй главе, на поставленной задаче мы продемонстрировали модифицированный симплекс-метод, с пошаговым описанием. Практическое применение данных методов, облегчило написание программного продукта.

В третьей главе, на основе модифицированного симплекс метода, мы создали программный продукт и проверили точность его решения на задаче, поставленной во второй главе. Программа была написана в среде Microsoft Visual Studio, на языке C++ на основе и универсального симплекс-метода решения задач линейного программирования.

Список используемых источников

Учебники и учебные пособия

1. Акулич И.Л. Глава 1. Задачи линейного программирования, Глава 2. Специальные задачи линейного программирования // Математическое программирование в примерах и задачах. -- М.: Высшая школа, 2009. -- 319 с. -- ISBN 5-06-002663-9

2. Астафьев Н.Н., “Противоположные задачи линейного программирования как инструментарий моделирования”, Автомат. и телемех., 2012, № 2, 5-10.

3. Ашманов С.А., Тимохов А.В. Теория оптимизации в задачах и упражнениях. -- М.: Наука, 2010. -- 446 с.

4. Берюхова Т.Н.Банк производственных задач в расчетах на ЭВМ: учебное пособие. - Тюмень.: ТюмИИ, 2011. - 124с.

5. Давыдов Э.Г. Исследование операций. -- М.: Высшая школа, 2009. -- 382 с.

6. Зуховицкий С.И., Авдеева Л.И. Линейное и выпуклое программирование. -- М.: Наука, 2010. -- 348 с.

7. Карманов В.Г. Математическое программирование: учебное пособие для студентов вузов. - М.: Физматлит, 2009. - 264с.

8. Кузнецов А.В., Сакович В.А., Холод Н.И. Высшая математика. Математическое программирование. -- Минск.: Вышейшая школа, 2006. -- 286 с.

9. Лунгу К.К. Линейное программирование. Руководство к решению задач. - М.: ФИЗМАТЛИТ, 2009.

10. Орлов А.И. Теория принятия решений. Учебное пособие. - М.: Издательство "Март", 2006.

11. Пашутин С. A. Оптимизация издержек и технология формирования оптимального ассортимента. // Управление персоналом. - 2007. - №5. - с.20-24.

12. Томас Х. Кормен и др. Глава 29. Линейное программирование // Алгоритмы: построение и анализ = INTRODUCTION TO ALGORITHMS. -- 2-е изд. -- М.: «Вильямс», 2011. -- С. 1296.

Интернет ресурсы

13. Задачи линейного программирования. Основные определения [Электронный ресурс]. - Режим доступа: http://stu.sernam.ru/book_sop.php?id=11, дата 10.12.2009.

14. Задачи линейного программирования. Теоретические основы ЗЛП - Режим доступа: http://ru.wikipedia.org/wiki, дата 15.01.2010.

15. Задачи линейного программирования. Примеры решения ЗЛП [Электронный ресурс]. - Режим доступа: http://www.matburo.ru/, дата 6.08.2011.

16. Задачи линейного программирования. Методы решения ЗЛП [Электронный ресурс]. - Режим доступа: http://math.semestr.ru/simplex/simplex.php, дата 15.05.2009.

17. Задачи линейного программирования. Симплекс метод решения - Режим доступа: http://mathminsk.com/sample/, дата 23.05.20010.

Приложения

Приложение А

Блок-схема алгоритма симплекс-метода

Приложение B

Код программы

int CSimpleks::iteration()

{//Возвращаемые значения:

//1 - решение найдено

//-1 - решений нет

//0 - итерация закончилась успешно

int o_Col=-1; //Опорный столбик

int o_Row=-1; //Опорная строка

float o_Col_temp=0; //Вспомогательная переменная

float o_Row_temp=-1; //Вспомогательная переменная

//Находим опорный столбик

for(int i=0; i<(size_small.x-1); i++)

{if(!horzX[i].is_used) continue; //Если базовая переменная сверху, пропустить

if((matrix[size.y-1][i]<0) && //Элемент меньше нуля

(matrix[size.y-1][i]<o_Col_temp)) //Элемент меньше o_Col_temp

{o_Col_temp=matrix[size.y-1][i]; //o_Col_temp равен текущему элементу

o_Col=i; //Индекс столбика равен счетчику цикла}}

if(o_Col==-1) return 1; //Если отрицательных элементов нет, решение найдено

BOOL is_positive=FALSE; //Есть ли положительные значения в опорном столбике

//--Ищем положительные значения в опорном столбике--

for(int i=0; i<size_small.y; i++)

{if(matrix[i][o_Col]>0)

{is_positive=TRUE;

o_Row_temp=matrix[i][size.x-1]/matrix[i][o_Col];

o_Row=i;

break;}}

if(!is_positive) return -1; //Положительных значений нет

//Находим опорную строчку

for(int i=0; i<size_small.y; i++)

{if(matrix[i][o_Col]>0)

{is_positive=TRUE;

if((matrix[i][size.x-1]/matrix[i][o_Col])<o_Row_temp)

{o_Row_temp=(matrix[i][size.x-1]/matrix[i][o_Col]);

o_Row=i;}}}

if(o_Row==-1) return -1; //Если положительных элементов нет, решений нет

//Копируем bi в неиспользуемый более столбец matrix

for(int i=0; i<size.y; i++)

{matrix[i][size_small.x-1]=matrix[i][size.x-1];}

//Создаем новую таблицу

float ** chart=new float*[size.y];

for(int i=0; i<size.y; i++)

{chart[i]=new float[size_small.x];}

//Заполняем новую таблицу

for(int i=0; i<size.y; i++)

{for(int j=0; j<size_small.x; j++)

{if(i==o_Row && j==o_Col) //Опорный элемент

{chart[i][j]=1/matrix[o_Row][o_Col];

continue;}

if(i==o_Row) //Опорная строка

{chart[i][j]=matrix[i][j]/matrix[o_Row][o_Col];

continue;}

if(j==o_Col) //Опорный столбик

{chart[i][j]=-matrix[i][j]/matrix[o_Row][o_Col];

//chart[i][j]=0;

continue;}

//В остальных случаях вычисляем значение элемента по формуле

chart[i][j]= ((matrix[i][j]*matrix[o_Row][o_Col]) - (matrix[i][o_Col]*matrix[o_Row][j]))/matrix[o_Row][o_Col];}}

//Делим все элементы на опорный

for(int i=0; i<size.y; i++)

{for(int j=0; j<size_small.x; j++)

{//chart[i][j]=chart[i][j]/matrix[o_Row][o_Col];

//matrix[i][j]=chart[i][j]; //Копируем значения обратно в matrix

if(j==size_small.x-1)

{//matrix[i][size.x-1]=chart[i][j];//Копируем bi в последний столбик matrix}}}

//Копируем chart обратно в matrix

for(int i=0; i<size.y; i++)

{for(int j=0; j<size_small.x; j++)

{matrix[i][j]=chart[i][j];

if(j==size_small.x-1)

{matrix[i][size.x-1]=chart[i][j];//Копируем bi в последний столбик matrix}}

//Меняем номера переменных

var temp;

temp.num=horzX[o_Col].num;

temp.is_used=horzX[o_Col].is_used;

temp.type=horzX[o_Col].type;

horzX[o_Col].num=vertX[o_Row].num;

horzX[o_Col].is_used=vertX[o_Row].is_used;

horzX[o_Col].type=vertX[o_Row].type;

vertX[o_Row].num=temp.num;

vertX[o_Row].is_used=temp.is_used;

vertX[o_Row].type=temp.type;

//----?----//

if(horzX[o_Col].type==TRUE) horzX[o_Col].is_used=FALSE;

//----?----//

//Чистим память

delete[] chart;

//Итерация закончилась успешно. Возвращаем 0

return 0;

Размещено на Allbest.ru


Подобные документы

  • Описание симплекс метода решения задачи линейного программирования. Решение задачи методом Литла на нахождение кратчайшего пути в графе, заданном графически в виде чертежа. Из чертежа записываем матрицу расстояний и поэтапно находим кратчайший путь.

    задача [390,4 K], добавлен 10.11.2010

  • Алгоритм решения задач линейного программирования симплекс-методом. Построение математической модели задачи линейного программирования. Решение задачи линейного программирования в Excel. Нахождение прибыли и оптимального плана выпуска продукции.

    курсовая работа [1,1 M], добавлен 21.03.2012

  • Постановка задачи линейного программирования. Решение системы уравнений симплекс-методом. Разработка программы для использования симплекс-метода. Блок-схемы основных алгоритмов. Создание интерфейса, инструкция пользователя по применению программы.

    курсовая работа [1,7 M], добавлен 05.01.2015

  • Построение математической модели. Выбор, обоснование и описание метода решений прямой задачи линейного программирования симплекс-методом, с использованием симплексной таблицы. Составление и решение двойственной задачи. Анализ модели на чувствительность.

    курсовая работа [100,0 K], добавлен 31.10.2014

  • Сущность линейного программирования. Математическая формулировка задачи ЛП и алгоритм ее решения с помощью симплекс-метода. Разработка программы для планирования производства с целью обеспечения максимальной прибыли: блок-схема, листинг, результаты.

    курсовая работа [88,9 K], добавлен 11.02.2011

  • Определение наиболее выгодного соотношения сортов сырой нефти, используемой для производства бензина. Математическая постановка задачи. Выбор метода решения задачи. Описание алгоритма решения задачи (симплекс-метода) и вычислительного эксперимента.

    курсовая работа [1,1 M], добавлен 08.12.2010

  • Решение задачи линейного программирования графическим методом, его проверка в MS Excel. Анализ внутренней структуры решения задачи в программе. Оптимизация плана производства. Решение задачи симплекс-методом. Многоканальная система массового обслуживания.

    контрольная работа [2,0 M], добавлен 02.05.2012

  • Разработка структурной диаграммы программного модуля для целочисленного решения задачи линейного программирования с использованием симплекс-метода. Краткое описание всех уровней диаграммы с назначением всех ее блоков. Язык программирования Visual C#.

    курсовая работа [874,7 K], добавлен 27.02.2013

  • Общие задачи линейного программирования. Описание алгоритма симплекс-метода, записанного в канонической форме с односторонними ограничениями. Алгоритм построения начального опорного плана для решения задачи. Расширенный алгоритм искусственного базиса.

    курсовая работа [142,9 K], добавлен 24.10.2012

  • Решение задачи линейного программирования симплекс-методом: постановка задачи, построение экономико-математической модели. Решение транспортной задачи методом потенциалов: построение исходного опорного плана, определение его оптимального значения.

    контрольная работа [118,5 K], добавлен 11.04.2012

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.