Графический метод решения задач линейного программирования. Контрольная работа. Информационное обеспечение, программирование.

Графический метод решения задач линейного программирования. Контрольная работа. Информационное обеспечение, программирование.




🛑 👉🏻👉🏻👉🏻 ИНФОРМАЦИЯ ДОСТУПНА ЗДЕСЬ ЖМИТЕ 👈🏻👈🏻👈🏻


























































Информационное обеспечение, программирование

Вы можете узнать стоимость помощи в написании студенческой работы.


Помощь в написании работы, которую точно примут!

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

Скачать Скачать документ
Информация о работе Информация о работе


Скачать Скачать документ
Информация о работе Информация о работе


Скачать Скачать документ
Информация о работе Информация о работе


Скачать Скачать документ
Информация о работе Информация о работе


Скачать Скачать документ
Информация о работе Информация о работе

Нужна качественная работа без плагиата?

Не нашел материал для своей работы?


Поможем написать качественную работу Без плагиата!

Реализовать графический метод решения задач линейного
программирования.




Наиболее простым и наглядным методом линейного
программирования (ЛП) является графический метод. Он применяется для решения
задач ЛП с двумя переменными.




Рассмотрим задачу ЛП в стандартной форме записи:


Положим n=2 , т.е. рассмотрим эту задачу на плоскости. Пусть
система неравенств совместна (имеет хотя бы одно решение).


Каждое неравенство этой системы геометрически определяет
полуплоскость с граничной прямой a i1 x 1 + a i2
x 2 = b i ,
i=1,2,… m . Условия
неотрицательности определяют полуплоскости, соответственно, с граничными
прямыми x1=0, x2 =0. Система совместна, поэтому полуплоскости, как выпуклые
множества, пересекаясь, образуют общую часть, которая является выпуклым
множеством и представляет собой совокупность точек, координаты каждой из
которых являются решением данной системы. Совокупность этих точек называют
многоугольником решений. Он может быть точкой, отрезком, лучом,
многоугольником, неограниченной многоугольной областью.


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


Линейное уравнение описывает множество точек, лежащих на одной
прямой. Линейное неравенство описывает некоторую область на плоскости.
Определим, какую часть плоскости описывает неравенство 2х 1 +3х 2 £ 12. Во-первых, построим прямую 2х 1 +3х 2 =12 .
Эта прямая проходит через точки (6, 0) и (0, 4). Для того чтобы определить,
какая полуплоскость удовлетворяет неравенству необходимо выбрать любую точку на
графике, не принадлежащую прямой, и подставить ее координаты в неравенство.
Если неравенство будет выполняться, то данная точка является допустимым
решением и полуплоскость, содержащая точку, удовлетворяет неравенству. Удобной
для использования при подстановке в неравенство является начало координат.
Подставим х 1 =х 2 =0 в неравенство 2х 1 +3х 2 £ 12 . Получим 2´0+3´0£12. Данное утверждение является верным, следовательно, неравенству
2х 1 +3х 2 £12
соответствует нижняя полуплоскость, содержащая точку (0.0). Это отражено на
графике, изображенном на. 1.




Рис. 1. Неравенству 2х 1 +3х 2 £12 соответствует нижняя полуплоскость.





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


Решением каждого неравенства системы ограничений ЗЛП является
полуплоскость, содержащая граничную прямую и расположенная по одну сторону от
нее. Пересечение полуплоскостей, каждая из которых определяется соответствующим
неравенством системы, называется областью допустимых решений или областью
определения. Необходимо помнить, что область допустимых решений удовлетворяет
условиям неотрицательности (x j ³0, j=1,…, n). Координаты любой точки, принадлежащей области
определения являются допустимым решением задачи.


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




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


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


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


Графический метод решения ЗЛП состоит из
следующих этапов:


1.
Строится
многоугольная область допустимых решений ЗЛП - ОДР,


2.
Строится
вектор-градиент ЦФ в какой-нибудь точке Х 0 принадлежащей ОДР -


. Линия уровня C 1 x 1 +C 2 x 2 =
а (а -постоянная величина) - прямая, перпендикулярная вектору - градиенту - передвигается в направлении этого
вектора в случае максимизации f(x 1, x 2 ) до тех пор,
пока не покинет пределов ОДР. Предельная точка (или точки) области при этом
движении и является точкой максимума f(x 1, x 2 ).


. Для нахождения ее координат достаточно решить два уравнения
прямых, получаемых из соответствующих ограничений и дающих в пересечении точку
максимума. Значение f(x 1, x 2 ), найденное в
получаемой точке, является максимальным.


При минимизации f(x 1, x 2 ) линия уровня
перемещается в направлении, противоположном вектору-градиенту. Если прямая при
своем движении не покидает ОДР, то соответствующий максимум или минимум f(x 1, x 2 )
не существует.


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




Интерфейс программы, реализующей графический метод решения
задач линейного программирования:


программирование
графический интерфейс линейный


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


Спроектированный интерфейс является оптимальным, лаконичным и
простым в использовании.




