Всё сдал! - помощь студентам онлайн Всё сдал! - помощь студентам онлайн

Реальная база готовых
студенческих работ

Узнайте стоимость индивидуальной работы!

Вы нашли то, что искали?

Вы нашли то, что искали?

Да, спасибо!

0%

Нет, пока не нашел

0%

Узнайте стоимость индивидуальной работы

это быстро и бесплатно

Получите скидку

Оформите заказ сейчас и получите скидку 100 руб.!


Табличный симплекс-метод

Тип Реферат
Предмет Информатика и программирование
Просмотров
1325
Размер файла
43 б
Поделиться

Ознакомительный фрагмент работы:

Табличный симплекс-метод

ИСПОЛЬЗОВАНИЕ ТАБЛИЧНОГО СИМПЛЕКС-МЕТОДА ДЛЯ РЕШЕНИЯ ЗАДАЧ ЛИНЕЙНОГО ПРОГРАММИРОВАНИЯ ДЛЯОПТИМИЗАЦИИ ЭКОНОМИЧЕСКИХ ЗАДАЧ

ВВЕДЕНИЕ

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

1.КРАТКИЙ ОБЗОР АЛГОРИТМОВ РЕШЕНИЯ ЗАДАЧ ДАННОГО ТИПА

1.1 Математическое программирование

Математическое программирование занимается изучение экстремальных задач и поиском методов их решения. Задачи математического программирования формулируются следующим образом : найти экстремум некоторой функции многих переменных f ( x1, x2, ... , xn ) при ограничениях gi ( x1, x2, ... , xn ) * bi , где gi - функция, описывающая ограничения, * - один из следующих знаков £ , = , ³ , а bi - действительное число, i = 1, ... , m. f называется функцией цели ( целевая функция ).

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

Задачу линейного программирования можно сформулировать так . Найти max

при условии : a11 x1 + a12 x2 + . . . + a1n xn £ b1 ;

a21 x1 + a22 x2 + . . . + a2n xn £ b2 ;

. . . . . . . . . . . . . . . . . . . . . . . . . . . .

am1 x1 + am2 x2 + . . . + amn xn £ bm ;

x1³ 0, x2³ 0, . . . , xn³ 0 .

Эти ограничения называются условиями неотрицательности. Если все ограничения заданы в виде строгих равенств, то данная форма называется канонической.

В матричной форме задачу линейного программирования записывают следующим образом. Найти max cT x

при условии

A x £ b ;

x ³ 0 ,

где А - матрица ограничений размером ( m´n), b(m´1) - вектор-столбец свободных членов, x(n ´ 1) - вектор переменных, сТ = [c1, c2, ... , cn ] - вектор-строка коэффициентов целевой функции.

Решение х0 называется оптимальным, если для него выполняется условие сТ х0³ сТ х, для всех х Î R(x).

Поскольку min f(x) эквивалентен max [ - f(x) ] , то задачу линейного программирования всегда можно свести к эквивалентной задаче максимизации.

Для решения задач данного типа применяются методы:

1) графический;

2) табличный ( прямой, простой ) симплекс - метод;

3) метод искусственного базиса;

4) модифицированный симплекс - метод;

5) двойственный симплекс - метод.

1.2 Табличный симплекс - метод

Для его применения необходимо, чтобы знаки в ограничениях были вида “ меньше либо равно ”, а компоненты вектора b - положительны.

Алгоритм решения сводится к следующему :

Приведение системы ограничений к каноническому виду путём введения дополнительных переменных для приведения неравенств к равенствам.

Если в исходной системе ограничений присутствовали знаки “ равно ”или “ больше либо равно ”, то в указанные ограничения добавляются

искусственные переменные, которые так же вводятся и в целевую функцию со знаками, определяемыми типом оптимума.

Формируется симплекс-таблица.

Рассчитываются симплекс-разности.

Принимается решение об окончании либо продолжении счёта.

При необходимости выполняются итерации.

