Линейное программирование_ Решение задач грфическим способом

Страница: 5/10

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

Рис. 9

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

Подводя итог этим примерам, можно сформулировать следующие положения:

1. допустимая область - это выпуклый многоугольник;

2. оптимум достигается в вершине допустимой области (если допустимая область ограничена и не пуста);

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

Гл 2 Решение задач линейного программирования графическим способом на ЭВМ

2.1 Описание работы программы

Программа написана с использованием собственных функций и процедур и трех стандартных модулей System, Crt и Graph.

При запуске программы она проверяет возможно ли использование графического интерфейса. Если это возможно то программа переходит к следующему этапу.

Далее процедурой ShowXOY Рисуется на экран координатные оси. На этом работа этой процедуры заканчивается и пользователь в следующей процедуре (EnterNerav и в частности в подпроцедуре GetNerav) предлагается ввести коэффициенты неравенства a1x+a2y=b в следующем порядке: a1 пробел a2 пробел b. Сразу после ввода всех коэффициентов процедурой ShowLine рисуется нужная линия. После нажатия [Esc] процедура EnterNerav заканчивается и передает управление процедуре EnterMainF в которой пользователю предлагается ввести коэффициенты целевой функции. Далее работа переходит к процедуре GetResult где идет подсчет оконцательного товета с помощбю процедуры SolveOprtel где считаетя определитель т. е. точки пересечения целевой функции с каждой линией ограничения. Далее выводится ответ, если это возможно.

Далее следует описание используемых стандартных процедур и функций.

Процедуры и функции модуля System:

Function Frac(X : Real) : Real;

Возвращает дробную часть аргумента.

Параметр X - выражение вещественного типа. Результат - дробная часть X, то есть Frac(X) = X-Int(X).

Procedure Str(X [: Width [: Decimals ]]; Var S : String);

Преобразовывает число в строку. Преобразовывает числовое значение X в строковое представление этого числа, которое можно выводить операторами типа Write и OutText.

Function Round(X : Real) : Longint;

Округляет значение вещественного типа до значения целочисленного типа. X - выражение с реальным типом. Round возвращает значение типа Longint, которое является значением X, округленного к самому близкому целому числу. Если X – ровно посередине между двумя целыми числами, то результатом будет число с самой большой абсолютной величиной.

Если округленное значение X ненаходится внутри допустимого диапазона Longint, то происходит ошибка во время выполнения программы.

Модуль Crt:

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

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

Crt может использоваться только в программах, предназначенных для IBM PC, AT, PS/2 и полностью совместимых.

Procedure Read( [ var F : Text; ] V1 [ , V2, …, VN ]); (текстовые файлы)

Читает одну или более величин из текстового файла в одну или более переменных. Параметры: F - необязательная переменная текстового файла, если не указана, то используется стандартная переменная Input; V1, .,VN - переменные типа Char, Integer, Real или String.

Реферат опубликован: 3/01/2008