Каталог статей Delphi Report
Решение задачи линейного программирования. Решение графическим методом
Воспользуемся кодом 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)
Просмотров: 12677 | Комментарии: 1
| Рейтинг: 5.0 /2
Всего комментариев: 1
Порядок вывода комментариев:
По умолчанию
Сначала новые
Сначала старые
0
Данный алгоритм не является универсальным! Например, такую здачу невозможно решить таким способом:
z=2x1+x2->max
4x1 + 5x2 <= 40 ограничение 1
2x1 + 3x2 >= 6 ограничение 2
-x1 + x2 -5 <= 0 ограничение 3
Добавлять комментарии могут только зарегистрированные пользователи.
[
Регистрация |
Вход ]
Google