На каждой итерации определяется вектор, вводимый в базис, и вектор, выводимый из базиса. Таблица пересчитывается по методу Жордана-Гаусса или каким-нибудь другим способом.

1.3 Метод искусственного базиса

Данный метод решения применяется при наличии в ограничении знаков “ равно ”, “ больше либо равно ”, “ меньше либо равно ” и является модификацией табличного метода. Решение системы производится путём ввода искусственных переменных со знаком, зависящим от типа оптимума, т.е. для исключения из базиса этих переменных последние вводятся в целевую функцию с большими отрицательными коэффициентами m , а в задачи минимизации - с положительными m . Таким образом из исходной получается новая m - задача.

Если в оптимальном решении m - задачи нет искусственных переменных, это решение есть оптимальное решение исходной задачи. Если же в оптимальном решении m - задачи хоть одна из искусственных переменных будет отлична от нуля, то система ограничений исходной задачи несовместна и исходная задача неразрешима.

1.4 Модифицированный симплекс - метод

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

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

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

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

2. СОДЕРЖАТЕЛЬНАЯ ПОСТАНОВКА ЗАДАЧИ

Для производства двух видов изделий А и В используется три типа технологического оборудования. На производство единицы изделия А идёт времени, часов : оборудованием 1-го типа - а1 , оборудованием 2-го типа - а2 , оборудованием 3-го типа - а3 .На производство единицы изделия В идёт времени, часов : оборудованием 1-го типа - b1 , оборудованием 2-го типа - b2 ,, оборудованием 3-го типа - b3 .

На изготовление всех изделий администрацияпредприятия может предоставить оборудование 1-го типа не более, чем на t1 ,оборудование 2-го типа не более, чем на t2 , оборудование 3-го типа не более, чем на t3 часов.

Прибыль от реализации единицы готового изделия А составляет a рублей, а изделия В - b рублей.

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

а1 = 1 b1 = 5 t1 = 10 a = 2

а2 = 3 b2 = 2 t2 = 12 b = 3

а3 = 2 b3 = 4 t3 = 10

3. РАЗРАБОТКА И ОПИСАНИЕ АЛГОРИТМА РЕШЕНИЯ ЗАДАЧИ

3.1 Построение математической модели задачи

На произв-во изделия А, часовНа произв-во изделия B, часовПредпр-е предоставит, часов
Оборуд-е 1го типа1510
Оборуд-е 2го типа3212
Оборуд-е 3го типа2410
Прибыль от реализации, за ед. изд-я23

Построение математической модели осуществляется в три этапа :

1. Определение переменных, для которых будет составляться математическая модель.

Так как требуется определить план производства изделий А и В, то переменными модели будут:

x1 - объём производства изделия А, в единицах;

x2 - объём производства изделия В, в единицах.

2. Формирование целевой функции.

Так как прибыль от реализации единицы готовых изделий А и В известна, то общий доход от их реализации составляет 2x1 + 3x2 ( рублей ). Обозначив общий доход через F, можно дать следующую математическую формулировку целевой функции : определить допустимые значения переменных x1 и x2 , максимизирующих целевую функцию F = 2x1 + 3x2 .

3. Формирование системы ограничений.

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

x1 + 5x2 £10;3x1 + 2x2 £ 12 ; 2x1 + 4x2£ 10 .

Так как объёмы производства продукции не могут принимать отрицательные значения, то появляются ограничения неотрицательности :

x1 ³ 0 ; x2³ 0 .

Таким образом, математическая модель задачи представлена в виде : определить план x1 , x2 , обеспечивающий максимальное значение функции :

max F = max ( 2x1 + 3x2 )

при наличии ограничений :

x1 + 5x2 £10;

3x1 + 2x2 £ 12 ;

2x1 + 4x2£ 10 .

x1 ³ 0 ; x2³ 0 .

3.2 Решение задачи вручную

Табличный метод ещё называется метод последовательного улучшения оценки. Решение задачи осуществляется поэтапно.

1. Приведение задачи к форме :

