Оптимальная стратегия замены оборудования
Характеристика состояния хозяйствующего субъекта и выявление тенденций его развития. Расчет показателей экономико-математической модели и экономическая интерпретация результатов. Задачи динамического программирования. Построение математической модели.
Рубрика | Экономико-математическое моделирование |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 29.04.2013 |
Размер файла | 73,5 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ
ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ
ТЮМЕНСКИЙ ГОСУДАРСТВЕННЫЙ НЕФТЕГАЗОВЫЙ УНИВЕРСИТЕТ
ИНСТИТУТ КИБЕРНЕТИКИ, ИНФОРМАТИКИ И СВЯЗИ
ОТДЕЛЕНИЕ ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ И ВЫЧИСЛИТЕЛЬНОЙ ТЕХНИКИ
КУРСОВОЙ ПРОЕКТ
по дисциплине «Математические методы»
НА ТЕМУ: «Оптимальная стратегия замены оборудования»
ПОЯСНИТЕЛЬНАЯ ЗАПИСКА
Студентки Бикчантаевой Е.И._________ «____» ______________2013г.
Группа ОВТт-09-(9)-1
Специальность 230105 «Программное обеспечение вычислительной техники и автоматизированных систем»
Руководитель Созонова С.В. _____________ «____»___________2013г.
2013
СОДЕРЖАНИЕ
Введение
1. Характеристика состояния хозяйствующего субъекта и выявление тенденций его развития.
2. Информационно-методическое обеспечение экономического моделирования.
2.1 Методическая база решения модели.
2.2 Информационно-методическое обеспечение метода.
3. Расчет показателей экономико-математической модели и экономическая интерпретация результатов.
Заключение
Список литературы
ВВЕДЕНИЕ
Во всем мире существует множество предприятий, которые используют для производства своей продукции машинное оборудование. Поэтому при его внедрении нужно составлять оптимальный план использования и замены оборудования. Задачи по замене оборудования рассматриваются как многоэтаповый процесс, который характерен для динамического программирования.
Многие предприятия сохраняют или заменяют оборудование по своей интуиции, не применяя методы динамического программирования. Применять эти методы целесообразно, так как это позволяет наиболее четко максимизировать прибыль или минимизировать затраты.
Задача о замене оборудования состоит в определении оптимальных сроков замены старого оборудования. Старение оборудования включает его физический и моральный износ. В результате чего увеличиваются производственные затраты, растут затраты на обслуживание и ремонт, снижается производительность труда и ликвидная стоимость. Критерием оптимальности является либо прибыль от эксплуатации оборудования, либо суммарные затраты на эксплуатацию в течение планируемого периода.
Глава 1. ХАРАКТЕРИСТИКА СОСТОЯНИЯ ХОЗЯЙСТВУЮЩЕГО СУБЪЕКТА И ВЫЯВЛЕНИЕ ТЕНДЕНЦИЙ ЕГО РАЗВИТИЯ
Для осуществления своей эффективной деятельности производственные объединения и предприятия должны периодически производить замену используемого ими оборудования. При этой замене учитывается производительность используемого оборудования и затраты, связанные с содержанием и ремонтом оборудования.
К началу планируемого периода на предприятии установлено новое оборудование, позволяющее за каждый год восьмилетнего периода выпустить готовой продукции на сумму соответственно 25,24,24,23,23,23,22,21,20,20,20,20 тыс.д.ед. Ежегодные затраты предприятий, связанные с содержанием и ремонтом используемого аналогичного оборудования за тот же период времени представлены в п.1.табл.1.1. Затраты, связанные с приобретением и установкой нового оборудования, идентично с установленным, составляют 10 д.ед., использованное оборудование списывается.
На основе статистической обработки, результаты которой сведены в таблицу1.2, можно построить графическую зависимость затрат на содержание и ремонт оборудования в планируемом периоде.
Таблица 1 - Зависимость затрат на содержание и ремонт оборудования в планируемом периоде.
Порядковые годы эксплуатации оборудования |
Затраты, тыс.д.ед. |
|
1 |
2 |
|
0 1 2 |
15,07 15,01 15,94 |
|
3 4 5 6 7 8 9 10 |
16,11 16,93 16,86 17,96 18 19,11 19,86 20,19 |
Рисунок 1 - Зависимость затрат на содержание и ремонт оборудования в планируемом периоде.
Из графика видно, что затраты на содержание и ремонт оборудования в планируемом периоде с каждым годом растут, потому что оборудование стареет.
Характерным для динамического программирования является подход к решению задачи по этапам, с каждым из которых ассоциирована одна управляемая переменная. Набор рекуррентных вычислительных процедур, связывающих различные этапы, обеспечивает получение допустимого решения задачи в целом при достижении последнего этапа.
Данная задача относится к задачам динамического программирования, потому что выполняются два условия это: аддитивность целевой функции; отсутствие последствия, которое строится на принципе оптимальности Беллмана.
Fn-k(X(k))=max[Wk+1(X(k), uk+1)+Fn-k-1(Xk+1))](k=0, n-1).
Uk+1
Глава 2. ИНФОРМАЦИОННО-МЕТОДИЧЕСКОЕ ОБЕСПЕЧЕНИЕ ЭКОНОМИЧЕСКОГО МОДЕЛИРОВАНИЯ
2.1 Методическая база решения модели
В задачах динамического программирования экономический процесс зависит от времени (от нескольких периодов (этапов) времени), поэтому находится ряд оптимальных решений (последовательно для каждого этапа), обеспечивающих оптимальное развитие всего процесса в целом. Задачи динамического программирования называются многоэтапными или многошаговыми. Динамическое программирование представляет собой математический аппарат, позволяющий осуществлять оптимальное планирование многошаговых управляемых процессов и процессов, зависящих от времени. Экономический процесс называется управляемым, если можно влиять на ход его развития. Управлением называется совокупность решений, принимаемых на каждом этапе для влияния на ход процесса. В экономических процессах управление заключается в распределении и перераспределении средств на каждом этапе. Например, выпуск продукции любым предприятием -управляемый процесс, так как он определяется изменением состава оборудования, объемом поставок сырья, величиной финансирования и т.д. Совокупность решений, принимаемых в начале каждого года планируемого периода по обеспечению предприятия сырьем, замене оборудования, размерам финансирования и т.д., является управлением. Казалось бы, для получения максимального объема выпускаемой продукции проще всего вложить максимально возможное количество средств и использовать на полную мощность оборудование. Но это привело бы к быстрому изнашиванию оборудования и, как следствие, к уменьшению выпуска продукции. Следовательно, выпуск продукции надо спланировать так, чтобы избежать нежелательных эффектов. Необходимо предусмотреть мероприятия, обеспечивающие пополнение оборудования по мере изнашивания, т.е. по периодам времени. Последнее хотя и приводит к уменьшению первоначального объема выпускаемой продукции, но обеспечивает в дальнейшем возможность расширения производства. Таким образом, экономический процесс выпуска продукции можно считать состоящим из нескольких этапов (шагов), на каждом из которых осуществляется влияние на его развитие.
Началом этапа (шага) управляемого процесса считается момент принятия решения (о величине капитальных вложений, о замене оборудования определенного вида и т.д.). Под этапом обычно понимают хозяйственный год.
Динамическое программирование, используя поэтапное планирование, позволяет не только упростить решение задачи, но и решить те из них, к которым нельзя применить методы математического анализа. Упрощение решения достигается за счет значительного уменьшения количества исследуемых вариантов, так как вместо того, чтобы один раз решать сложную многовариантную задачу, метод поэтапного планирования предполагает многократное решение относительно простых задач.
Планируя поэтапный процесс, исходят из интересов всего процесса в целом, т.е. при принятии решения на отдельном этапе всегда необходимо иметь в виду конечную цель.
Однако динамическое программирование имеет и свои недостатки. В отличие от линейного программирования, в котором симплексный метод является универсальным, в динамическом программировании такого метода не существует. Каждая задача имеет свои трудности, и в каждом случае необходимо найти наиболее подходящую методику решения. Недостаток динамического программирования заключается также в трудоемкости решения многомерных задач. При очень большом числе переменных решение задачи даже на современных ЭВМ ограничивается памятью и быстродействием машины. Например, если для исследования каждой переменной одномерной задачи требуется 10 шагов, то в двумерной задаче их количество увеличивается до 100, в трехмерной -до 1000 и т.д. [7].
Предположим, какая-то система S находится в некотором начальном состоянии S0 и является управляемой. Таким образом, благодаря осуществлению некоторого управления U указанная система переходит из начального состояния S0 в конечное состояние Sк. При этом качество каждого из реализуемых управлений U характеризуется соответствующим значением функции W(U). Задача состоит в том, чтобы из множества возможных управлений U найти такое U* , при котором функция W(U) принимает экстремальное (максимальное или минимальное) значение W(U*).
Задачи динамического программирования имеют геометрическую интерпретацию. Состояние физической системы S можно описать числовыми параметрами, например расходом горючего и скоростью, количеством вложенных средств и т.д. Назовем эти параметры координатами системы; тогда состояние системы можно изобразить точкой S, а переход из одного состояния S1 в другое S2 -траекторией точки S. Управление U означает выбор определенной траектории перемещения точки S из S1 в S2 , т.е. установление определенного закона движения точки S.
S0 S Sk
0 x
Область возможных состояний системы
Графическое изображение перехода системы S
Рис.2.1
Совокупность состояний, в которые может переходить система, называется областью возможных состояний. В зависимости от числа параметров, характеризующих состояние системы, область возможных состояний системы
может быть различной. Пусть, например, состояние системы S характеризуется одним параметром, - координатой x . В этом случае изменение координаты, если на нее наложены некоторые ограничения, изобразится перемещением точки S по оси Оx или по ее участку. Следовательно, областью возможных состояний системы является совокупность значений x, а управлением -закон движения точки S из начального состояния S0 в конечное Sk по оси Ox или ее части (рис.2.1).
Если состояние системы S характеризуется двумя параметрами (x1 и x2 ), то областью возможных состояний системы служит плоскость x1Ox2 или ее часть, а управление изобразится линией на плоскости, по которой точка S перемещается из S0 в Sk (рис. 2.2).
х2
S0
S Sk
0 х1
Управление системы S в графическом изображении
рис.2.2
В общем случае, когда состояние системы описывается n параметрами xi (i=1,2,…,n), областью возможных состояний служит n-мерное пространство, а управление изображается перемещением точкиS из какой-то начальной области S0 в конечную Sk по некоторой “траектории” этого пространства.
Таким образом, задаче динамического программирования можно дать следующую геометрическую интерпретацию. Из всех траекторий, принадлежащих области возможных состояний системы и соединяющих области S0 и Sk , необходимо выбрать такую, на которой критерий W принимает оптимальное значение. [7].
Чтобы рассмотреть общее решение задач динамического программирования, введем обозначения и сделаем для дальнейших изложений предположения.
Будем считать, что состояние рассматриваемой системы S на K-м шаге (k=1,n) определяется совокупностью чисел X(k) =(x1 (k) , x2(k) ,…, xn(k) ), которые получены в результате реализации управления uk, обеспечившего переход системы S из состояния X(k-1) в состояние X(k). При этом будем предполагать, что состояние X(k) , в которое перешла система S , зависит от данного состояния
X(k-1) и выбранного управления uk и не зависит от того, каким образом система S пришла в состояние X(k-1) .
Далее будем считать, что если в результате реализации k-го шага обеспечен определенный доход или выигрыш, также зависящий от исходного
состояния системы X(k-1) и выбранного управления uk и равный Wk(X(k-1), uk ), то общий доход или выигрыш за n шагов составляет
n
F=? Wk(X(k-1), uk ). (2.1)
k=1
Таким образом, задача динамического программирования должна удовлетворять два условия. Первое условие обычно называют условием отсутствия последействия, а второе - условием аддитивности целевой функции задачи.
2.2 Информационно-методическое обеспечение метода
Выполнение для задачи динамического программирования первого условия позволяет сформулировать для нее принцип оптимальности Беллмана. Прежде чем сделать это, надо дать определение оптимальной стратегии управления. Под такой стратегией понимается совокупность управлений U*=(u1*, u2*, …, un*), в результате реализации которых система S за n шагов переходит из начального состояния X(0) в конечное X(k) и при этом функция (2.1) принимает наибольшее значение.
Принцип оптимальности: какое бы не было состояние системы перед очередным шагом, надо выбрать управление на этом шаге так, чтобы выигрыш на данном шаге плюс оптимальный выигрыш на всех последующих шагах был максимальным.
Отсюда следует, что оптимальную стратегию управления можно получить, если сначала найти оптимальную стратегию управления на n-м шаге, затем на двух последних шагах, затем на трех последних шагах и т.д., вплоть до первого шага. Таким образом, решение рассматриваемой задачи динамического программирования целесообразно начинать с определения оптимального решения на последнем, n-м шаге. Для того чтобы найти это решение, очевидно, нужно сделать различные предположения о том, как мог окончиться предпоследний шаг, и с учетом этого выбрать управление un0 , обеспечивающее максимальное значение функции Wn(X(n-1), un ). Такое управление un0 выбранное при определенных предположениях о том, как окончился предыдущий шаг, называется условно оптимальным управлением. Следовательно, принцип оптимальности требует находить на каждом шаге условно оптимальное управление для любого из возможных исходов предшествующего шага.
Чтобы это можно было осуществить практически, необходимо дать математическую формулировку принципа оптимальности. Для этого введем некоторые дополнительные обозначения. Обозначим через Fn(X0) максимальный доход, получаемый за n шагов при переходе системы S из начального состояния X(0) в конечное состояние X(k) при реализации оптимальной стратегии управления U=(u1, u2, …, un), а через Fn-k(X(k)) -максимальный доход, получаемый при переходе из любого состояния X(k) в конечное состояние X(n) при оптимальной стратегии управления на оставшихся n-k шагах. Тогда:
Fn(X0)=max[W1(X(0), u1)+…+ Wn(X(n-1), un)]; (2.2)
Uk+j
Fn-k(X(k))=max[Wk+1(X(k), uk+1)+Fn-k-1(Xk+1))](k=0, n-1). (2.3)
Uk+1
Последнее выражение представляет собой математическую запись принципа оптимальности и носит название основного функционального уравнения Беллмана или рекуррентного соотношения. Используя данное уравнение можно найти решение задачи динамического программирования.
Полагая k=n-1 в рекуррентном соотношении (2.3) , получим следующее функциональное уравнение:
F1(X(n-1)=max[Wn(X(n-1), un)+F0(X(n))]. (2.4)
un
В этом уравнении F0(X(n)) будем считать известным. Используя теперь уравнение (1.4) и рассматривая всевозможные допустимые состояния системы S на (n-1)-м шаге X1(n-1), X2(n-1), …, Xm(n-1), …, находим условные оптимальные решения
un0(x1(n-1)), un0(x2(n-1)),…, un0(xm(n-1)),…
и соответствующие значения функции (2.4)
F10 (X1(n-1)), F10 (X2(n-1)), …, F10 (Xm(n-1)),… .
Таким образом, на n-м шаге находим условно оптимальное управление при любом допустимом состоянии системы S после (n-1)-го шага. То есть, в каком бы состоянии система ни оказалась после (n-1)-го шага, будет известно, какое следует принять решение на n-м шаге. Известно также и соответствующее значение функции (2.4). Рассмотрим функциональное уравнение при k=n-2:
F2(X(n-1))=max[Wn-1(X(n-2), un-1)+F1(X(n-1))]. (2.5)
Un-1
Для того чтобы найти значения F2 для всех допустимых значений X(n-2), необходимо знать Wn-1(X(n-2), un-1) и F1(X(n-1)). Что касается значений F1(X(n-1)), то они уже определены.Поэтому нужно произвести вычисления для Wn-1(X(n-2), un-1) при некотором отборе допустимых значений X(n-2) и соответствующих управлений un-1 . Эти вычисления позволят определить условно оптимальное управление u0n-1 для каждого X(n-2) . Каждое из таких управлений совместно с уже выбранным управлением на последнем шаге обеспечивает максимальное значение дохода на двух последних шагах.
Последовательно осуществляя описанный выше итерационный процесс, дойдем до первого шага. На этом шаге известно, в каком состоянии может находиться система. Поэтому уже не требуется делать предположений о допустимых состояниях системы, а остается лишь только выбрать управление, которое является наилучшим с учетом условно оптимальных управлений, уже принятых на всех последующих шагах.
Таким образом, в результате последовательного прохождения всех этапов от конца к началу определяется максимальное значение выигрыша за n шагов и для каждого из них находим условно оптимальное управление.
Чтобы найти оптимальную стратегию управления, то есть определить искомое решение задачи, нужно теперь пройти всю последовательность шагов, только на этот раз от начала к концу. А именно: на первом шаге в качестве оптимального управления u1* возьмем найденное условно оптимальное управление u10. На втором шаге найдем состояние X1* , в которое переводит систему управление u1*. Это состояние определяет найденное условно оптимальное u20 , которое теперь считается оптимальным. Зная u2*, находим X2*, а значит, определяем u3* и т.д. В результате этого найдется решение задачи, то есть максимально возможный доход и оптимальную стратегию управления U*, включающую оптимальные управления на отдельных шагах: U*= (u1*, u2*, …, un*).
Итак, из нахождения решения задачи динамического программирования видно, что этот процесс является довольно громоздким. Поэтому более сложные задачи решают с помощью ЭВМ. [1].
Динамическую задачу по замене оборудования возможно также решить и графическим методом. На оси Х откладывают номер шага (к). на оси У - возраст оборудования (t). Точка (к-1;t) на плоскости соответствует началу К-ого шага по эксплуатации оборудования в возрасте t лет.
Любая траектория переводящая точку S(k-1;t) из состояния S0 S, . Состоит из отрезков, то есть из шагов соответствующих годам эксплуатации. Нужно выбрать такую траекторию при которой затраты на эксплуатацию будут минимальны. Если известны зависимость производительности установленного на предприятии оборудования от времени его использования R(t) и зависимость затрат на ремонт оборудования при различном времени его использования S(t) и затраты связанные с приобретением нового оборудования, то показателем эффективности в этом случае является прибыль которая максимизируется.
Глава 3. ПОСТАНОВКА ЗАДАЧ
3.1 Постановка задачи
Пусть рассматриваемая задача, распадающаяся на m шагов или этапов, например планирование деятельности предприятия на несколько лет, поэтапное планирование инвестиций, управление производственными мощностями в течение длительного срока. Показатель эффективности задачи в целом обозначим через W, а показатели эффективности на отдельных шагах - через цi, i=1,m. Если W обладает свойством аддитивности, т.е.
m
W=? цi ,
I=1
То можно найти оптимальное решение задачи методом динамического программирования.
Таким образом, динамическое программирование - это метод оптимизации многошаговых или многоэтапных процессов, критерий эффективности которых обладает свойством. В задачах динамического программирования критерий эффективности называется выигрышем. Данные процессы управляемые, и от правильного выбора управления зависит величина выигрыша.
Переменная хi, от которой зависят выигрыш на i-м шаге и, следовательно, выигрыш в целом, называется шаговым управлением, i=.
Управлением процесса в целом (х) называется последовательность шаговых управлений х=(х1, х2,…,хi,…,хm).
Оптимальное управление х* - это значение управления х, при котором значение W (х*) является максимальным (или минимальным, если требуется уменьшить проигрыш)
W*=W (х*)=max{W (х)}, x€X,
где X - область допустимых управлений.
Оптимальное управление х* определяется последовательностью оптимальных шаговых управлений
х*=(х*1,х*2,…,х*i, ,х*m).
В основе метода динамического программирования лежит принцип оптимальности Беллмана, формулирующийся следующим образом; управление на каждом шаге надо выбирать так, чтобы оптимальной была сумма выигрышей на всех оставшихся до юнца процесса шагах, включая выигрыш на данном шаге.
При решении задачи на каждом шаге выбирается управление, которое должно привести к оптимальному выигрышу. Если считать все шаги независимыми друг от друга, то оптимальным шаговым управлением будет то управление, которое приносит максимальный выигрыш именно на этом шаге. Но, например, при покупке новой техники взамен устаревшей на ее приобретение затрачиваются определенные средства. Поэтому прибыль от ее эксплуатации, вначале может быть небольшой. Однако в следующие годы новая техника будет приносить большую прибыль. И, наоборот, если руководитель примет решение оставить старую технику для получения прибыли в текущем году, то в дальнейшем это приведет к значительным убыткам. Данный пример демонстрирует следующий факт: в многошаговых процессах все шаги зависят друг от друга, и, следовательно, управление на каждом конкретном шаге надо выбирать с учетом его будущих воздействий на весь процесс.
Другой момент, который следует учитывать при выборе управления на данном шаге, - это возможные варианты окончания предыдущего шага. Эти варианты определяют состояние процесса. Например, при определении количества средств, вкладываемых в предприятие в i-м году, необходимо знать, сколько средств осталось в наличии к этому году, какая прибыль получена в предыдущем (i-м) году. Таким образом, при выборе шагового управления необходимо учитывать:
1) возможные исходы предыдущего шага
2) влияние управления на все оставшиеся до конца процесса шаги.
В задачах, первый пункт учитывают, делая на каждом шаге условные предположения о возможных вариантах окончания предыдущего шага и проводя для каждого из вариантов условную оптимизацию. Выполнение второго пункта обеспечивается тем, что в задачах условная оптимизация проводится от конца процесса к началу. Сперва оптимизируется последний m-й шаг, на котором не надо учитывать возможные воздействия выбранного управления xm на все последующие шаги, так как эти шаги просто отсутствуют. Делая предположения об условиях окончания (m-1)-го шага, для каждого из них проводят условную оптимизацию m-го шага и определяют условное оптимальное управление xm. Аналогично поступают для (m-1)-го шага, делая предположения о исходах окончания (m-2)-го шага и определяя условное оптимальное управление на (m-1)-м шаге, приносящее оптимальный выигрыш на двух последних шагах - (m-1)-м и m-м. Так же действуют на всех остальных шагах до первого. На первом шаге, как правило, не надо делать условных предположений, так, как состояние системы перед первым шагом обычно известно.
Для этого состояния выбирают оптимальное шаговое управление, обеспечивающее оптимальный выигрыш на первом и всех последующих шагах. Это управление является безусловным оптимальным управлением на первом шаге и, зная его, определяются оптимальное значение выигрыша и безусловные оптимальные управления на всех шагах.
3.2 Построение математической модели
экономический моделирование динамический программирование
I этап построения модели -заключается в определении (описании, задании, идентификации) переменных. В данной задаче искомыми неизвестными величинами является количество полок каждого вида, которые будут произведены в текущем месяце. Таким образом, - количество полок А (шт./мес.); - количество полок В1 (шт./мес.); - количество полок В2 (шт./мес.).
II этап построения модели- заключается в построении целевой функции, представляющей цель решения задачи. В данном случае цель - это максимизация прибыли, получаемой от продажи полок всех видов в течение месяца. Поскольку в этой задаче прибыль может быть определена как разность между ценой (Ц1, Ц2, Ц3) и себестоимостью (С1, С2, С3), то ЦФ имеет вид
III этап построения модели -заключается в задании ограничений, моделирующих условия задачи. Все ограничения рассматриваемой задачи можно разделить на несколько типов.
Построение математической модели заключается в определении связей между теми или иными процессами и явлениями, создании математического аппарата, позволяющего выразить количественно и качественно связь между теми или иными процессами и явлениями, между интересующими специалиста физическими величинами, и факторами, влияющими на конечный результат.
Обычно их оказывается настолько много, что ввести в модель всю их совокупность не удается. При построении математической модели перед исследованием возникает задача выявить и исключить из рассмотрения факторы, несущественно влияющие на конечный результат (математическая модель обычно включает значительно меньшее число факторов, чем в реальной действительности). На основе данных эксперимента выдвигаются гипотезы о связи между величинами, выражающими конечный результат, и факторами, введенными в математическую модель. Такая связь зачастую выражается системами дифференциальных уравнений в частных производных (например, в задачах механики твердого тела, жидкости и газа, теории фильтрации, теплопроводности, теории электростатического и электродинамического полей).
Конечной целью этого этапа является формулирование математической задачи, решение которой с необходимой точностью выражает результаты, интересующие специалиста.
Форма и принципы представления математической модели зависит от многих факторов.
По принципам построения математические модели разделяют на :
* аналитические;
* имитационные.
В аналитических моделях процессы функционирования реальных объектов, процессов или систем записываются в виде явных функциональных зависимостей.
Аналитическая модель разделяется на типы в зависимости от математической проблемы:
* уравнения (алгебраические, трансцендентные, дифференциальные, интегральные),
* аппроксимационные задачи (интерполяция, экстраполяция, численное интегрирование и дифференцирование),
* задачи оптимизации,
* стохастические проблемы.
3.3 Реализация алгоритма решения
Алгоритм решения задачи
Введём обозначения:
t- возраст оборудования.
L(t) - производство продукции на оборудовании, возраст которого t лет.
R(t) - расходы на содержание оборудования.
P(t) - остаточная стоимость оборудования.
Р - стоимость нового оборудования
Fn(t)- прибыль от старого оборудования возраст которого t лет.
n-последний год.
на старом оборудовании (1)
Это функциональное уравнение
(2)
(3)
3.4 Анализ входных и выходных данных
Форма входного документа
Данные могут быть занесены с помощью таблицы:
Таблица №1 . Данные входной информация.
0 |
1 |
2 |
3 |
4 |
5 |
||
R(t) |
80 |
75 |
65 |
60 |
60 |
55 |
|
L(t) |
20 |
25 |
30 |
35 |
45 |
50 |
Где,
L(t) - производство продукции на оборудовании, возраст которого t лет.
R(t) - расходы на содержание оборудования.
Р=40
1=1,2,3,4.
Форма выходного документа
На основании входной информации получим следующую таблицу:
Таблица №2
0 |
1 |
2 |
3 |
4 |
5 |
||
F(tl) |
20 |
50/oc m |
35/o cm |
25/oc m |
20/o cm |
||
F(t2) |
70 |
85/oc m |
70/o cm |
70/oc m |
|||
F(t3) |
105 |
120/o cm |
105/ ост |
||||
F(t4) |
140 |
155/o cm |
|||||
F(tS) |
175 |
||||||
R-L |
60 |
50 |
35 |
25 |
15 |
0 |
(4)
(5)
n=3. t=1,2.
(6)
(7)
найдём максимальную прибыль при замене оборудования через 2 года:
По формуле
Вывод: Максимальную прибыль в размере 215 единиц мы получим, если поменяем оборудование через 2 года на третий.
ЗАКЛЮЧЕНИЕ
Динамическое программирование - это область математического программирования, включающая совокупность приемов и средств для нахождения оптимального решения, а также оптимизации каждого шага в системе и выработке стратегии управления, то есть процесс управления можно представить как многошаговый процесс. Динамическое программирование, используя поэтапное планирование, позволяет не только упростить решение задачи, но и решить те из них, к которым нельзя применить методы математического анализа. Упрощение решения достигается за счет значительного уменьшения количества исследуемых вариантов, так как вместо того, чтобы один раз решать сложную многовариантную задачу, метод поэтапного планирования предполагает многократное решение относительно простых задач. Планируя поэтапный процесс, исходят из интересов всего процесса в целом, т.е. при принятии решения на отдельном этапе всегда необходимо иметь в виду конечную цель.
Однако динамическое программирование имеет и свои недостатки. В отличие от линейного программирования, в котором симплексный метод является универсальным, в динамическом программировании такого метода не существует. Каждая задача имеет свои трудности, и в каждом случае необходимо найти наиболее подходящую методику решения. Недостаток динамического программирования заключается также в трудоемкости решения многомерных задач. Задача динамического программирования должна удовлетворять два условия. Первое условие обычно называют условием отсутствия последействия, а второе -условием аддитивности целевой функции задачи.
На практике встречаются такие задачи планирования, в которых заметную роль играют случайные факторы, влияющие как на состояние системы, так и на выигрыш. Существует разница между детерминированной и стохастической задачами динамического программирования. В детерминированной задаче оптимальное управление является единственным и указывается заранее как жесткая программа действий. В стохастической задаче оптимальное управление является случайным и выбирается в ходе самого процесса в зависимости от случайно сложившейся ситуации. В детерминированной схеме, проходя процесс по этапам от конца к началу, тоже находится на каждом этапе целый ряд условных оптимальных управлений, но из всех этих управлений, в конечном счете осуществлялось только одно. В стохастической схеме это не так. Каждое из условных оптимальных управлений может оказаться фактически осуществленным, если предшествующий ход случайного процесса приведет систему в соответствующее состояние.
Принцип оптимальности является основой поэтапного решения задач динамического программирования. Типичными представителями экономических задач динамического программирования являются так называемые задачи производства и хранения, задачи распределения капиталовложений, задачи календарного производственного планирования и другие. Задачи динамического программирования применяются в планировании деятельности предприятия с учетом изменения потребности в продукции во времени. В оптимальном распределении ресурсов между предприятиями в направлении или во времени.
Описание характеристик динамического программирования и типов задач, которые могут быть сформулированы в его рамках, по необходимости должно быть очень общим и несколько неопределенным, так как существует необозримое множество различных задач, укладывающихся в схему динамического программирования. Только изучение большого числа примеров дает отчетливое понимание структуры динамического программирования.
СПИСОК ЛИТЕРАТУРЫ
1.Акулич, И.Л. Математическое программирование в примерах и задачах.- М.: Высшая школа, 2010-121 с.
2.Вентцель Е.С. Элементы динамического программирования.- М.: Наука, 2008-564 с.
3. Дудорин В.И. Моделирование в задачах управления производством.-М.: Статистика, 2008-464 с.
4. Исследования операций в экономике: учебное пособие для ВУЗов / под ред. Кремера Н.Ш. -М.: Банки и Биржи , ЮНИТИ, 2009-479 c.
5. Карасев А.И., Математические методы и модели в планировании-М.: Экономика, 2010-299 c.
6. Карманов В.Г. Математическое программирование. -М.: Наука, 2010-256 c.
7.Колемаев В.А. Математическая экономика.- М.: Юнити, 2010-399 c.
8. Лотов А.В. введение в экономико-математическое моделирование.-М.: Наука, 2011-322 с.
9. Ромакин М.И. Оптимизация планирования производства: экономико-математические модели и методы.-М.: Финансы и статистика, 2011- 288 с.
10. Терехов Л.Л. Экономико-математические методы.- М.: Статистика, 2008-328 с.
11. Фатхутдинов Р.А. Разработка управленческого решения. Учебное пособие.-М.:Интер-Синтез, 2011-352 с.
12. Хедли Дж. Нелинейное и динамическое программирование.- М.: Мир, 2010-508 с
Приложение А, листинг программы
Код первой формы
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Grids, StdCtrls, ExtCtrls, Menus, ComCtrls, ToolWin, ImgList, jpeg;
type
TForm1 = class(TForm)
StringGrid1: TStringGrid;
StringGrid2: TStringGrid;
StringGrid3: TStringGrid;
StringGrid4: TStringGrid;
StringGrid5: TStringGrid;
Label2: TLabel;
MainMenu1: TMainMenu;
N1: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
N4: TMenuItem;
N5: TMenuItem;
N10: TMenuItem;
N11: TMenuItem;
N12: TMenuItem;
N13: TMenuItem;
N14: TMenuItem;
N15: TMenuItem;
N16: TMenuItem;
N17: TMenuItem;
N18: TMenuItem;
N19: TMenuItem;
N20: TMenuItem;
N21: TMenuItem;
SaveDialog1: TSaveDialog;
OpenDialog1: TOpenDialog;
GroupBox1: TGroupBox;
Label1: TLabel;
Label3: TLabel;
Edit1: TEdit;
Edit2: TEdit;
ImageList1: TImageList;
N22: TMenuItem;
N9: TMenuItem;
N24: TMenuItem;
N25: TMenuItem;
N26: TMenuItem;
StringGrid6: TStringGrid;
StringGrid7: TStringGrid;
procedure FormCreate(Sender: TObject);
procedure N14Click(Sender: TObject);
procedure N12Click(Sender: TObject);
procedure N17Click(Sender: TObject);
procedure N13Click(Sender: TObject);
procedure N5Click(Sender: TObject);
procedure N16Click(Sender: TObject);
procedure N22Click(Sender: TObject);
procedure N10Click(Sender: TObject);
procedure N11Click(Sender: TObject);
procedure N4Click(Sender: TObject);
procedure N9Click(Sender: TObject);
procedure Edit1KeyPress(Sender: TObject; var Key: Char);
procedure Edit2KeyPress(Sender: TObject; var Key: Char);
procedure Edit1Exit(Sender: TObject);
procedure Edit2Exit(Sender: TObject);
procedure StringGrid3KeyPress(Sender: TObject; var Key: Char);
procedure N26Click(Sender: TObject);
procedure N25Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
keyo:Boolean;
implementation
uses Unit2, Unit3, Unit4, Unit5, Unit6;
{$R *.DFM}
procedure TForm1.FormCreate(Sender: TObject);
begin
StringGrid7.Options:=StringGrid3.Options;
Groupbox1.Visible:=False;
Label1.Visible:=False;
Edit1.Visible:=False;
Label2.Visible:=False;
Edit2.Visible:=False;
N16.Enabled:=False;
N17.Enabled:=False;
N25.Enabled:=False;
N13.Enabled:=False;
N4.Enabled:=False;
N5.Enabled:=False;
N22.Enabled:=False;
End;
procedure TForm1.N14Click(Sender: TObject);
begin
If MessageDlg('Закончить работу с программой?',mtConfirmation,[mbYes,mbNo],0)=mrYes then
Halt(0);
end;
procedure TForm1.N12Click(Sender: TObject);
Begin
keyo:=True;
StringGrid1.Options:=StringGrid7.Options;
StringGrid2.Options:=StringGrid7.Options;
StringGrid3.Options:=StringGrid7.Options;
StringGrid4.Options:=StringGrid7.Options;
StringGrid5.Options:=StringGrid7.Options;
StringGrid1.Color:=clmenu;
StringGrid2.Color:=clmenu;
StringGrid3.Color:=clmenu;
Groupbox1.Visible:=True;
Label1.Visible:=True;
Label2.Visible:=True;
Label3.Visible:=True;
Edit2.Visible:=True;
Edit1.Visible:=True;
Edit1.SetFocus;
N12.Enabled:=False;
End;
procedure TForm1.N17Click(Sender: TObject);
Var
d,er,x,i,j,n,y,y1,y2,m,z,P,o,w,zero,q:integer;
begin
keyo:=false;
n:=StrToInt(Edit1.Text);
P:=StrToInt(Edit2.Text);
m:=0;
StringGrid1.RowCount:=3;
StringGrid3.RowCount:=2;
StringGrid4.Hide;
StringGrid5.Hide;
For i:=0 to n do
For j:=0 to n do
Begin
x:=StrToInt(StringGrid3.Cells[j,0])-StrToInt(StringGrid3.Cells[j,1]);
StringGrid3.Cells[j,2]:=IntToStr(x);
StringGrid1.Height:=((n+1)*25)+i;
StringGrid1.Cells[0,4]:='f'+IntToStr(n)+'(t)';
StringGrid3.Height:=3*25;
StringGrid4.Cells[0,i]:='f'+IntToStr((n-1)-i)+'(t)';
StringGrid4.Colcount:=2;
StringGrid4.Width:=2*41;
StringGrid4.Rowcount:=n-1;
StringGrid4.Height:=(n*25)+i;
StringGrid5.Colcount:=n+1;
StringGrid5.Width:=((n+1)*41)+i;
StringGrid5.Rowcount:=n;
StringGrid5.Height:=(n*25)+i;
StringGrid5.Cells[j,0]:=StringGrid3.Cells[j,2];
o:=StrToInt(StringGrid3.Cells[0,2])-P;
StringGrid5.Cells[0,0]:=IntToStr(o);
StringGrid5.Cells[n,0]:='';
End;
// Основные расчеты
For j:=0 to n-2 do
Begin
If StrToInt(StringGrid5.Cells[j+1,0])<StrToInt(StringGrid5.Cells[0,0]) then
StringGrid5.Cells[j+1,0]:=StringGrid5.Cells[0,0];
q:=StrToInt(StringGrid5.Cells[1,0])+StrToInt(StringGrid5.Cells[0,0]);
StringGrid5.Cells[0,1]:=IntToStr(q);
y:=StrToInt(StringGrid5.Cells[j+1,0])+StrToInt(StringGrid3.Cells[j,2]);
StringGrid5.Cells[j,1]:=IntToStr(y);
If y<StrToInt(StringGrid5.Cells[0,1]) then
StringGrid5.Cells[j,1]:=StringGrid5.Cells[0,1];
End;
// Далее
For i:=2 to n-2 do
For j:=0 to (n-1)-i do
Begin
w:=StrToInt(StringGrid5.Cells[1,i-1])+StrToInt(StringGrid5.Cells[0,0]);
StringGrid5.Cells[0,i]:=IntToStr(w);
y1:=StrToInt(StringGrid5.Cells[j+1,i-1])+StrToInt(StringGrid3.Cells[j,2]);
StringGrid5.Cells[j,i]:=IntToStr(y1);
If y1<StrToInt(StringGrid5.Cells[0,i]) then
StringGrid5.Cells[j,i]:=StringGrid5.Cells[0,i];
End;
y2:=StrToInt(StringGrid5.Cells[1,n-2])+StrToInt(StringGrid5.Cells[0,0]);
StringGrid5.Cells[0,n-1]:=IntToStr(y2);
// Подсчет количества лет
For i:=n-2 downto 1 do
Begin
er:=StrToInt(StringGrid5.Cells[0,i-1]);
z:=StrToInt(StringGrid5.Cells[0,i]);
If er<>StrToInt(StringGrid5.Cells[n-i,i-1]) then
Begin
If z<>StrToInt(StringGrid5.Cells[n-1-i,i]) then m:=m+1;
End;
End;
// Error
zero:=StrToInt(StringGrid5.Cells[0,0]);
If zero<0 then
Begin
MessageDlg('Неверно введены параметры. Повторите ввод.',mtError,[MbOk],0);
For i:=0 to n do
For j:=0 to n do
Begin
StringGrid3.Cells[j,i]:='';
StringGrid5.Cells[j,i]:='';
End;
StringGrid3.RowCount:=2;
N22.Checked:=False;
StringGrid1.Height:=0;
StringGrid1.Width:=0;
StringGrid2.Height:=0;
StringGrid2.Width:=0;
StringGrid3.Height:=0;
StringGrid3.Width:=0;
StringGrid4.Height:=0;
StringGrid4.Width:=0;
StringGrid5.Height:=0;
StringGrid5.Width:=0;
Edit1.Text:='';
Edit2.Text:='';
N17.Enabled:=False;
N13.Enabled:=False;
N5.Enabled:=False;
N22.Enabled:=False;
N25.Enabled:=False;
N4.Enabled:=False;
N16.Enabled:=False;
Label2.Caption:='';
Edit1.SetFocus;
End
else
Begin
Label2.Caption:='';
Label2.Font.Color:=clTeal;
Label2.Font.Size:=14;
If Stringgrid5.Cells[0,n-2]=StringGrid5.Cells[1,n-2] then d:=m+1
else d:=m+2;
Label2.Caption:='Чтобы получить максимальную прибыль, оборудование нужно сменить через '+IntToStr(d)+' года (год/лет).';
N16.Enabled:=False;
N17.Enabled:=False;
N25.Enabled:=True;
N13.Enabled:=True;
StringGrid1.Options:=StringGrid6.Options;
StringGrid2.Options:=StringGrid6.Options;
StringGrid3.Options:=StringGrid6.Options;
StringGrid4.Options:=StringGrid6.Options;
StringGrid5.Options:=StringGrid6.Options;
StringGrid1.Color:=clActiveBorder;
StringGrid2.Color:=clActiveBorder;
StringGrid3.Color:=clActiveBorder;
If n<=3 then
Begin
N22.Enabled:=False;
End
else
Begin
If MessageDlg('Показать расчеты ?'+#10#13, MtConfirmation, [mbYes, mbNo],0)=mrYes then
Begin
N22.Enabled:=true;
StringGrid1.RowCount:=5;
StringGrid3.RowCount:=3;
StringGrid4.Show;
StringGrid5.Show;
End
Else
Begin
N22.Enabled:=true;
End;
End;
End;
end;
procedure TForm1.N13Click(Sender: TObject);
var
f:System.Text;
i,j:integer;
begin
SaveDialog1.Filter:='Файлы задачи о замене оборудования (*.zzo)|*.zzo';
If SaveDialog1.Execute then Begin
AssignFile(f, SaveDialog1.FileName);
Rewrite(F);
For i:=0 to 1 do
For j:=0 to StringGrid3.ColCount+1 do
Begin
Write (f, StringGrid3.Cells[j,i]);
End;
Closefile(f);
End;
end;
procedure TForm1.N5Click(Sender: TObject);
Var
i,j,n:integer;
f:System.Text;
Label VIC;
begin
n:=StrToInt(Edit1.Text);
If MessageDlg('Сохранить файл ?'+#10#13, MtConfirmation, [mbYes, mbNo],0)=mrYes then
Begin
SaveDialog1.Filter:='Файлы задачи о замене оборудования (*.zzo)|*.zzo';
If SaveDialog1.Execute then
Begin
AssignFile(f, SaveDialog1.FileName);
Rewrite(F);
For i:=0 to 1 do
For j:=0 to StringGrid3.ColCount+1 do
Begin
Writeln (f, StringGrid3.Cells[j,i]);
End;
Closefile(f);
End;
VIC:For i:=0 to n do
For j:=0 to n do
Begin
StringGrid3.Cells[j,i]:='';
StringGrid5.Cells[j,i]:='';
End;
StringGrid3.RowCount:=2;
N22.Checked:=False;
N25.Enabled:=False;
Label2.Caption:='';
StringGrid1.Height:=0;
StringGrid1.Width:=0;
StringGrid2.Height:=0;
StringGrid2.Width:=0;
StringGrid3.Height:=0;
StringGrid3.Width:=0;
StringGrid4.Height:=0;
StringGrid4.Width:=0;
StringGrid5.Height:=0;
StringGrid5.Width:=0;
GroupBox1.Visible:=False;
Label1.Visible:=False;
Label2.Visible:=False;
Label3.Visible:=False;
Edit1.Text:='';
Edit2.Text:='';
N16.Enabled:=False;
N17.Enabled:=False;
N12.Enabled:=True;
N13.Enabled:=False;
N5.Enabled:=False;
N22.Enabled:=False;
N4.Enabled:=False;
End
Else
goto VIC;
end;
procedure TForm1.N16Click(Sender: TObject);
Var
i,j,n:integer;
begin
n:=StrToInt(Edit1.Text);
StringGrid1.Cells[0,0]:='Годы';
StringGrid1.Cells[0,1]:='R(t)';
StringGrid1.Cells[0,2]:='L(t)';
StringGrid1.Cells[0,3]:='R-L';
For i:=0 to n do
For j:=0 to n do
Begin
StringGrid2.ColCount:=n+1;
StringGrid2.Width:=((n+1)*48)+i;
StringGrid2.RowCount:=3;
StringGrid2.Height:=27*3;
StringGrid3.ColCount:=n+1;
StringGrid3.Width:=((n+1)*48)+i;
StringGrid2.Cells[j,0]:=IntToStr(j);
End;
StringGrid3.Height:=2*27;
StringGrid1.ColCount:=2;
StringGrid1.Width:=2*48;
StringGrid1.RowCount:=3;
StringGrid1.Height:=3*27;
N17.Enabled:=True;
StringGrid3.SetFocus;
N5.Enabled:=True;
N4.Enabled:=True;
Label2.Caption:='';
End;
procedure TForm1.N22Click(Sender: TObject);
begin
If N22.Checked then
Begin
N22.Checked:=false;
StringGrid1.RowCount:=3;
StringGrid3.RowCount:=2;
StringGrid4.Hide;
StringGrid5.Hide;
End
else
Begin
N22.Checked:=true;
StringGrid1.RowCount:=5;
StringGrid3.RowCount:=3;
StringGrid4.Show;
StringGrid5.Show;
End;
end;
procedure TForm1.N10Click(Sender: TObject);
begin
Form3.Show;
end;
procedure TForm1.N11Click(Sender: TObject);
begin
AboutBox.ShowModal;
end;
procedure TForm1.N4Click(Sender: TObject);
var
f:Textfile;
i,j:integer;
t:string;
Begin
OpenDialog1.Filter:='Файлы задачи о замене оборудования *.zzo';
If OpenDialog1.Execute then
Begin
AssignFile(f,OpenDialog1.FileName);
Reset(f);
While Not Eof(f) do
Begin
For i:=0 to StringGrid3.RowCount+1 do
For j:=0 to StringGrid3.ColCount+1 do
Begin
Readln(f,t);
StringGrid3.Cells[j,i]:=t;
End;
End;
CloseFile(f);
End;
End;
procedure TForm1.N9Click(Sender: TObject);
begin
Form5.Show;
end;
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
If (Key<'0') or(Key>'9') then Key:=#0;
end;
procedure TForm1.Edit2KeyPress(Sender: TObject; var Key: Char);
begin
If (Key<'0') or(Key>'9') then Key:=#0;
N16.Enabled:=True;
Label2.Font.Color:=clBlue;
Label2.Font.Size:=12;
Label2.Caption:='Для продолжения нажмите клавишу F8, либо воспользуйтесь пунктом меню ОПЕРАЦИИ\ОПТИМИЗАЦИЯ.';
end;
procedure TForm1.Edit1Exit(Sender: TObject);
begin
If Edit1.Text='' then
Begin
MessageDlg('Должно быть введено какое-либо значение!',mtError,[mbOK],0);
Edit1.SetFocus;
End;
end;
procedure TForm1.Edit2Exit(Sender: TObject);
begin
If Edit2.Text='' then
Begin
MessageDlg('Должно быть введено какое-либо значение!',mtError,[mbOK],0);
Edit2.SetFocus;
End;
end;
procedure TForm1.StringGrid3KeyPress(Sender: TObject; var Key: Char);
Var
n:Integer;
begin
If (Key<'0') or(Key>'9') then Key:=#0;
n:=StrToInt(Edit1.Text);
If (StringGrid3.Cells[n,1]<>'')and(keyo) then
Begin
Label2.Font.Color:=clBlue;
Label2.Font.Size:=12;
Label2.Caption:='Чтобы увидеть результат нажмите кнопку F9, либо выберите пункт меню ОПЕРАЦИИ\РАСЧЕТ.';
End;
end;
procedure TForm1.N26Click(Sender: TObject);
begin
Form6.Show;
end;
procedure TForm1.N25Click(Sender: TObject);
var
f:System.Text;
i,j:integer;
g:string;
begin
SaveDialog1.Filter:='Файлы отчета (*.zoo)|*.zoo';
If SaveDialog1.Execute then Begin
AssignFile(f, SaveDialog1.FileName);
Rewrite(F);
g:=InputBox ('Работа с отчетом','Введите заголовок отчета:','');
Writeln(f,g);
Writeln (f);
Write (f,Label1.Caption);
Writeln (f,Edit1.Text);
Write (f,Label3.Caption);
Writeln (f,Edit2.Text);
For i:=0 to 1 do
Begin
Writeln (f);
For j:=0 to StringGrid5.ColCount+1 do
Begin
Write (f, StringGrid3.Cells[j,i],' ');
End;
End;
Writeln (f);
For i:=0 to StringGrid5.RowCount+1 do
Begin
Writeln (f);
For j:=0 to StringGrid5.ColCount+1 do
Begin
Write (f, StringGrid5.Cells[j,i],' ');
End;
End;
Writeln (f);
Write (f,Label2.Caption);
Closefile(f);
End;
End;
End.
Код второй формы
unit Unit2;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, jpeg, ExtCtrls;
type
TForm2 = class(TForm)
Image1: TImage;
Timer1: TTimer;
procedure Timer1Timer(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form2: TForm2;
implementation
uses Unit1, Unit5;
{$R *.DFM}
procedure TForm2.Timer1Timer(Sender: TObject);
begin
Form1.Show;
// Form5.Show;
Form2.Hide;
Timer1.Enabled:=False;
end;
end.
Код третьей формы
unit Unit3;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
OleCtrls, SHDocVw, ExtCtrls;
type
TForm3 = class(TForm)
WebBrowser1: TWebBrowser;
Panel1: TPanel;
procedure FormCreate(Sender: TObject);
procedure FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure Panel1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form3: TForm3;
implementation
{$R *.DFM}
procedure TForm3.FormCreate(Sender: TObject);
begin
Webbrowser1.Navigate(ExtractFilePath(Application.EXEName) + 'Help\Index.htm');
end;
procedure TForm3.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if key = VK_Escape then Form3.Hide;
end;
procedure TForm3.Panel1Click(Sender: TObject);
begin
Form3.Hide;
end;
end.
Код четвертой формы
unit Unit4;
interface
uses Windows, SysUtils, Classes, Graphics, Forms, Controls, StdCtrls,
Buttons, ExtCtrls;
type
TAboutBox = class(TForm)
Panel1: TPanel;
Copyright: TLabel;
OKButton: TButton;
ProductName: TLabel;
Label1: TLabel;
private
{ Private declarations }
public
{ Public declarations }
end;
var
AboutBox: TAboutBox;
implementation
{$R *.DFM}
end.
Код пятой формы
unit Unit5;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
OleCtrls, SHDocVw, StdCtrls, Buttons;
type
TForm5 = class(TForm)
WebBrowser1: TWebBrowser;
BitBtn1: TBitBtn;
procedure FormCreate(Sender: TObject);
procedure FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure BitBtn1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form5: TForm5;
implementation
uses Unit3;
{$R *.DFM}
procedure TForm5.FormCreate(Sender: TObject);
begin
Webbrowser1.Navigate(ExtractFilePath(Application.EXEName) + 'Help\Tip.htm');
end;
procedure TForm5.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if key = VK_Escape then Form5.Hide;
end;
procedure TForm5.BitBtn1Click(Sender: TObject);
begin
Close;
end;
end.
Код шестой формы
unit Unit6;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Buttons, Printers;
type
TForm6 = class(TForm)
OpenDialog1: TOpenDialog;
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
BitBtn3: TBitBtn;
PrintDialog1: TPrintDialog;
Memo1: TMemo;
procedure BitBtn1Click(Sender: TObject);
procedure BitBtn3Click(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure BitBtn2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form6: TForm6;
implementation
{$R *.DFM}
procedure TForm6.BitBtn1Click(Sender: TObject);
var
f:Textfile;
t:string;
Begin
Memo1.Lines.Clear;
OpenDialog1.Filter:='Файлы отчета (*.zoo)|*.zoo';
If OpenDialog1.Execute then
Begin
AssignFile(f,OpenDialog1.FileName);
Reset(f);
While Not Eof(f) do
Begin
Readln(f,t);
Memo1.Lines.Add(t);
End;
CloseFile(f);
End;
end;
procedure TForm6.BitBtn3Click(Sender: TObject);
begin
Close;
end;
procedure TForm6.FormShow(Sender: TObject);
begin
Memo1.Lines.Clear;
end;
procedure TForm6.BitBtn2Click(Sender: TObject);
Var
i,x,y:longint;
begin
If PrintDialog1.Execute then
Begin
Printer.Canvas.Font:=Memo1.Font;
Printer.BeginDoc;
x:=0;
y:=0;
For i:=0 to Memo1.Lines.Count-1 do
Begin
Printer.Canvas.TextOut(x,y,Memo1.Lines[i]);
y:=y+Printer.Canvas.TextExtent(Memo1.Lines[i]).cy;
End;
Printer.EndDoc;
End;
end; end.
Размещено на Allbest.ru
...Подобные документы
Построение экономико-математической модели задачи, комментарии к ней и получение решения графическим методом. Использование аппарата теории двойственности для экономико-математического анализа оптимального плана задачи линейного программирования.
контрольная работа [2,2 M], добавлен 27.03.2008Роль экономико-математических методов в оптимизации экономических решений. Этапы построения математической модели и решение общей задачи симплекс-методом. Составление экономико-математической модели предприятия по производству хлебобулочных изделий.
курсовая работа [1,3 M], добавлен 09.07.2015Сущность экономико-математической модели, ее идентификация и определение достаточной структуры для моделирования. Построение уравнения регрессии. Синтез и построение модели с учетом ее особенностей и математической спецификации. Верификация модели.
контрольная работа [73,9 K], добавлен 23.01.2009Построение экономико-математической модели оптимизации производства с учетом условия целочисленности. Расчет с помощью надстроек "Поиск решения" в Microsoft Excel оптимального распределения поставок угля. Экономическая интерпретация полученного решения.
контрольная работа [2,5 M], добавлен 23.04.2015Решение экономико-математических задач методами линейного программирования. Геометрическая интерпретация и решение данных задач в случае двух переменных. Порядок разработки экономико-математической модели оптимизации отраслевой структуры производства.
курсовая работа [116,4 K], добавлен 23.10.2011Метод динамического программирования и его основные этапы. Оптимальная стратегия замены оборудования. Минимизация затрат на строительство и эксплуатацию предприятий. Оптимальное распределение ресурсов в ООО "СТРОЙКРОВЛЯ" и инвестиций ПКТ "Химволокно".
курсовая работа [1,6 M], добавлен 08.01.2015Построение экономической модели по оптимизации прибыли производства. Разработка математической модели задачи по оптимизации производственного плана и её решение методами линейного программирования. Определение опорного и оптимального плана производства.
дипломная работа [311,3 K], добавлен 17.01.2014Решение задачи линейного программирования графическим способом. Построение математической модели задачи с использованием симплекс-таблиц, её экономическая интерпретация. Поиск оптимального плана перевозки изделий, при котором расходы будут наименьшими.
задача [579,8 K], добавлен 11.07.2010Построение математической модели, максимизирующей прибыль фирмы от реализации всех сделок в виде задачи линейного программирования. Сущность применения алгоритма венгерского метода. Составление матрицы эффективности, коэффициентов затрат и ресурсов.
контрольная работа [168,7 K], добавлен 08.10.2009Основные методы решения задачи оптимального закрепления операций за станками. Разработка экономико-математической модели задачи. Интерпретация результатов и выработка управленческого решения. Решение задачи "вручную", используя транспортную модель.
курсовая работа [1,0 M], добавлен 25.01.2013Построение одноиндексной математической модели задачи линейного программирования, ее решение графическим методом. Разработка путей оптимизации сетевой модели по критерию "минимум исполнителей". Решение задачи управления запасами на производстве.
контрольная работа [80,8 K], добавлен 13.12.2010Формулировка проблемы в практической области. Построение моделей и особенности экономико-математической модели транспортной задачи. Задачи линейного программирования. Анализ постановки задач и обоснования метода решения. Реализация алгоритма программы.
курсовая работа [56,9 K], добавлен 04.05.2011Правила построения экономико-математической модели влияния технико-экономических показателей работы предприятия на фондоотдачу. Проверка отсутствия мультиколлинеарности. Расчет коэффициента автокорреляции. Построение модели в стандартизированном виде.
контрольная работа [193,1 K], добавлен 18.11.2010Методы линейного программирования; теория транспортной задачи, ее сущность и решение на примере ООО "Дубровчанка+": характеристика предприятия, организационная структура и статистические данные. Построение и решение экономико-математической модели.
курсовая работа [652,5 K], добавлен 04.02.2011Характеристика моделируемого процесса - организация угодий. Оценка деятельности АО "Россия". Построение экономико-математической задачи. Обозначение неизвестных и формулирование систем ограничений. Построение числовой модели и решение задачи на ЭВМ.
курсовая работа [24,8 K], добавлен 25.04.2012Проверка однородности дисперсии и эффективности математической модели. Перевод уравнения регрессии из кодированных обозначений факторов в натуральные. Построение графиков зависимости выходной величины от управляемых факторов. Упрессовка сырого шпона.
курсовая работа [85,8 K], добавлен 13.01.2015Формулирование экономико-математической модели задачи в виде основной задачи линейного программирования. Построение многогранника решений, поиск оптимальной производственной программы путем перебора его вершин. Решение задачи с помощью симплекс-таблиц.
контрольная работа [187,0 K], добавлен 23.05.2010Двойственные оценки как мера влияния ограничений на функционал. Построение экономико-математической модели задачи. Выявление аномальных уровней временного ряда с использованием метода Ирвина. Построение графика общих годовых затрат по выгодному способу.
контрольная работа [282,7 K], добавлен 16.01.2012Особенности формирования и способы решения оптимизационной задачи. Сущность экономико-математической модели транспортной задачи. Характеристика и методика расчета балансовых и игровых экономико-математических моделей. Свойства и признаки сетевых моделей.
практическая работа [322,7 K], добавлен 21.01.2010Разработка экономико-математической модели и решение задачи линейного программирования с использованием математических методов. Транспортная задача в матричной постановке и ее свойства. Построение исходного допустимого плана. Критерий оптимальности.
курсовая работа [111,1 K], добавлен 16.01.2011