![]() |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Главная Рефераты по сексологии Рефераты по информатике программированию Рефераты по биологии Рефераты по экономике Рефераты по москвоведению Рефераты по экологии Краткое содержание произведений Рефераты по физкультуре и спорту Топики по английскому языку Рефераты по математике Рефераты по музыке Остальные рефераты Рефераты по авиации и космонавтике Рефераты по административному праву Рефераты по безопасности жизнедеятельности Рефераты по арбитражному процессу Рефераты по архитектуре Рефераты по астрономии Рефераты по банковскому делу Рефераты по биржевому делу Рефераты по ботанике и сельскому хозяйству Рефераты по бухгалтерскому учету и аудиту Рефераты по валютным отношениям Рефераты по ветеринарии Рефераты для военной кафедры Рефераты по географии Рефераты по геодезии Рефераты по геологии Рефераты по геополитике Рефераты по государству и праву Рефераты по гражданскому праву и процессу Рефераты по делопроизводству Рефераты по кредитованию Рефераты по естествознанию Рефераты по истории техники Рефераты по журналистике Рефераты по зоологии Рефераты по инвестициям Рефераты по информатике Исторические личности Рефераты по кибернетике Рефераты по коммуникации и связи |
Курсовая работа: Модель распределения ресурсовКурсовая работа: Модель распределения ресурсовСодержаниеВведение1. Основные понятия1.1. Модель динамического программирования1.2. Принцип оптимальности. Уравнение Беллмана2. Оптимальное распределение ресурсов2.1 Постановка задачи2.2 Двумерная модель распределения ресурсов2.3 Дискретная динамическая модель оптимального распределения ресурсов2.4 Учет последействия в задачах оптимального распределения ресурсовЗаключениеСписок используемых источниковПриложение 1. Листинг программы для решения задачи оптимального распределения ресурсов с заданными параметрами. Результаты работы программыВведение На протяжении всей своей истории люди при необходимости принимать решения прибегали к сложным ритуалам. Они устраивали торжественные церемонии, приносили в жертву животных, гадали по звездам и следили за полетом птиц. Они полагались на народные приметы и старались следовать примитивным правилам, облегчающим им трудную задачу принятия решений. В настоящее время для принятия решения используют новый и, по-видимому, более научный «ритуал», основанный на применении электронно-вычислительной машины. Без современных технических средств человеческий ум, вероятно, не может учесть многочисленные и разнообразные факторы, с которыми сталкиваются при управлении предприятием, конструировании ракеты или регулировании движения транспорта. Существующие в настоящее время многочисленные математические методы оптимизации уже достаточно развиты, что позволяет эффективно использовать возможности цифровых и гибридных вычислительных машин. Одним из этих методов является математическое программирование, включающее в себя как частный случай динамическое программирование. Большинство практических задач имеет несколько (а некоторые, возможно, даже бесконечное число) решений. Целью оптимизации является нахождение наилучшего решения среди многих потенциально возможных в соответствии с некоторым критерием эффективности или качества. Задача, допускающая лишь одно решение, не требует оптимизации. Оптимизация может быть осуществлена при помощи многих стратегий, начиная с весьма сложных аналитических и численных математических процедур и кончая разумным применением простой арифметики. Динамическое программирование – метод оптимизации, приспособленный к операциям, в которых процесс принятия решений может быть разбит на отдельные этапы (шаги). Такие операции называются многошаговыми. Как раздел математического программирования, динамическое программирование (ДП) начало развиваться в 50-х годах XX в. благодаря работам Р. Беллмана и его сотрудников. Впервые этим методом решались задачи оптимального управления запасами, затем класс задач значительно расширился. Как практический метод оптимизации, метод динамического программирования стал возможен лишь при использовании современной вычислительной техники. В основе метода динамического программирования лежит принцип оптимальности, сформулированный Беллманом. Этот принцип и идея включения конкретной задачи оптимизации в семейство аналогичных многошаговых задач приводят к рекуррентным соотношениям — функциональным уравнениям — относительно оптимального значения целевой функции. Их решение позволяет последовательно получить оптимальное управление для исходной задачи оптимизации. 1. Основные понятия 1.1 Модель динамического программированияДадим общее описание модели динамического программирования. Рассматривается управляемая система,
которая под влиянием управления переходит из начального состояния Рисунок 1 Состояние Предполагаем впредь, что состояние
системы в конце k-го шага зависит только от предшествующего состояния
системы
Равенства (1.1) получили название уравнений
состояний. Функции Варьируя управление U, получим различную «эффективность» процесса**, которую будем оценивать количественно
целевой функцией Z, зависящей от начального состояния
системы
Показатель эффективности k-го
шага процесса управления, который зависит от состояния
Если свойство аддитивности целевой
функции Z не выполняется, то этого иногда можно добиться некоторыми
преобразованиями функции. Например, если Z— мультипликативная функция, заданная
в виде Обычно условиями процесса на
управление на каждом шаге Задачу пошаговой оптимизации можно
сформулировать так: определить совокупность допустимых управлении Для единообразия формулировок (но не вычислительных процедур!) в дальнейшем мы будем говорить только о задаче максимизации, имея в виду, что если необходимо минимизировать Z, то, заменив Z на Z' = —Z перейдем к максимизации Z'. Начальное состояние Если переменные управления Динамическое программирование применяется при оптимизации как детерминированных, так и стохастических процессов. В некоторых задачах, решаемых методом ДП, процесс управления естественно разбивается на шаги. Например, при распределении на несколько лет ресурсов деятельности предприятия шагом естественно считать временной период; при распределении средств между n предприятиями номером шага естественно считать номер очередного предприятия. В других задачах разбиение на шаги вводится искусственно. Например, непрерывный управляемый процесс можно рассматривать как дискретный, условно разбив его на некоторые временные отрезки шаги. Исходя из условий каждой конкретной задачи, длину шага выбирают таким образом, чтобы на каждом шаге получить простую задачу оптимизации и обеспечить требуемую точность вычислений. 1.2 Принцип оптимальности. Уравнение БеллманаМетод динамического программирования состоит в том, что оптимальное управление строится постепенно, шаг за шагом. На каждом шаге оптимизируется управление только этого шага. Вместе с тем на каждом шаге управление выбирается с учетом последствий, так как управление, оптимизирующее целевую функцию только для данного шага, может привести к неоптимальному эффекту всего процесса. Управление на каждом шаге должно быть оптимальным с точки зрения процесса в целом. Иллюстрацией к сказанному выше может служить задача о выборе кратчайшего пути для перехода из точки A в точку B, если маршрут должен пройти через некоторые пункты. На рис. 2 эти пункты обозначены кружками, а соединяющие их дороги — отрезками, рядом с которыми проставлены соответствующие расстояния. Рисунок 2 С точки зрения интересов оптимизации
только каждого ближайшего шага — выбора кратчайшего пути из данной точки в
соседнюю — следует двигаться по маршруту, проходящему через точки Приведенный пример многошаговой операции показывает, что управление на каждом шаге надо выбирать с учетом его последствий на предстоящих шагах. Это основное правило ДП, сформулированное Р. Беллманом, называется принципом оптимальности. Оптимальное управление обладает таким свойством, что каково бы ни было начальное состояние на любом шаге и управление, выбранное на этом шаге, последующие управления должны выбираться оптимальными относительно состояния, к которому придет система в конце данного шага. Использование этого принципа гарантирует, что управление, выбранное на любом шаге, является не локально лучшим, а лучшим с точки зрения процесса в целом. Так, если система в начале k-го
шага находится в состоянии
Назовем величину
получившего название основного функционального уравнения ДП, или уравнения Беллмана. Схематически соотношение (1.5) иллюстрируется на рис. 3. Рисунок 3 Из уравнения (1.5) может быть
получена функция Соотношения (1.5) для определения
последовательности функций Решая уравнение (1.5) для определения
условного максимума показателя эффективности за n—k+l шагов, начиная с k-го, мы определяем соответствующее
оптимальное управление Основное значение уравнения (1.5), в
котором реализована идея динамического программирования, заключается в том, что
решение исходной задачи определения - максимума функции (1.2) n переменных 2. Оптимальное распределение ресурсов 2.1 Постановка задачиКласс задач, рассматриваемый в данной главе, имеет многочисленные практические приложения. В общем виде эти задачи могут быть описаны следующим образом. Имеется некоторое количество ресурсов, под которыми можно понимать денежные средства, материальные ресурсы (например, сырье, полуфабрикаты, трудовые ресурсы, различные виды оборудования и т. п.). Эти ресурсы необходимо распределить между различными объектами их использования по отдельным промежуткам планового периода или по различным промежутками по различным объектам так, чтобы получить максимальную суммарную эффективность от выбранного способа распределения. Показателем эффективности может служить, например, прибыль, товарная продукция, фондоотдача (задачи максимизации) или суммарные затраты, себестоимость, время выполнения данного объема работ и т. п. (задачи минимизации). Вообще говоря, подавляющее число задач математического программирования вписывается в общую постановку задачи оптимального распределения ресурсов. Естественно, что при рассмотрении моделей и вычислительных схем решения подобных задач методом ДП необходимо конкретизировать общую форму задачи распределения ресурсов. В дальнейшем будем предполагать, что условия, необходимые для построения модели ДП, в задаче выполняются. Опишем типичную задачу распределения ресурсов в общем виде. Задача 1. Имеется начальное количество средств
Требуется определить такой способ распределения ресурсов (количество средств, выделяемых каждому предприятию в каждом плановом году), чтобы суммарный доход от s предприятий за n лет был максимальным. Следовательно, в качестве показателя эффективности процесса распределения ресурсов за n лет принимается суммарный доход, полученный от s предприятий:
Количество ресурсов в начале k-го
года будем характеризовать величиной Если предположить, что доход в дальнейшем распределении не участвует, то уравнение состояния процесса имеет вид
Если же некоторая часть дохода участвует в дальнейшем распределении в каком-нибудь году, то к правой части равенства (2.2) прибавляется соответствующая величина. Требуется определить ns неотрицательных переменных Вычислительная процедура ДП
начинается с введения функции
При
Далее необходимо последовательно
решить уравнения (2.4) и (2.3) для всех возможных и будем пользоваться одним параметром
В течение k-го года состояние 2.2 Двумерная модель распределения ресурсов
Задача 2. Планируется деятельность двух
предприятий (s=2) в течение
n лет. Начальные средства составляют Требуется найти оптимальный способ распределения имеющихся средств. Будем рассматривать процесс
распределения средств как n-шаговый,
в котором номер шага соответствует номеру года. Управляемая система — два
предприятия с вложенными в них средствами. Система характеризуется одним
параметром состояния Показатель эффективности k-го шага равен Показатель эффективности задачи—доход, полученный от двух предприятий в течение n лет—составляет
Уравнение состояния выражает остаток
средств
Пусть
где
Задача 3. Решить задачу 2 при следующих
условиях: Если
а уравнение состояния (2.6) принимает вид
Основные функциональные уравнения (2.7) запишутся следующим образом:
Проведем этап условной оптимизации. 4-й шаг. Условный оптимальный доход равен
так как линейная относительно 3-й шаг:
Коэффициент при
2-й шаг:
1-й шаг:
Результат условной оптимизации:
Перейдем к безусловной оптимизации.
Полагаем
При таком распределении средств
(10000 руб.) за четыре года будет получен доход, равный Непрерывные модели, примером которых служит задача 3, не являются типичными в практике распределения ресурсов. В дальнейшем большинство задач будет носить дискретный характер. 2.3 Дискретная динамическая модель оптимального распределения ресурсовПри дискретном вложении ресурсов
может возникнуть вопрос о выборе шага Рассмотрим двумерную задачу, аналогичную предыдущей, в которой строится дискретная модель ДП процесса распределения ресурсов. Задача 3. Составить оптимальный план
ежегодного распределения средств между двумя предприятиями в течение
трёхлетнего планового периода при следующих условиях: 1) начальная сумма
составляет 400; 2) вложенные средства в размере x приносят на предприятии I доход Таблица 1
Модель динамического программирования данной задачи аналогична модели, составленной в задаче 1. Процесс управления является
трехшаговым. Параметр
а функциональные уравнения – в виде
Попытаемся определить максимально
возможные значения, для которых необходимо проводить табулирование на k-м шаге (k=1, 2, 3). При Таблица 2
Аналогичную таблицу полезно
подготовить и для расчетов по формуле (2.8). Расчет Таблица 3
Проведем условную оптимизацию по обычной схеме. 3-й шаг. Основное уравнение (2.9) решим с помощью табл. 2. Как
указывалось выше, Оптимизация 2-го шага проведена в табл. 5 согласно уравнению вида (2.10):
Таблица 4 (основная)
Таблица 5
Продолжение
Результаты оптимизации занесены в
табл. 4. Для значений Условная оптимизация 1-го шага согласно уравнению для Таблица 6
Перейдем к безусловной оптимизации.
Из табл. 6 получаем Zmax=99,l, Итак, мы получили следующий оптимальный план распределения средств между двумя предприятиями по годам:
При этом может быть получен максимальный доход, равный Zmax=99,l. Прямой подсчет дохода по табл. 2 для найденного оптимального управления дает 97,2. Расхождение в результатах на 1,9 (около 2%) объясняется ошибкой линейной интерполяции. Мы рассмотрели несколько вариантов задачи оптимального распределения ресурсов. Существуют другие варианты этой задачи, особенности которых учитываются соответствующей динамической моделью. 2.4 Учет последействия в задачах оптимального распределения ресурсовПри постановке задачи оптимального
распределения ресурсов мы предполагали, что доход на каждом шаге от всех
предприятий и максимальный доход Таким образом, нарушается одно из условий, предъявляемых к задачам оптимизации, для того чтобы их можно было описать моделью ДП. Чтобы учесть предысторию процесса распределения ресурсов, можно увеличить число параметров состояния на каждом шаге, искусственно включив в число фазовых координат все управляющие параметры: предшествующих шагов, которые определяют последействие. Если число таких параметров велико, то схема ДП усложняется настолько, что становится практически неприменимой. В случае если размерность искусственного фазового пространства не превышает 3-4, то задачу можно решить вручную или (для большого числа шагов n) на машине. Рассмотрим модель задачи оптимального распределения ресурсов с последействием, аналогичную задаче 2. Задача 5. Начальные средства Требуется найти оптимальный способ распределения ресурсов между предприятиями I и II на n лет. Обозначим через Состояние системы
а доход, полученный на k-м шаге от двух предприятий, равен
Величины (2.11) и (2.12) зависят не
только от управления Введем в рассмотрение две новые фазовые координаты:
полагая Уравнение состояния имеет вид
а доход на k-м шаге равен
Суммарный доход за n лет составляет
Требуется найти неотрицательные
переменные Обозначим через Функциональные уравнения (1.5) для
Решая последовательно уравнения
(2.17) для
Оптимальное управление Рассмотрим, как реализуется схема ДП, учитывающая предысторию процесса, на следующей дискретной модели оптимального распределения ресурсов. Задача 6. Средства Требуется распределить начальные
средства Запишем модель ДП задачи. Начальное состояние
Таблица 7
Показатель эффективности — суммарная продукция — равен
Найти переменные Будем характеризовать состояние
процесса распределения средств в начале k-го шага двумя параметрами:
Пусть
Обозначим выражения, стоящие в
фигурных скобках второго и третьего уравнений (2.21), соответственно через Условная оптимизация 3-го шага
сводится к решению первого уравнения из (2.21). Результат ее совпадает с
разделом III табл. 7 (здесь Условная оптимизация 2-го шага
проведена в табл. 8, при этом во втором из уравнений (2.21) состояния Условная оптимизация 1-го шага
проведена в табл. 9 только для Используя результат условной оптимизации (табл. 9, 8 и раздел III табл. 7), получим оптимальное решение. Из табл. 9 получаем Zmax=15,l; это значение достигается при Таким образом, при распределении Таблица 8
Таблица 9
Заключение В работе было рассмотрено применение динамического программирования для решения задач оптимального распределения ресурсов. Этот метод играет важную роль в решении прикладных задач различных областей науки, что обусловлено его высокой эффективностью. Однако, как и любой математический аппарат, методы динамического программирования нельзя слепо применять для решения той или иной задачи без тщательного предварительного анализа. Практическое применение данных методов требует от исследователя определенного искусства. При этом определяющее значение имеет корректное построение модели и применение подходящих численных процедур. Список используемых источников 1. Беллман Р. Динамическое программирование. М.: ИЛ, 1960. 430 с. 2. Бронштейн И.Н., Семендяев К.А. Справочник по математике для инженеров и учащихся ВТУЗов. М.: Наука, 1986. 534 с. 3. Каллихман И.Л., Войтенко М.А. Динамическое программирование в примерах и задачах. М.: Высшая школа, 1979. 124 с. 4. Химмельблау Д.М. Прикладное нелинейное программирование. М.: Мир, 1975. 534с. Приложение 1 Листинг программы для решения задачи оптимального распределения ресурсов с заданными параметрами#include<iostream.h> #include<conio.h> #include<values.h> //--------------Определяем начальные ресурсы-------------------- const ksi_0 = 6; //--------------Класс таблицы для вывода------------------------ class Table { int tx, ty, c_x, new_y; public: Table(); void NewString(double a1, double a2, double a3, double a4, double a5, double a6, double a7); void EndOfTable(); }; //-------------Конструктор класса------------------------------- Table::Table() { tx=1, ty=1; c_x=77; clrscr(); gotoxy(tx,ty); cout << "┌"; for (int i=0;i<c_x;i++) cout << "─"; cout << "┐"; gotoxy(tx+7,ty); cout << "┬"; gotoxy(tx+14,ty); cout << "┬"; gotoxy(tx+19,ty); cout << "┬"; gotoxy(tx+26,ty); cout << "┬"; gotoxy(tx+26,ty); cout << "┬"; gotoxy(tx+40,ty); cout << "┬"; gotoxy(tx+63,ty); cout << "┬"; gotoxy(tx,ty+1); cout << "│"; gotoxy(tx+2,ty+1) ; cout << "ksi1"; gotoxy(tx+7,ty+1); cout << "│"; gotoxy(tx+9,ty+1) ; cout << "eta1"; gotoxy(tx+14,ty+1); cout << "│"; gotoxy(tx+16,ty+1); cout << "x1"; gotoxy(tx+19,ty+1); cout << "│"; gotoxy(tx+21,ty+1); cout << "ksi2"; gotoxy(tx+26,ty+1); cout << "│"; gotoxy(tx+28,ty+1); cout << "f2(x2,eta1)"; gotoxy(tx+40,ty+1); cout << "│"; gotoxy(tx+42,ty+1); cout << "Z3_max(ksi2,eta1+x1)"; gotoxy(tx+63,ty+1); cout << "│"; gotoxy(tx+65,ty+1); cout << "Z2(ksi1,eta1)"; gotoxy(tx+78,ty+1); cout << "│"; gotoxy(tx,ty+2); cout << "├"; for (i=0;i<c_x;i++) cout << "─"; cout << "┤"; gotoxy(tx+7,ty+2); cout << "┼"; gotoxy(tx+14,ty+2); cout << "┼"; gotoxy(tx+19,ty+2); cout << "┼"; gotoxy(tx+26,ty+2); cout << "┼"; gotoxy(tx+26,ty+2); cout << "┼"; gotoxy(tx+40,ty+2); cout << "┼"; gotoxy(tx+63,ty+2); cout << "┼"; new_y=ty+3; } //-------------Определение методов класса таблицы--------------- void Table::NewString(double a1, double a2, double a3, double a4, double a5, double a6, double a7) { gotoxy(tx,new_y); for(int i=0;i<c_x;i++) cout << " "; gotoxy(tx+7,ty+2); cout << "┼"; gotoxy(tx+14,ty+2); cout << "┼"; gotoxy(tx+19,ty+2); cout << "┼"; gotoxy(tx+26,ty+2); cout << "┼"; gotoxy(tx+26,ty+2); cout << "┼"; gotoxy(tx+40,ty+2); cout << "┼"; gotoxy(tx+63,ty+2); cout << "┼"; gotoxy(tx,new_y); cout << "│"; gotoxy(tx+2,new_y) ; cout << a1; gotoxy(tx+7,new_y); cout << "│"; gotoxy(tx+9,new_y) ; cout << a2; gotoxy(tx+14,new_y); cout << "│"; gotoxy(tx+16,new_y); cout << a3; gotoxy(tx+19,new_y); cout << "│"; gotoxy(tx+21,new_y); cout << a4; gotoxy(tx+26,new_y); cout << "│"; gotoxy(tx+28,new_y); cout << a5; gotoxy(tx+40,new_y); cout << "│"; gotoxy(tx+42,new_y); cout << a6; gotoxy(tx+63,new_y); cout << "│"; gotoxy(tx+65,new_y); cout << a7; gotoxy(tx+78,new_y); cout << "│"; new_y++; if(new_y>24) { gotoxy(tx,new_y); cout << "└"; for (int i=0;i<c_x;i++) cout << "─"; cout << "┘"; gotoxy(tx+7,ty+2); cout << "┴"; gotoxy(tx+14,ty+2); cout << "┴"; gotoxy(tx+19,ty+2); cout << "┴"; gotoxy(tx+26,ty+2); cout << "┴"; gotoxy(tx+26,ty+2); cout << "┴"; gotoxy(tx+40,ty+2); cout << "┴"; gotoxy(tx+63,ty+2); cout << "┴"; new_y=ty+3; } } void Table::EndOfTable() { int i,j; gotoxy(tx,new_y); cout << "└"; for (i=0;i<c_x;i++) cout << "─"; cout << "┘"; gotoxy(tx+7,ty+2); cout << "┴"; gotoxy(tx+14,ty+2); cout << "┴"; gotoxy(tx+19,ty+2); cout << "┴"; gotoxy(tx+26,ty+2); cout << "┴"; gotoxy(tx+26,ty+2); cout << "┴"; gotoxy(tx+40,ty+2); cout << "┴"; gotoxy(tx+63,ty+2); cout << "┴"; gotoxy(tx,new_y+1); for(j=new_y+1;j<26;j++) { for(i=tx;i<c_x+4;i++) { gotoxy(i,j); cout << " "; } } gotoxy(1,24); } //------------Сообщения----------------------------------------- void MessageSend(char *MessageForFunc) { cout << MessageForFunc << endl; getch(); } //----Определения функций, характеризующих выпуск продукции----- double f3(int arg1, int arg2) { if((arg1<0 || arg1>ksi_0) || (arg2<0 || arg2>ksi_0)) return (double)MAXINT; double Values[ksi_0+1][ksi_0+1]={ 0, 3.4, 3.8, 4.2, 5.0, 5.0, 0, 0, 3.7, 4.1, 4.5, 5.3, 5.3, 0, 0, 3.7, 4.1, 4.5, 5.4, 0, 0, 0, 4.0, 4.5, 4.8, 0, 0, 0, 0, 4.2, 4.8, 0, 0, 0, 0, 0, 4.6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; return Values[arg2][arg1]; } double f2(int arg1, int arg2) { if((arg1<0 || arg1>ksi_0) || (arg2<0 || arg2>ksi_0)) return (double)MAXINT; double Values[ksi_0+1][ksi_0+1]={ 0, 2.2, 2.8, 3.1, 4.3, 6, 0, 0, 3.1, 4.2, 5.3, 7.1, 8, 0, 0, 3.3, 4.5, 6.1, 7.3, 0, 0, 0, 3.5, 4.8, 6.7, 0, 0, 0, 0, 5.4, 5.9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; return Values[arg2][arg1]; } double f1(int arg1) { if(arg1<0 || arg1>ksi_0) return (double)MAXINT; double Values[ksi_0+1]={ 0, 2.1, 3.2, 4.3, 5.1, 5.1, 0 }; return Values[arg1]; } int main(void) { clrscr(); Table ob; int ksi, eta, x, i, j, Indexes[6][5], IndexOfMax = -1, X_opt[3]; double Z_2[6][5], Max=0, MayBeMax=0, Z_max; for(i=0; i<6; i++) for(j=0; j<5; j++) { Z_2[i][j]=0; Indexes[i][j]=-1; } for(ksi=1; ksi<7; ksi++) { for(eta=0; eta<5; eta++) { Max = MayBeMax = 0; for(x=0; x<ksi + 1; x++) { if((ksi + eta) > 6) break; MayBeMax = f2(x, eta) + f3(ksi - x, x + eta); if(Max < MayBeMax) { Max = MayBeMax; IndexOfMax = x; } ob.NewString(ksi, eta, x, ksi-x, f2(x, eta), f3(ksi - x, x + eta), MayBeMax); getch(); } if(Max>0) { Z_2[ksi-1][eta] = Max; Indexes[ksi-1][eta] = IndexOfMax; } } } ob.EndOfTable(); getch(); Max = MayBeMax = 0; for(x = 0; x<ksi_0; x++) { MayBeMax = f1(x) + Z_2[ksi_0 - 1 - x][x]; if(Max < MayBeMax) { Max = MayBeMax; X_opt[0] = x; } } Z_max = Max; X_opt[1] = Indexes[ksi_0 - 1 - X_opt[0]][X_opt[0]]; Max = MayBeMax = 0; for(i=0; i<ksi_0 + 1; i++) { MayBeMax = f3(i,X_opt[0]+1); if(Max < MayBeMax) { Max = MayBeMax; X_opt[2] = i; } } cout << "Максимальный выпуск продукции: " << Z_max << endl; cout << "достигается при распределении средств: "; cout << "x1=" << X_opt[0] << ", x2=" << X_opt[1] << ", x3=" << X_opt[2]; getch(); getch(); return 0; } Результаты работы программы ┌──┬───┬──┬──┬───────┬────────────┬───────┬ │ksi1│eta1│x1│ksi2│f2(x2,eta1)│Z3_max(ksi2,eta1+x1)│ Z2(ksi1,eta1)│ ├───┴───┴──┴──┴───────┴───────────┴───────┴ │ 1 │ 0 │ 0 │ 1 │ 0 │ 3.4 │ 3.4 │ │ 1 │ 0 │ 1 │ 0 │ 2.2 │ 0 │ 2.2 │ │ 1 │ 1 │ 0 │ 1 │ 0 │ 3.7 │ 3.7 │ │ 1 │ 1 │ 1 │ 0 │ 3.1 │ 0 │ 3.1 │ │ 1 │ 2 │ 0 │ 1 │ 0 │ 3.7 │ 3.7 │ │ 1 │ 2 │ 1 │ 0 │ 3.3 │ 0 │ 3.3 │ │ 1 │ 3 │ 0 │ 1 │ 0 │ 4 │ 4 │ │ 1 │ 3 │ 1 │ 0 │ 3.5 │ 0 │ 3.5 │ │ 1 │ 4 │ 0 │ 1 │ 0 │ 4.2 │ 4.2 │ │ 1 │ 4 │ 1 │ 0 │ 5.4 │ 0 │ 5.4 │ │ 2 │ 0 │ 0 │ 2 │ 0 │ 3.8 │ 3.8 │ │ 2 │ 0 │ 1 │ 1 │ 2.2 │ 3.7 │ 5.9 │ │ 2 │ 0 │ 2 │ 0 │ 2.8 │ 0 │ 2.8 │ │ 2 │ 1 │ 0 │ 2 │ 0 │ 4.1 │ 4.1 │ │ 2 │ 1 │ 1 │ 1 │ 3.1 │ 3.7 │ 6.8 │ │ 2 │ 1 │ 2 │ 0 │ 4.2 │ 0 │ 4.2 │ │ 2 │ 2 │ 0 │ 2 │ 0 │ 4.1 │ 4.1 │ │ 2 │ 2 │ 1 │ 1 │ 3.3 │ 4 │ 7.3 │ │ 2 │ 2 │ 2 │ 0 │ 4.5 │ 0 │ 4.5 │ │ 2 │ 3 │ 0 │ 2 │ 0 │ 4.5 │ 4.5 │ │ 2 │ 3 │ 1 │ 1 │ 3.5 │ 4.2 │ 7.7 │ │ 2 │ 3 │ 2 │ 0 │ 4.8 │ 0 │ 4.8 │ │ 2 │ 4 │ 0 │ 2 │ 0 │ 4.8 │ 4.8 │ │ 2 │ 4 │ 1 │ 1 │ 5.4 │ 4.6 │ 10 │ │ 2 │ 4 │ 2 │ 0 │ 5.9 │ 0 │ 5.9 │ │ 3 │ 0 │ 0 │ 3 │ 0 │ 4.2 │ 4.2 │ │ 3 │ 0 │ 1 │ 2 │ 2.2 │ 4.1 │ 6.3 │ │ 3 │ 0 │ 2 │ 1 │ 2.8 │ 3.7 │ 6.5 │ │ 3 │ 0 │ 3 │ 0 │ 3.1 │ 0 │ 3.1 │ │ 3 │ 1 │ 0 │ 3 │ 0 │ 4.5 │ 4.5 │ │ 3 │ 1 │ 1 │ 2 │ 3.1 │ 4.1 │ 7.2 │ │ 3 │ 1 │ 2 │ 1 │ 4.2 │ 4 │ 8.2 │ │ 3 │ 1 │ 3 │ 0 │ 5.3 │ 0 │ 5.3 │ │ 3 │ 2 │ 0 │ 3 │ 0 │ 4.5 │ 4.5 │ │ 3 │ 2 │ 1 │ 2 │ 3.3 │ 4.5 │ 7.8 │ │ 3 │ 2 │ 2 │ 1 │ 4.5 │ 4.2 │ 8.7 │ │ 3 │ 2 │ 3 │ 0 │ 6.1 │ 0 │ 6.1 │ │ 3 │ 3 │ 0 │ 3 │ 0 │ 4.8 │ 4.8 │ │ 3 │ 3 │ 1 │ 2 │ 3.5 │ 4.8 │ 8.3 │ │ 3 │ 3 │ 2 │ 1 │ 4.8 │ 4.6 │ 9.4 │ │ 3 │ 3 │ 3 │ 0 │ 6.7 │ 0 │ 6.7 │ │ 4 │ 0 │ 0 │ 4 │ 0 │ 5 │ 5 │ │ 4 │ 0 │ 1 │ 3 │ 2.2 │ 4.5 │ 6.7 │ │ 4 │ 0 │ 2 │ 2 │ 2.8 │ 4.1 │ 6.9 │ │ 4 │ 0 │ 3 │ 1 │ 3.1 │ 4 │ 7.1 │ │ 4 │ 0 │ 4 │ 0 │ 4.3 │ 0 │ 4.3 │ │ 4 │ 1 │ 0 │ 4 │ 0 │ 5.3 │ 5.3 │ │ 4 │ 1 │ 1 │ 3 │ 3.1 │ 4.5 │ 7.6 │ │ 4 │ 1 │ 2 │ 2 │ 4.2 │ 4.5 │ 8.7 │ │ 4 │ 1 │ 3 │ 1 │ 5.3 │ 4.2 │ 9.5 │ │ 4 │ 1 │ 4 │ 0 │ 7.1 │ 0 │ 7.1 │ │ 4 │ 2 │ 0 │ 4 │ 0 │ 5.4 │ 5.4 │ │ 4 │ 2 │ 1 │ 3 │ 3.3 │ 4.8 │ 8.1 │ │ 4 │ 2 │ 2 │ 2 │ 4.5 │ 4.8 │ 9.3 │ │ 4 │ 2 │ 3 │ 1 │ 6.1 │ 4.6 │ 10.7 │ │ 4 │ 2 │ 4 │ 0 │ 7.3 │ 0 │ 7.3 │ │ 5 │ 0 │ 0 │ 5 │ 0 │ 5 │ 5 │ │ 5 │ 0 │ 1 │ 4 │ 2.2 │ 5.3 │ 7.5 │ │ 5 │ 0 │ 2 │ 3 │ 2.8 │ 4.5 │ 7.3 │ │ 5 │ 0 │ 3 │ 2 │ 3.1 │ 4.5 │ 7.6 │ │ 5 │ 0 │ 4 │ 1 │ 4.3 │ 4.2 │ 8.5 │ │ 5 │ 0 │ 5 │ 0 │ 6 │ 0 │ 6 │ │ 5 │ 1 │ 0 │ 5 │ 0 │ 5.3 │ 5.3 │ │ 5 │ 1 │ 1 │ 4 │ 3.1 │ 5.4 │ 8.5 │ │ 5 │ 1 │ 2 │ 3 │ 4.2 │ 4.8 │ 9 │ │ 5 │ 1 │ 3 │ 2 │ 5.3 │ 4.8 │ 10.1 │ │ 5 │ 1 │ 4 │ 1 │ 7.1 │ 4.6 │ 11.7 │ │ 5 │ 1 │ 5 │ 0 │ 8 │ 0 │ 8 │ │ 6 │ 0 │ 0 │ 6 │ 0 │ 0 │ 0 │ │ 6 │ 0 │ 1 │ 5 │ 2.2 │ 5.3 │ 7.5 │ │ 6 │ 0 │ 2 │ 4 │ 2.8 │ 5.4 │ 8.2 │ │ 6 │ 0 │ 3 │ 3 │ 3.1 │ 4.8 │ 7.9 │ │ 6 │ 0 │ 4 │ 2 │ 4.3 │ 4.8 │ 9.1 │ │ 6 │ 0 │ 5 │ 1 │ 6 │ 4.6 │ 10.6 │ │ 6 │ 0 │ 6 │ 0 │ 0 │ 0 │ 0 │ └────────────────────────────────────────── Максимальный выпуск продукции: 15.1 достигается при распределении средств: x1=4, x2=1, x3=1 * Управление на k-м шаге может характеризоваться качественно ** Термин «эффективность» понимается как некоторая оценка результата процесса. Она может выражать собой пoкaзaтeль, который желательно максимизировать (например, прибыль, фондоотдача, производительность) или показатель, который необходимо минимизировать (например, затраты, себестоимость, потери) |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||