Пятница, 19.04.2024, 23:25
Приветствую Вас Гость | RSS

DELPHI Report

Каталог статей Delphi Report

Главная » Статьи » Matlab » Линейное программирование

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


Воспользуемся кодом Matlab и построим допустимую область решения

x = 0 : 80; % диапазон для построения

 y1 = max(75 - x, 0); % x + y <= 75 ограничение на землю

 y2 = max((4000 - 110 * x)/30, 0); % 110x + 30y <=4000 ограничение на хранение

 y3 = max((15000 - 120 * x)/210, 0); % 120x + 210y <= 15000 затраты

 ytop = min([y1; y2; y3]); % нас интересуют нижние области, т.к. оператор меньше равно

 area(x, ytop); % прорисовываем




Закрашенная область – область допустимых решений, та область, которая отвечает всем требованиям.

 

Линии равных значений прибыли (линии уровня) задаются выражением p = 143x + 60y.

 

Для построение воспользуемся следующим кодом:

hold on;

[u v] = meshgrid(0 : 80, 0 : 80);

z=143* u + 60 * v;

contour(u, v, z,20);

hold off;

figure

surf(u,v,z)


В результате получим:

 
В двумерном с линиями уровня



Ниже представлен график целевой функции в трехмерном пространстве:



Как известно оптимальное решение будет находиться на углах пересечний допустимых линий.
Решение – x- 22, y – 53. Величина прибыли – 6326.


Далее решение с помощью linprog

Категория: Линейное программирование | Добавил: delphi (23.03.2010)
Просмотров: 12538 | Комментарии: 1 | Рейтинг: 5.0/2
Всего комментариев: 1
1 kea  
0
Данный алгоритм не является универсальным! Например, такую здачу невозможно решить таким способом:
z=2x1+x2->max
4x1 + 5x2 <= 40 ограничение 1
2x1 + 3x2 >= 6 ограничение 2
-x1 + x2 -5 <= 0 ограничение 3

Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Меню сайта
Google
Форма входа
Категории раздела
Линейное программирование [3]
Решение задач линейного программирования
Поиск
Друзья сайта
Статистика
Copyright MyCorp © 2024