Line (float a, float b, float c) {.a = a;.b =
b;.c = c;


(Point p1, Point p2) {(p1.y - p2.y, p2.x - p1.x,
p1.x*p2.y - p2.x*p1.y);


(float A, float B, Point point) {(new Point
(point.x + B, point.y - A), point);


boolean isParalellWithLine (Line line) {k = a *
line.b - line.a * b;MathUtil.isEqualWithEplsilon (k, 0);


Point getIntersection (Line line)
{(isParalellWithLine(line))null;


znam = 1 / (a * line.b - line.a * b);


x = (b * line.c - line.b * c) * znam;y = (c *
line.a - line.c * a) * znam;


double getDistanceToPoint (Point p) {(a * p.x + b
* p.y + c) / Math.sqrt (a*a + b*b);


String getView() {(a < 0? - a: a) + «* x1 +» +
(b < 0? - b: b) + «* x2 <=» + c;


class Polygon {ArrayList points =
new ArrayList();ArrayList infinity = new
ArrayList();ArrayList values = new
ArrayList();


ArrayList getPoints() {points;


boolean getInfinity (int i) {infinity.get(i);


float getValue (int i) {values.get(i);


void clear() {.clear();.clear();.clear();= null;


void addPoint (Point p, boolean inf)
{.add(p);.add (0.0f);.add(inf);


Polygon (BoundingBox bb, boolean b) {h =
bb.getHigh();l = bb.getLow();


(new Point(h), b);(new Point (l.x, h.y), b);(new
Point(l), b);(new Point (h.x, l.y), b);


bb = new BoundingBox();(Line li: lines) {(Line
lj: lines) {p = li.getIntersection(lj);





PointIn = true;(Line l: lines) {(l!= li
&& l!= lj && l.getDistanceToPoint(p) < 0) {= false;;


(! bb.isEmpty()) {.extend (1.0f);= new Rect(bb);


void cutPolygonWithLines (Polygon p,
ArrayList lines) {= p.points;= p.infinity;= p.values;





List getBoundingPoints (Rect
viewRec) {points;


void cutWithLine (Line l) {p = new
Polygon();crossingPt = null;(int i = 0; i < points.size(); i++) {next =
nextPointIndex(i);


orgIsInside = (l.getDistanceToPoint
(points.get(i)) > 0);destIsInside = (l.getDistanceToPoint (points.get(next))
> 0);infEdge = infinity.get(i);


(orgIsInside!= destIsInside) {= l.getIntersection
(new Line (points.get(i), points.get(next)));


}(orgIsInside && destIsInside) {.addPoint
(points.get(i), infinity.get(i));


} else if (! orgIsInside && destIsInside)
{(! MathUtil.isEqualWithEplsilon (points.get(i), crossingPt)) {.addPoint
(crossingPt, infEdge);


} else if (! orgIsInside &&!
destIsInside) {


} else {(! MathUtil.isEqualWithEplsilon
(points.get(i), crossingPt)) {.addPoint (points.get(i), infinity.get(i));


.points = p.points;.infinity = p.infinity;.values
= p.values;


int nextPointIndex (int i) {(i == points.size() -
1) {0;


int prevPointIndex (int i) {(i == 0)
{points.size() - 1;


setTargetLine (float A, float B, boolean max) {





(int i = 0; i < points.size(); i++) {.get(i);p
= points.get(i);


extrList = new
LinkedList();.add(0);(int i = 1; i < values.size(); i++)
{(max) {extr = values.get (extrList.getLast());


(MathUtil.isEqualWithEplsilon (extr,
values.get(i))) {(values.get(i) > extr) {.add(i);


} else if (extr < values.get(i))
{.clear();.add(i);


(MathUtil.isEqualWithEplsilon (extr,
values.get(i))) {(values.get(i) < extr) {.add(i);


} else if (extr > values.get(i))
{.clear();.add(i);


LinkedList extremums;
getExtremums() {extremums;


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


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






Похожие работы на - Графический метод решения задач линейного программирования Контрольная работа. Информационное обеспечение, программирование.
Реферат: Перевірка статистичних гіпотез відносно невідомих значень параметрів визначеного розподілу
Реферат: Русская литература 40-80-х гг. XIX века: И.С. Тургенев и И.А. Гончаров
Чем Отличается План От Содержания В Реферате
Курсовая работа по теме Диагностика агрессии у детей среднего дошкольного и старшего дошкольного возраста
Лабораторная работа: Тепловой расчет промежуточной ступени
Контрольная Работа По Английскому Языку Модуль 2
Демократия Лучшая Форма Правления Эссе
Реферат: История возникновения и развития налогообложения и налогового права
Дипломная работа по теме Способы измерения расстояний на местности
Реферат: Процедура банкротства предприятий
Какие Изменения Вносит В Общество Революция Сочинение
Реферат по теме "Великая депрессия" в США
Реферат: Глаукониты Ленинградской области
Пособие по теме Газовый цикл тепловых двигателей и установок
Курсовая работа: Расчет двигателя внутреннего сгорания автомобиля КамАЗ
Охрана Труда На Предприятии Общественного Питания Реферат
Реферат: Современное состояние и перспективы современного межкорейского диалога
Дипломная работа по теме Пододерматит
Эссе Про Новый Год На Английском
Сочинение По Тексту Я Айтматов Плаха
[5] http://bibliotekar.ru/upravlenie-personalom-3/31.htm
Курсовая работа: Отчет о движении денежных средств: его содержание, техника составления
Похожие работы на - Религиозно-философское учение йоги: этический аспект

Report Page