x1 + 5x2 £10;

3x1 + 2x2 £ 12 ;

2x1 + 4x2£ 10 .

x1 ³ 0 ; x2³ 0 .

2. Канонизируем систему ограничений :

x1 + 5x2 + x3 =10;

3x1 + 2x2 + x4 = 12 ;

2x1 + 4x2 + x5 = 10 .

x1 ³ 0 ; x2³ 0 .

A1 A2 A3 A4 A5 A0

3. Заполняется исходная симплекс-таблица и рассчитываются симплекс-разности по формулам :

d0 = - текущее значение целевой функции

di = - расчёт симплекс-разностей, где j = 1..6 .

C23000
БCбA0A1A2A3A4A5
A301015100
A401232010
A501024001
d0-2-3000

Так как при решении задачи на max не все симплекс-разности положительные, то оптимальное решение можно улучшить.

4. Определяем направляющий столбец j*. Для задачи на max он определяется минимальной отрицательной симплекс-разностью. В данном случае это вектор А2

5. Вектор i*, который нужно вывести из базиса, определяется по отношению :

min при аi j > 0

В данном случае сначала это А3 .

5. Заполняется новая симплекс-таблица по исключеню Жордана - Гаусса :

а). направляющую строку i* делим на направляющий элемент :

a i j = a i j / a i j , где j = 1..6

б). преобразование всей оставшейся части матрицы :

a ij = aij - a i j× aij , где i ¹ i* , j ¹ j*

В результате преобразований получаем новую симплекс-таблицу :

C23000
БCбA0A1A2A3A4A5
A2321/511/500
A40813/50-2/510
A5026/50-4/501
d6-7/503/500

Повторяя пункты 3 - 5, получим следующие таблицы :

C23000
БCбA0A1A2A3A4A5
A235/3011/30-1/6
A4011/3004/31-13/6
A125/310-2/305/6
d8 1/300-1/307/6
C23000
БCбA0A1A2A3A4A5
A233/4010-1/43/8
A3011/40013/4-13/8
A127/21001/2-1/4
d9 1/40001/45/8

Так как все симплекс-разности положительны, то оптимальное решение найдено :

X = ( 7/2 , 3/4 , 11/4 , 0 , 0 ) ( единиц )

max F = 9 1/4 ( рублей )

4. АНАЛИЗ МОДЕЛИ НА ЧУВСТВИТЕЛЬНОСТЬ

4.1 Построение двойственной задачи и её численное решение

Проведение анализа на чувствительность связано с теорией двойственности, поэтому в курсовой работе необходимо построить двойственную задачу и найти её численное решение.

Для рассматриваемой модели двойственная задача имеет вид :

min T( y ) = min ( 10y1 + 12y2 + 10y3 ) при условиях

y1 + 3y2 + 2y3 ³ 2 А1

5y1 + 2y2 + 4y3³ 3 А2

y1³ 0 , y2³0 , y3³ 0. А3, А4, А5

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

Yопт = ( 0, 1/4, 5/8, 0, 0 ), для которого Т(yопт) = 9 1/4.

Оптимальное значение целевой функции в двойственной задачи совпадает с оптимумом целевой функции прямой задачи, в чём не трудно убедиться.

4.2 Определение статуса ресурсов

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

Для данного примера дополнительные переменные х4 и х5 равны нулю, следовательно, оборудование второго и третьего типов являются “дефицитными”, а первого типа - “недефицитным” ( х3 = 2,75 ). Такой же вывод можно сделать из решения двойственной задачи.

4.3 Определение значимости ресурсов

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

В данном случае Yопт = ( 0, 1/4, 5/8, 0, 0 ). Таким образом, из двух “дефицитных” ресурсов оборудование второго типа имеет большую значимость и увеличении интервала работы на этом оборудовании более выгодно с точки зрения влияния на значение целевой функции.

4.4 Определение допустимого интервала изменения запаса ресурсов

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

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

C23000
БCбA0A1A2A3A4A5
A233/4010-1/43/8
A3011/40013/4-13/8
A127/21001/2-1/4
d9 1/40001/45/8

Так как начальными базисными переменными являлись x1, x2, x3 в оптимальной симплексной таблице в соответствующих столбцах расположена матрица А-1 Изменим время работы на оборудование второго типа на величину D2, тогда время работы будет 12 + D2 .

Найдём базисное решение, соответствующее изменённому времени работы на оборудовании второго типа :

0.75 - D2 / 4 ³ 0 , D2 = 3;

2.75 + 3D2 / 4 ³ 0 , D2 = -3.66;

3.5 + D2 / 2 ³ 0 , D2 = -7.

Отсюда видно, что -3.66 £D2£ 3 , т.е. 8.34 £ b2£ 15 .

Таким образом первоначальный интервал работы на оборудовании второго типа может быть увеличен до 15 часов или уменьшен до 8.34 часа без нарушения допустимого решения. Уменьшение времени влечёт за собой уменьшение единиц вырабатываемой продукции, поэтому является не целесообразным.

4.5 Исследование зависимости оптимального решения от изменений запасов ресурсов

Изменение свободного члена ограничения исходной задачи на величину D2 вызывает изменение целевой функции на DF = Di × y j .Если приращение времени работы берется из интервала допустимых изменений, значений двойственных оценок остаются неизменными. Таким образом, изменение целевой функции будет линейно зависеть от изменения времени работы.

В данном примере DF = Di × 12 = 12 ×Di . Ищется зависимость значений целевой функции от изменения времени работы на оборудовании второго типа. Для этого изменяется время работы начиная от 0 часов с шагом h = 0.5 до 3 часов. Результаты измерений приведены в таблице 1.

Таблица 1

D2, часов00.511.522.53
b2, часов1212.51313.51414.515
DF, руб.06.251320.252836.2545
F, руб.9.25-----

Т.к. зависимость F( b2 ) - линейная, то достаточно подсчитать значение функции в двух крайних точках интервала.

Cледовательно, с увеличением времени работы на оборудовании второго типа на 2 часа увеличивается и объём изделий на общей стоимостью 28 рублей.

5. ГРАФИЧЕСКОЕ ПРЕДСТАВЛЕНИЕ ПОЛУЧЕННЫХ РЕЗУЛЬТАТОВ

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

x1 + 5x2 £10;

3x1 + 2x2 £ 12 ;

2x1 + 4x2£ 10 .

x1 ³ 0 ; x2³ 0 .

1). x1 + 5x2 £10;

x1 = 0, x2 = 2;

x1 = 10, x2 = 0.

2). 3x1 + 2x2 £ 12 ;

x1 = 0, x2 = 6;

x1 = 4, x2 = 0.

3). 2x1 + 4x2£ 10 ;

x1 = 0, x2 = 2.5;

x1 = 5, x2 = 0.

4). Найдём экстремум функции :

F = 2x1 + 3x2 ,

6. ВЫВОДЫ И РЕКОМЕНДАЦИИ ПО ПРАКТИЧЕСКОМУ ИСПОЛЬЗОВАНИЮ

Составление математической модели и решение систем линейных неравенств часто имеет место в реальной жизни. Примеры таких задач :

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

Пример 2. Группа истребителей поднимается в воздух для перехвата одиночного самолёта противника. Цель операции - сбить самолёт. Показатель эффективности - вероятность поражения цели.

Пример 3. Ремонтная мастерская занимается обслуживанием машин; её рентабельность определяется количеством машин, обслуженных в течение дня. Показатель эффективности - среднее число машин, обслуженных за день.

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

Пример 5. Предпринемается ряд мер по повышения надёжности электронной цифровой вычислительной техники ( ЭЦВТ ). Цель операции - уменьшить частоту появления неисправностей ( “сбоев” ) ЭЦВТ, или, что равносильно, увеличить средний промежуток времени между сдоями ( “наработку на отказ” ). Показатель эффективности - среднее время безотказной работы ЭЦВТ.

Пример 6. Проводится борьба за экономию средств при производстве определённого вида товара. Показатель эффективности - количество сыкономленных средств.

С помощью анализа модели на чувствительность определить параметр, от которого результат зависит больше и решить, каким способом возможно увеличение эффективности и на сколько, а так же многое другое.

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

1. НАЗНАЧЕНИЕ ПРОГРАММЫ

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

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

2. УСЛОВИЯ ПРИМЕНЕНИЯ

1.1 Ограничения и область применения

Из программных средств требуется операционная система MS DOS версии 5.0, программная Среда NORTON COMMANDER, язык программирования Borland Pascal 7.0 . Кроме того НГМД должен содержать файлы в директории KURSOVIK:

1. Файл входных данных - KURS97.DAT

2. Программный файл - KURS97.EXE

1.2 Требования к техническим средствам

IBM PC или IBM PC - совместимый компьютер с дисководом 3.25” ёмкостью 1.2 Мб.

3. ВХОДНЫЕ И ВЫХОДНЫЕ ДАННЫЕ

Входные и выходные данные заносятся в файлы KURS97.DAT и KURS97.RES соответственно. Входные данные записываются в определённом порядке. Выходные данные записываются в виде симплекс-таблиц.

4. ИНСТРУКЦИЯ ПОЛЬЗОВАТЕЛЮ

Входные данные вносятся в файл KURS 97.DAT в следующей очерёдности :

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

Результаты вычислений вы найдёте в файле KURS 97.REZ.

5. ТЕКСТ ИСХОДНОГО МОДУЛЯ

Полный текст программы KURS97.PAS выглядит следующим образом :

. program Kurs97;

uses crt;

const

n = 2;

m = 3;

Epsilon = 0.000001;

var

VectorA : array [1..m, 0..m+n] of real;

TargetVector : array [1..m+n] of real;

SimplexVector : array [0..m+n] of real;

DigitOfBasisVector : array [1..m] of real;

BasisVector : array [1..m] of integer;

IndexOfEnterVector : integer;

IndexOfOutputString : integer;

MinimumBuffer : real;

key : char;

FileOfOutput : text;

{ Описание процедур }

procedure ReadDates; { считывание данных из файла }

var

DateFile : text;

procedure ReadDatesTargetVector; { считывание данных целевого вектора }

var i : integer;

begin

for i:=1 to n do Readln(DateFile, TargetVector[i]);

end;

procedure ReadDatesVectorA; { считывание вектора А и заполнение единицами диагонали}

var i,j : integer;

begin

for j:=0 to n do

for i:=1 to m do

Readln(DateFile, VectorA[i, j]);

i:=1;

for j:=n+1 to n+m do

begin

VectorA[i, j]:=1;

inc(i)

end;

end;

procedure ReadDatesBasisVector;

var i : integer;

begin

for i:=1 to m do BasisVector[i]:=n+i;

end;

begin

Assign(DateFile, 'kurs97.dat');

Reset(DateFile);

ReadDatesTargetVector;

ReadDatesVectorA;

ReadDatesBasisVector;

Close(DateFile);

end;

procedure CountSimplexVector; { расчет симплек-вектора }

var

i,j : integer;

Summa : real;

Simplex : real;

begin

SimplexVector[0]:=0;

for i:=1 to m do

SimplexVector[0]:=SimplexVector[0] + DigitOfBasisVector[i]*VectorA[i, 0];

for j:=1 to m+n do

begin

Summa:=0;

for i:=1 to m do Summa:=Summa + DigitOfBasisVector[i]*VectorA[i, j];

SimplexVector[j]:=Summa - TargetVector[j];

if abs(SimplexVector[j]) <= Epsilon then SimplexVector[j]:=0;

end;

end;

function GetEnterVector : integer; { поиск вводимого вектора }

var

i : integer;

Min : real;

begin

GetEnterVector:=1;

Min:=SimplexVector[1];

for i:=2 to m+n do

if Min > SimplexVector[i]

then

begin

GetEnterVector:=i;

Min:=SimplexVector[i];

end;

end;

function GetOutputString : integer; { поиск выводимой строки }

var

i : integer;

Temp : real;

begin

GetOutputString:=1;

if VectorA[1, IndexOfEnterVector] > 0 then MinimumBuffer:=VectorA[1, 0] / VectorA[1, IndexOfEnterVector];

for i:=2 to m do

begin

Temp:=VectorA[i, 0] / VectorA[i, IndexOfEnterVector];

if Temp > 0 then

if MinimumBuffer >= Temp then

begin

MinimumBuffer:=Temp;

GetOutputString:=i;

end;

end;

end;

procedure ReCountOutputString; { пересчет коэффициентов выводимой строки }

var

i,j : integer;

Buffer : real;

procedure ReCountDigitOfBasisVector;

begin

DigitOfBasisVector[IndexOfOutputString]:=TargetVector[IndexOfEnterVector];

end;

procedure ReCountBasisVector;

begin

BasisVector[IndexOfOutputString]:=IndexOfEnterVector;

end;

begin

ReCountDigitOfBasisVector;

ReCountBasisVector;

Buffer:=VectorA[IndexOfOutputString, IndexOfEnterVector];

for i:=0 to m+n do

begin

VectorA[IndexOfOutputString, i]:=VectorA[IndexOfOutputString, i] / Buffer;

end;

end;

procedure ReCountVectorA;

var i,j : integer;

begin

for j:=0 to m+n do

begin

for i:=1 to m do

begin

if i <> IndexOfOutputString then

if j <> IndexOfEnterVector

then VectorA[i, j]:=VectorA[i, j] - VectorA[i ,IndexOfEnterVector]*VectorA[IndexOfOutputString,j];

end;

end;

for i:=1 to m do

if i <> IndexOfOutputString then VectorA[i, IndexOfEnterVector]:=0;

end;

function AllIsPositiv : boolean;

var i : integer;

begin

AllIsPositiv:=True;

for i:=1 to m+n do

if SimplexVector[i] < 0 then AllIsPositiv:=False;

end;

function ToStr(const D : real) : string;

var S : string;

begin

str(D:6:2, S);

ToStr:=' ' + S + ' ';

end;

procedure WriteMatrixs;

procedure WriteTargetMatrix;

var i : integer;

begin

writeln(' +-----------------------------------------------------+');

write (' ¦ Target ¦');

for i:=1 to n+m do write(ToStr(TargetVector[i]),'¦'); writeln;

end;

procedure WriteMatrixA;

var i,j : integer;

begin

writeln(' +-----------------+--------+--------+--------+--------+--------+--------¦');

writeln(' ¦ Basis ¦ D.Basis¦ A 0 ¦ A 1 ¦ A 2 ¦ A 3 ¦ A 4 ¦ A 5 ¦');

writeln(' +--------+--------+--------+--------+--------+--------+--------+--------¦');

for i:=1 to m do

begin

write(' ¦ A ',BasisVector[i],' ¦',ToStr(DigitOfBasisVector[i]),'¦');

for j:=0 to m+n do write(ToStr(VectorA[i, j]),'¦'); writeln;

if i = m then writeln(' +--------+--------+--------+--------+--------+--------+--------+--------¦')

else writeln(' +--------+--------+--------+--------+--------+--------+--------+--------¦');

end;

end;

procedure WriteMatrixSimplex;

var i : integer;

begin

write(' ¦ Simplex¦');

for i:=0 to m+n do write(ToStr(SimplexVector[i]),'¦'); writeln;

writeln(' +--------------------------------------------------------------+');

end;

begin

clrscr;

WriteTargetMatrix;

WriteMatrixA;

WriteMatrixSimplex;

end;

procedure WriteMatrixsInFile;

procedure WriteTargetMatrix;

var i : integer;

begin

writeln(FileOfOutput, ' +-----------------------------------------------------+');

write (FileOfOutput, ' ¦ Target ¦');

for i:=1 to n+m do write(FileOfOutput, ToStr(TargetVector[i]),'¦'); writeln(FileOfOutput);

end;

procedure WriteMatrixA;

var i,j : integer;

begin

writeln(FileOfOutput, ' +-----------------+--------+--------+--------+--------+--------+--------¦');

writeln(FileOfOutput, ' ¦ Basis ¦ D.Basis¦ A 0 ¦ A 1 ¦ A 2 ¦ A 3 ¦ A 4 ¦ A 5 ¦');

writeln(FileOfOutput, ' +--------+--------+--------+--------+--------+--------+--------+--------¦');

for i:=1 to m do

begin

write(FileOfOutput, ' ¦ A ',BasisVector[i],' ¦',ToStr(DigitOfBasisVector[i]),'¦');

for j:=0 to m+n do write(FileOfOutput, ToStr(VectorA[i, j]),'¦'); writeln(FileOfOutput);

if i = m then writeln(FileOfOutput, ' +--------+--------+--------+--------+--------+--------+--------+--------¦')

else writeln(FileOfOutput, ' +--------+--------+--------+--------+--------+--------+--------+--------¦');

end;

end;

procedure WriteMatrixSimplex;

var i : integer;

begin

write(FileOfOutput, ' ¦ Simplex¦');

for i:=0 to m+n do write(FileOfOutput, ToStr(SimplexVector[i]),'¦'); writeln(FileOfOutput);

writeln(FileOfOutput, ' +--------------------------------------------------------------+');

end;

begin

clrscr;

WriteTargetMatrix;

WriteMatrixA;

WriteMatrixSimplex;

end;

{ Головная программа }

BEGIN

ClrScr;

ReadDates;

Assign(FileOfOutput, 'kurs97.res');

Rewrite(FileOfOutput);

CountSimplexVector;

WriteMatrixs;

while not AllIsPositiv do

begin

IndexOfEnterVector:=GetEnterVector;

IndexOfOutputString:=GetOutputString;

ReCountOutputString;

ReCountVectorA;

CountSimplexVector;

WriteMatrixsInFile;

WriteMatrixs;

if key=#0 then key:=readkey; key:=#0;

end;

Close(FileOfOutput);

END.

6. ОПИСАНИЕ ЛОГИКИ СТРУКТУРНОЙ СХЕМЫ

В программе реализованны следующие процедуры :

1. Процедура ReadDates - считывает данные из файла.

2. Процедура ReadDatesTargetVector - считывает коэффициенты при неизвестных в целевой функции из файла.

3. Процедура ReadDatesVector - считывание их входного файла матрицы А и заполнение диагональной матрицы.

4. Процедура CountSimplexVector - рассчёт симплекс-разностей.

5. Процедура GetEnterVector - поиск вводимого в базис столбца.

6. Процедура GetOutputString - поиск выводимой из базиса строки.

7. Процедура ReCountOutputString- пересчёе выводимой строки.

8. Процедура ReCountVectorA - пересчёт остальной матрицы ограничений.

9. Процедуры WriteMatrixA, WriteTargetMatrix, WriteMatrixSimplex - печать результирующих таблиц на экран и в файл.


Нет нужной работы в каталоге?

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

Цены ниже, чем в агентствах и у конкурентов

Вы работаете с экспертами напрямую. Поэтому стоимость работ приятно вас удивит

Бесплатные доработки и консультации

Исполнитель внесет нужные правки в работу по вашему требованию без доплат. Корректировки в максимально короткие сроки

Гарантируем возврат

Если работа вас не устроит – мы вернем 100% суммы заказа

Техподдержка 7 дней в неделю

Наши менеджеры всегда на связи и оперативно решат любую проблему

Строгий отбор экспертов

К работе допускаются только проверенные специалисты с высшим образованием. Проверяем диплом на оценки «хорошо» и «отлично»

1 000 +
Новых работ ежедневно
computer

Требуются доработки?
Они включены в стоимость работы

Работы выполняют эксперты в своём деле. Они ценят свою репутацию, поэтому результат выполненной работы гарантирован

avatar
Математика
История
Экономика
icon
159599
рейтинг
icon
3275
работ сдано
icon
1404
отзывов
avatar
Математика
Физика
История
icon
156450
рейтинг
icon
6068
работ сдано
icon
2737
отзывов
avatar
Химия
Экономика
Биология
icon
105734
рейтинг
icon
2110
работ сдано
icon
1318
отзывов
avatar
Высшая математика
Информатика
Геодезия
icon
62710
рейтинг
icon
1046
работ сдано
icon
598
отзывов
Отзывы студентов о нашей работе
63 457 оценок star star star star star
среднее 4.9 из 5
Тгу им. Г. Р. Державина
Реферат сделан досрочно, преподавателю понравилось, я тоже в восторге. Спасибо Татьяне за ...
star star star star star
РЭУ им.Плеханово
Альберт хороший исполнитель, сделал реферат очень быстро, вечером заказала, утром уже все ...
star star star star star
ФЭК
Маринаааа, спасибо вам огромное! Вы профессионал своего дела! Рекомендую всем ✌🏽😎
star star star star star

Последние размещённые задания

Ежедневно эксперты готовы работать над 1000 заданиями. Контролируйте процесс написания работы в режиме онлайн

Подогнать готовую курсовую под СТО

Курсовая, не знаю

Срок сдачи к 7 дек.

только что
только что

Выполнить задания

Другое, Товароведение

Срок сдачи к 6 дек.

1 минуту назад

Архитектура и организация конфигурации памяти вычислительной системы

Лабораторная, Архитектура средств вычислительной техники

Срок сдачи к 12 дек.

1 минуту назад

Организации профилактики травматизма в спортивных секциях в общеобразовательной школе

Курсовая, профилактики травматизма, медицина

Срок сдачи к 5 дек.

2 минуты назад

краткая характеристика сбербанка анализ тарифов РКО

Отчет по практике, дистанционное банковское обслуживание

Срок сдачи к 5 дек.

2 минуты назад

Исследование методов получения случайных чисел с заданным законом распределения

Лабораторная, Моделирование, математика

Срок сдачи к 10 дек.

4 минуты назад

Проектирование заготовок, получаемых литьем в песчано-глинистые формы

Лабораторная, основы технологии машиностроения

Срок сдачи к 14 дек.

4 минуты назад

2504

Презентация, ММУ одна

Срок сдачи к 7 дек.

6 минут назад

выполнить 3 задачи

Контрольная, Сопротивление материалов

Срок сдачи к 11 дек.

6 минут назад

Вам необходимо выбрать модель медиастратегии

Другое, Медиапланирование, реклама, маркетинг

Срок сдачи к 7 дек.

7 минут назад

Ответить на задания

Решение задач, Цифровизация процессов управления, информатика, программирование

Срок сдачи к 20 дек.

7 минут назад
8 минут назад

Все на фото

Курсовая, Землеустройство

Срок сдачи к 12 дек.

9 минут назад

Разработка веб-информационной системы для автоматизации складских операций компании Hoff

Диплом, Логистические системы, логистика, информатика, программирование, теория автоматического управления

Срок сдачи к 1 мар.

10 минут назад
11 минут назад

перевод текста, выполнение упражнений

Перевод с ин. языка, Немецкий язык

Срок сдачи к 7 дек.

11 минут назад
planes planes
Закажи индивидуальную работу за 1 минуту!

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

«Всё сдал!» — безопасный онлайн-сервис с проверенными экспертами

Используя «Свежую базу РГСР», вы принимаете пользовательское соглашение
и политику обработки персональных данных
Сайт работает по московскому времени:

Вход
Регистрация или
Не нашли, что искали?

Заполните форму и узнайте цену на индивидуальную работу!

Файлы (при наличии)

    это быстро и бесплатно