Задача о замене оборудования
Принципы составления математической модели динамического программирования. Формулировка и постановка задачи. Подготовка данных с учётом начальных условий. Разработка алгоритма на Delphi. Оптимизация сроков замены оборудования, обслуживания и ремонта.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 30.01.2016 |
Размер файла | 488,4 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://allbest.ru
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РФ ГОУ ВПО Дагестанский государственный университет
Факультет информатики и информационных технологий
Кафедры ИТ и МЭП
Курсовая работа
на тему «Задача о замене оборудования»
Выполнила: Студентка 2 курса
Ашурова Д.А.
Научный руководитель
Доцет кафедры ИТ иМЭП
Чапаев Н.М.
Махачкала 2013г.
Содержание
Введение
Глава 1. Теоретические основы решения задачи
1.1 Понятия динамического программирования. Составление математической модели динамического программирования
1.2 Этапы решения задачи динамического программирования. Формулировка задачи о замене оборудования
Глава 2. Подготовка данных и решение задачи о замене оборудования
2.1 Постановка и условие задачи. Решение задачи о замене оборудования
2.2 Состав и структура ПО
Заключение
Список литературы
Приложение
Введение
Во всем мире существует множество предприятий, которые используют для производства своей продукции машинное оборудование.
Важной экономической проблемой является своевременное обновление оборудования: станков, автомобилей, компьютеров и др. Старение оборудования включает физический и моральный износ, в результате чего увеличиваются затраты на ремонт и обслуживание, снижается производительность труда и ликвидная стоимость.
Многие предприятия сохраняют или заменяют оборудование по своей интуиции, не применяя методы динамического программирования. Применять эти методы целесообразно, так как это позволяет наиболее четко максимизировать прибыль или минимизировать затраты.
Цель этой курсовой работы изучить теорию решения задачи и разработать программный продукт для решения задачи о замене оборудования.
Для достижения поставленной цели, необходимо решить ряд следующих задач:
- Понять принцип решения задач динамического программирования.
- Составить математическую модель динамического программирования.
- Поэтапово рассмотреть решение задачи динамического программирования.
- Сформулировать задачу о замене оборудования.
- Решить задачу о замене оборудования по данному условию.
- Составить алгоритм решения задачи о замене оборудования.
- По составленному алгоритму разработать программу на языке программирования Delphi.
- Скомпилировать программу, и протестировать на наличие неточных результатов.
В курсовой работе содержаться три таблицы с пояснениями к практическому материалу. А также пять скриншотов показывающих результаты вычислений программы.
Задача о замене оборудования состоит в определении оптимальных сроков замены старого оборудования. Старение оборудования включает его физический и моральный износ.
В результате чего увеличиваются производственные затраты, растут затраты на обслуживание и ремонт, снижается производительность труда и ликвидная стоимость. Критерием оптимальности является либо прибыль от эксплуатации оборудования, либо суммарные затраты на эксплуатацию в течение планируемого периода.
Глава 1. Теоретические основы решения задачи
1.1 Понятия динамического программирования. Составление математической модели динамического программирования
Словосочетание «динамическое программирование» впервые было использовано в 1940-х годах Р. Беллманом для описания процесса нахождения решения задачи, где ответ на одну задачу может быть получен только после решения задачи, «предшествующей» ей. В 1953 г. он уточнил это определение до современного. Первоначально эта область была основана, как системный анализ и инжиниринг, которая была признана IEEE. Вклад Беллмана в динамическое программирование был увековечен в названии уравнения Беллмана, центрального результата теории динамического программирования, который переформулирует оптимизационную задачу в рекурсивной форме. замена оборудование программирование
Слово «программирование» в словосочетании «динамическое программирование» в действительности к "традиционному" программированию (написанию кода) почти никакого отношения не имеет и имеет смысл как в словосочетании «математическое программирование», которое является синонимом слова «оптимизация». Поэтому слово «программа» в данном контексте скорее означает оптимальную последовательность действий для получения решения задачи. К примеру, определенное расписание событий на выставке иногда называют программой. Программа в данном случае понимается как допустимая последовательность событий.
В задачах динамического программирования экономический процесс зависит от времени (от нескольких периодов (этапов) времени), поэтому находится ряд оптимальных решений (последовательно для каждого этапа), обеспечивающих оптимальное развитие всего процесса в целом. Задачи динамического программирования называются многоэтапными или многошаговыми. Динамическое программирование представляет собой математический аппарат, позволяющий осуществлять оптимальное планирование многошаговых управляемых процессов и процессов, зависящих от времени. Экономический процесс называется управляемым, если можно влиять на ход его развития. Управлением называется совокупность решений, принимаемых на каждом этапе для влияния на ход процесса.
В экономических процессах управление заключается в распределении и перераспределении средств на каждом этапе. Например, выпуск продукции любым предприятием -управляемый процесс, так как он определяется изменением состава оборудования, объемом поставок сырья, величиной финансирования и т.д. Совокупность решений, принимаемых в начале каждого года планируемого периода по обеспечению предприятия сырьем, замене оборудования, размерам финансирования и т.д., является управлением.
Казалось бы, для получения максимального объема выпускаемой продукции проще всего вложить максимально возможное количество средств и использовать на полную мощность оборудование. Но это привело бы к быстрому изнашиванию оборудования и, как следствие, к уменьшению выпуска продукции. Следовательно, выпуск продукции надо спланировать так, чтобы избежать нежелательных эффектов. Необходимо предусмотреть мероприятия, обеспечивающие пополнение оборудования по мере изнашивания, т.е. по периодам времени. Последнее хотя и приводит к уменьшению первоначального объема выпускаемой продукции, но обеспечивает в дальнейшем возможность расширения производства. Таким образом, экономический процесс выпуска продукции можно считать состоящим из нескольких этапов (шагов), на каждом из которых осуществляется влияние на его развитие.
Началом этапа (шага) управляемого процесса считается момент принятия решения (о величине капитальных вложений, о замене оборудования определенного вида и т.д.). Под этапом обычно понимают хозяйственный год.
Динамическое программирование, используя поэтапное планирование, позволяет не только упростить решение задачи, но и решить те из них, к которым нельзя применить методы математического анализа. Упрощение решения достигается за счет значительного уменьшения количества исследуемых вариантов, так как вместо того, чтобы один раз решать сложную многовариантную задачу, метод поэтапного планирования предполагает многократное решение относительно простых задач.
Планируя поэтапный процесс, исходят из интересов всего процесса в целом, т.е. при принятии решения на отдельном этапе всегда необходимо иметь в виду конечную цель.
Однако динамическое программирование имеет и свои недостатки. В отличие от линейного программирования, в котором симплексный метод является универсальным, в динамическом программировании такого метода не существует. Каждая задача имеет свои трудности, и в каждом случае необходимо найти наиболее подходящую методику решения. Недостаток динамического программирования заключается также в трудоемкости решения многомерных задач. При очень большом числе переменных решение задачи даже на современных ЭВМ ограничивается памятью и быстродействием машины. Например, если для исследования каждой переменной одномерной задачи требуется 10 шагов, то в двумерной задаче их количество увеличивается до 100, в трехмерной -до 1000 и т.д.
Составление математической модели динамического программирования:
Дополнительно введем следующие условные обозначения:
S - Состояние процесса;
Si - множество возможных состояний процесса перед i-м шагом;
Wi - выигрыш с i-го шага до конца процесса, i=
Можно определить следующие основные этапы составления математической модели задачи динамического программирования.
1. Разбиение задачи на шаги (этапы). Шаг не должен быть слишком мелким, чтобы не проводить лишних расчетов и не должен быть слишком большим, усложняющим процесс шаговой оптимизации.
2. Выбор переменных, характеризующих состояние s моделируемого процесса перед каждым шагом, и выявление налагаемых на них ограничений. В качестве таких переменных следует брать факторы, представляющие интерес для исследователя.
3. Определение множества шаговых управлений xi, i= и налагаемых на них ограничений, т.е. области допустимых управлений x.
4. Определение выигрыша
цi(s, xi), (1.1)
который принесет на i-м шаге управление xi, если система перед этим находилась в состоянии s.
5. Определение состояния s', в которое переходит система из состояния s под влиянием управления xi,
s'=fi(s, xi),(1.2)
где fi - функция перехода на i-м шаге из состояния s в состояние s'.
6. Составление уравнения, определяющего условный оптимальный выигрыш на последнем шаге, для составления s моделируемого процесса
Wm(S)=max{цm(s,xm)}. (1.3)
xm€X
7. Составление основного функционального управления динамического программирования, определяющего условный оптимальный выигрыш для данного состояния s с i-го шага и до конца процесса через уже известный условный оптимальный выигрыш с (i+1)-го шага и до конца:
Wi(S) = max{ цi(s,xi)+ Wi+1(fi(s,xi))}.(1.4)
xm€X
В это уравнение в уже известную функцию Wi+1(s), характеризующую условный оптимальный выигрыш с (i+1)-го шага до конца процесса, вместо состояния s подставлено новое состояние s'=fi (s,xi), в которое система переходит на i-м шаге под влиянием управления xi.
Заметим, что структура модели динамического программирования отличается от статической модели линейного программирования. Действительно, в моделях линейного программирования, управляющие переменные - это одновременно и переменные состояния моделируемого процесса, а в динамических моделях отдельно вводятся переменные управления xi, и переменные, характеризующие изменение состояния s под влиянием управления. Таким образом, структура динамических моделей более сложная, что естественно, так как в этих моделях дополнительно учитывается фактор времени.
Большинство методов исследования операций связано в первую очередь с задачами вполне определенного содержания. Классический аппарат математики оказался малопригодным для решения многих задач оптимизации, включающих большое число переменных и/или ограничений в виде неравенств. Несомненна привлекательность идеи разбиения задачи большой размерности на подзадачи меньшей размерности, включающие всего по нескольких переменных, и последующего решения общей задачи по частям. Именно на этой идее основан метод динамического программирования.
Метод можно использовать для решения весьма широкого круга задач, включая задачи распределения ресурсов, замены и управления запасами, задачи о загрузке. Характерным для динамического программирования является подход к решению задачи по этапам, с каждым из которых ассоциирована одна управляемая переменная. Набор рекуррентных вычислительных процедур, связывающих различные этапы, обеспечивает получение допустимого оптимального решения задачи в целом при достижении последнего этапа.
Происхождение названия динамическое программирование, вероятно, связано с использованием методов ДП в задачах принятия решений через фиксированные промежутки времени (например, в задачах управления запасами). Однако методы ДП успешно применяются также для решения задач, в которых фактор времени не учитывается. По этой причине более удачным представляется термин многоэтапное программирование, отражающий пошаговый характер процесса решения задачи.
Фундаментальным принципом, положенным в основу теории ДП, является принцип оптимальности. По существу, он определяет порядок поэтапного решения допускающей декомпозицию задачи (это более приемлемый путь, чем непосредственное решение задачи в исходной постановке) с помощью рекуррентных вычислительных процедур.
Динамическое программирование позволяет осуществлять оптимальное планирование управляемых процессов. Под «управляемыми» понимаются процессы, на ход которых мы можем в той или другой степени влиять.
1.2 Этапы решения задачи динамического программирования. Формулировка задачи о замене оборудования
После того как выполнены пункты 1-7, и математическая модель составлена, приступают к ее расчету.
Основные этапы решения задачи динамического программирования:
1. Определение множества возможных состояний Sm для последнего шага.
2. Проведение условной оптимизации для каждого состояния s€ Sm на последнем m-м шаге по формуле (1.3) и определение условного оптимального управления x(s), s€ Sm
3. Определение множества возможных состояний Si для i-го шага, i=2,3…,m-1.
4. Проведение условной оптимизации i-го шага, i=2,3…,m-1 для каждого состояния s€ Sm по формуле (1.4) и определение условного оптимального управления xi (s), s€ Sm , i=2,3…,m-1.
5. Определение начального состояния системы s1, оптимального выигрыша W1(S1) и оптимального управления x1(S1) по формуле (1.4) при i=1. Это есть оптимальный выигрыш для всей задачи W* =W1(x1*).
6. Проведение безусловной оптимизации управления. Для проведения безусловной оптимизации необходимо найденное на первом шаге оптимальное управление x1*=x1(s1) подставить в формулу (1.2) и определить следующее состояние системы s1=f1(s1,x1). Для измененного состояния найти оптимальное управление x2*=x2(s2), подставить в формулу (1.2) и т.д. Для i-го состояния s1 найти si+1=fi+1(si,xi*) и x*i+1(si+1) и т.д.
Динамическое программирование обычно придерживается двух подходов к решению задач:
· нисходящее динамическое программирование: задача разбивается на подзадачи меньшего размера, они решаются и затем комбинируются для решения исходной задачи. Используется запоминание для решений часто встречающихся подзадач;
· восходящее динамическое программирование: все подзадачи, которые впоследствии понадобятся для решения исходной задачи просчитываются заранее и затем используются для построения решения исходной задачи.
Этот способ лучше нисходящего программирования в смысле размера необходимого стека и количества вызова функций, но иногда бывает нелегко заранее выяснить, решение каких подзадач нам потребуется в дальнейшем.
Задача о замене оборудования состоит в определении оптимальных сроков замены старого оборудования. Критерием оптимальности являются либо доход от эксплуатации оборудования (задача максимизации), либо суммарные затраты на эксплуатацию (задача минимизации) в течение планируемого периода. Мы будем рассматривать задачу максимизации, и критерием оптимальности будет доход от эксплуатации оборудования.
Принцип оптимальности Беллмана -- важнейшее положение динамического программирования, которое гласит: оптимальное поведение в задачах динамического программирования обладает тем свойством, что каковы бы ни были первоначальное состояние и решение (т. е. “управление”), последующие решения должны составлять оптимальное поведение относительно состояния, получающегося в результате первого решения. Этот принцип можно выразить и рассуждая от противного: если не использовать наилучшим образом то, чем мы располагаем сейчас, то и в дальнейшем не удастся наилучшим образом распорядиться тем, что мы могли бы иметь.
Следовательно, если имеется оптимальная траектория, то и любой ее участок представляет собой оптимальную траекторию.
Этот принцип позволяет сформулировать эффективный метод решения широкого класса многошаговых задач.
Под функцией Беллмана в текущий момент времени понимаем минимальное значение критерия качества в текущий момент времени: Если t=0, то
Таким образом, значение функции Беллмана S(x,t) определяет минимальную величину функционала для любого начального состояния x(t) в любой момент времени t . С другой стороны, значение функции Беллмана совпадает со значением, так называемых текущих потерь на управление:
Эксплуатация оборудования планируется в течение n лет, но оборудование имеет тенденцию с течением времени стареть и приносить все меньшую годовую прибыль r(t), где t - возраст оборудования. При этом есть выбор: либо в начале любого года продать устаревшее оборудование за цену S(t), которая также зависит от возраста, и купить новое оборудование за цену P, либо оставить оборудование в эксплуатации. Требуется найти оптимальный план замены оборудования с тем, чтобы суммарная прибыль за все n лет была максимальной, учитывая, что к началу эксплуатационного периода возраст оборудования составляет t0 лет.
Входными данными к этой задаче являются:
r(t) - доход от эксплуатации в течение одного года оборудования возраста t лет;
S(t) - остаточная стоимость оборудования;
P - цена нового оборудования;
t0 - начальный возраст оборудования.
Переменной управления на k-м шаге является логическая переменная, которая может принимать два значения: С - сохранить, З - заменить оборудование в начале k-го года. Переменной состояния системы на k-м шаге является переменная t.
Функцию Беллмана Fk(t) определим как максимально возможную прибыль от эксплуатации оборудования за годы с k-го по n-й, если к началу k-го года возраст оборудования составлял t лет. Применяя то или иное управление, мы переводим систему в некоторое новое состояние, а именно, если в начале k-го года мы оборудование сохраняем, то к началу следующего (k+1)-го года его возраст увеличится на 1 (состояние системы станет равно t+1), за год оно принесет прибыль r(t), и максимально возможная прибыль за оставшиеся годы (с (k+1)-го по n-й) составит Fk+1(t+1). Если же в начале k-го года принимаем решение на замену оборудования, то мы продаем старое оборудование возраста t лет за цену S(t), покупаем новое оборудование за цену P и эксплуатируем его в течение k-го года, что приносит за этот год прибыль r(0). К началу следующего года возраст оборудования составит 1 год, и за все годы с (k+1)-го по n-й максимально возможная прибыль будет Fk+1(1).
Из этих двух вариантов управления выбираем тот, который приносит большую прибыль. Уравнение Беллмана на каждом шаге имеет вид:
. (1)
Функцию Беллмана для первого шага (k=n) легко вычислить - это максимально возможная прибыль только за последний n-й год:
. (2)
Вычислив значение функции Fn(t) по формуле (2), далее можно посчитать Fn-1(t), затем Fn-2(t) и так далее до F1(t0). Функция F1(t0) представляет собой максимально возможную прибыль за все годы (с 1-го по n-й). Этот максимум достигается при некотором управлении, применяя которое в течение первого года, мы определяем возраст оборудования к началу второго года (в зависимости от того, какое управление является для первого года оптимальным, это будет 1 или t0+1). Для данного возраста оборудования по результатам, полученным на этапе условной оптимизации, мы смотрим, при каком управлении достигается максимум прибыли за годы со 2-го по n-й и так далее. На этапе безусловной оптимизации отыскиваются годы, в начале которых следует произвести замену оборудования.
Глава 2. Подготовка данных и решение задачи о замене оборудования
2.1 Постановка и условие задачи. Решение задачи о замене оборудования
Программа «Решение задач о замене оборудования» предназначена для предприятий, занимающихся каким-либо родом деятельности, требующего использования определенного оборудования. В силу ряда причин, оборудование изнашивается физически, т.е. ломается и не подлежит ремонту или возникают такие неисправности, при которых проще купить новое оборудование, чем ремонтировать старое, либо изнашивается морально, т.е. темпы роста экономического развития отрасли производства этого оборудования очень велики. Таким образом, для того, чтобы «производство продукции» на таком оборудовании достигало максимального эффекта, его необходимо периодически менять. Эта программа подсчитывает количество лет, через которое нужно сменить оборудование, чтобы получить максимальную прибыль.
Для разработки программы «Решение задач о замене оборудования» был использован язык программирования Delphi XE3. В настоящее время эта среда объектно-ориентированного программирования очень популярна, ее основой является язык Object Pascal. Она позволяет создавать приложения различной степени сложности - от простейших программ до профессиональных, предназначенных для работы с базами данных. Кроме того, помощь по программе оформлена в виде chm документа с помощью программы HelpNDoc.
Вся работа с программой основана на работе с меню, с его описанием можно ознакомиться в пункте меню «Помощь/Содержание/Работа с меню».
Условие задачи: Найти оптимальный план замены оборудования на 6-летний период, если известны производительность оборудования r(t) и остаточная стоимость оборудования S(t) в зависимости от возраста, стоимость нового оборудования P (заданы в таблицах). Возраст оборудования к началу эксплуатации равен 1 год.
Таблица 1.
t |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
|
r(t) |
10 |
10 |
9 |
8 |
8 |
7 |
6 |
|
S(t) |
11 |
8 |
7 |
7 |
6 |
6 |
5 |
P = 11 - цена нового оборудования
Решение задачи: Алгоритм решения задачи о замене оборудования состоит из следующих шагов:
1. Задать предполагаемый срок эксплуатации
2. Определить входные параметры (r(t) - доход от эксплуатации в течение одного года оборудования возраста t лет и S(t) - остаточную стоимость оборудования)
3. Задать цену нового оборудования (P)
Рассчитать функцию Беллмана Fk(t) для каждого года эксплуатации по формуле: и определить, следует ли заменять используемое оборудование.
На первом шаге, где k = 6 и возможные состояния системы t = 1, 2, …, 6, расчет будем вести по формуле (2):
Полученные значения: F6(1) = 10, F6(2) = 9, F6(3) = 8, F6(4) = 8, и т.д.
Далее расчет ведется по формуле(1):
Составим матрицу значений функции Беллмана:
Таблица 2. Матрица функций Беллмана.
k |
t |
||||||
1 |
2 |
3 |
4 |
5 |
6 |
||
1 |
52 |
||||||
2 |
44 |
42 |
|||||
3 |
35 |
34 |
33 |
||||
4 |
27 |
25 |
25 |
24 |
|||
5 |
19 |
17 |
16 |
15 |
15 |
||
6 |
10 |
9 |
8 |
8 |
7 |
6 |
Теперь составим матрицу логических значений (Сохранить/Заменить), следуя правилу:
ЕСЛИ >= то значение = «Сохранить», иначе, значение «Заменить».
Результат представлен в таблице 3:
Таблица 3. Матрица логических значений
k |
t |
||||||
1 |
2 |
3 |
4 |
5 |
6 |
||
1 |
С |
||||||
2 |
С |
С |
|||||
3 |
С |
С |
З |
||||
4 |
С |
С |
З |
З |
|||
5 |
С |
С |
С |
С |
З |
||
6 |
С |
С |
С |
С |
С |
С |
Выделенное в таблице значение функции Беллмана соответствует замене оборудования.
Максимально возможная прибыль при эксплуатации оборудования достигается, если замену оборудования провести в начале третьего года его эксплуатации.
2.2 Состав и структура ПО
Разработка программы производилась на языке программирования BorlandDelphi XE3 при помощи операционной системы Microsoft Windows XP Professional
При разработке программы, использовались компоненты Delphi:
String Grid - для заполнения справочников и отображения результатов
Edit - для ввода значений
Button - для создания кнопки
Label - создание меток, для удобства использования
Image - изображения
MainMenu - Меню программы
SaveDialog - сохранить диалог
OpenDialog - открыть диалог
GroupBox
При разработки программного обеспечения так же использовались следующие системные утилиты:
Антивирусные программа (Dr.Web 4.44)
Программы архиваторы (WinRar v3.45).
утилиты Microsoft Office (Microsoft Word, Excel).
графические редакторы (PhotoShop v CS3)
При разработке программного обеспечения использовался ПК со следующими характеристиками:
Процессор:Intel Pentium(R) 3.00 GHz
Оперативная память: 1Gb DDR2 PC 533
Видео карта:NVIDIA Gee Force FX 6600 128Mb
Жесткий диск: 200 Gb
Монитор: 17" 1280x1025@75Hz
При запуске программы пользователь видит форму, где имеются поля для ввода входных параметров. Входными данными к этой задаче являются:
n - планируемое время эксплуатации оборудования;
r(t) - доход от эксплуатации в течение одного года оборудования возраста t лет;
S(t) - остаточная стоимость оборудования;
P - цена нового оборудования.
Рисунок 1 - Внешний вид программы при запуске
Цифрами на рисунке отмечено:
1. Текстовое поле для ввода планируемого времени эксплуатации оборудования (n);
2. Кнопка «Далее», при нажатии на эту кнопку выстраивается таблица, состоящая из (n+2) колонок для ввода значений r(t) и S(t);
3. Таблица для ввода значений r(t) - доход от эксплуатации в течение одного года оборудования возраста t лет и S(t) - остаточная стоимость оборудования;
4. Текстовое поле для ввода цены;
5. Кнопка «Рассчитать», для начала расчета.
Стоит отметить, что программа защищена от ввода некорректных данных (позволяется вводить только численные значения).
Введя все необходимые данные, пользователь нажимает кнопку «Рассчитать» и видит результат:
Рисунок 2 - Результат вычислений
В результате работы во второй таблице отображаются результаты вычисления функции Беллмана, а в третьей таблице значения «Сохранить/Заменить».
Если пользователь хочет изменить параметры задачи, необходимо нажать кнопку «Сначала».
Рассмотрим примеры использования программы:
Задача: Найти оптимальный план замены оборудования на 6-летний период, если известны производительность оборудования r(t):
r(0)=10; r(1)=10; r(2)=9; r(3)=8; r(4)=8; r(5)=7; r(6)=6;
и остаточная стоимость оборудования S(t) в зависимости от возраста:
S(0)=11; S(1)=8; S(2)=7; S(3)=7; S(4)=6; S(5)=6; S(6)=5;
стоимость нового оборудования P =11.
Запускаем программу. Вводим данные.
Рисунок 3 - Демонстрация примера 1
Рассчитываем:
Рисунок 4 - Демонстрация примера 1
В третьей таблице в ячейке (3,3) водим значение «З». Это значит, что для максимизации прибыли оборудование необходимо заменить в третий год использования. Функция Беллмана при этом достигает значения 33 (из таблицы 2).
Пример 2. Допустим, предполагаемый срок эксплуатации равен 4 года, а стоимость нового оборудования возросла до 20 единиц. Тогда решение будет следующим:
Рисунок 5 - Демонстрация примера 2
При таких исходных данных оборудование менять не стоит. Максимальная прибыль равна 35.
Завершить работу с программой можно в любой момент времени. При завершении работы программы, будет предложено подтверждение завершения работы программы. В этом диалоговом окне пользователь может продолжить работать с программой, либо отказаться от продолжения и выйти.
Заключение
В ходе выполнения курсовой работы была изучена теория решения задачи о замене оборудования и разработаны алгоритм и его программная реализация, позволяющая пользователю находить решение задачи при любых входных параметрах.
Для отладки и тестирования алгоритма использовался табличный процессор MS Excel 2003.
Для разработки программного обеспечения использовалась среда программирования Delphi.
Программа имеет простой, интуитивно понятный интерфейс. Программа предусматривает защиту от ввода некорректных данных.
Список литературы
1. Адамадзиев К.Р. Магомедгаджиев Ш.М. Математическая экономика: Учебное пособие. - Махачкала: Издательско-полиграфический центр ДГУ, 2009.-117 с.
2. Адамадзиев К.Р., Адамадзиева А.К., Экономико-математические методы и модели: учебно-методическое пособие для практических и лабораторных занятий. - Махачкала: Изд. ДГУ, 2003.
3. Исследование операций в экономике /Н.Ш. Кремер, Б.А. Путко, И.М. Тришин, М.Н. Фридман; Под ред. проф. Н.Ш. Кремера. - М.: ЮНИТИ, 2000
4. Кузнецов А.В., Холод Н.И., Костевич Л.С. Руководство к решению задач по математическому программированию.- Мн.: Выш. шк., 2001.
5. Хазанова Л.Э. Математические методы в экономике: Учебное пособие.- М.: Издательство БЕК, 2002.
6. Шапкин А.С., Мазаева Н.П. Математические методы и модели исследования операций: Учебник.-М.: Издательско - торговая корпорация «Дашков и Ко», 2003.
7. Кормен, Т., Лейзерсон, Ч., Ривест, Р., Штайн, К. Глава 15. Динамическое программирование // Алгоритмы: построение и анализ = Introduction to Algorithms / Под ред. И. В. Красикова. -- 2-е изд. -- М.: Вильямс, 2005. -- 1296 с. -- ISBN 5-8459-0857-4
8. Sanjoy Dasgupta , Christos H. Papadimitriou, Umesh Vazirani Algorithms = Algorithms. -- 1-е изд. -- McGraw-Hill Science/Engineering/Math, 2006. -- С. 336. -- ISBN 0073523402
9. Щербина О. А. Методологические аспекты динамического программирования // Динамические системы, 2007, вып. 22. -- c.21-36.
10. Щербина О.А. О несериальной модификации локального алгоритма декомпозиции задач дискретной оптимизации // Динамические системы, 2005, вып. 19-179 с.
11. Конюховский П.В. Математические методы исследования операций: пособие для подготовки к экзамену. - Спб.:Питер, 2001-192 с.
12. Давыдов, Э.Г. Исследование операций : учеб. пособие для студ. вузов / Э.Г. Давыдов. - М. : Высш. школа, 1990. - 383 с.
13. Курицкий Б.К. Поиск оптимальных решений средствами Excel 7.0. - Спб.: BHV, 1997.-384 с.
14. Шикин Е.В. Чхартишвили А.Г. Математические методы и модели в управлении: Учебник для ВУЗов. - М.: Дело, 2000.-440 с.
Приложение
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Grids, StdCtrls, Math;
type
TForm1 = class(TForm)
Edit1: TEdit;
Label1: TLabel;
Label2: TLabel;
StringGrid1: TStringGrid;
Button1: TButton;
Button2: TButton;
Button3: TButton;
StringGrid2: TStringGrid;
StringGrid3: TStringGrid;
Edit2: TEdit;
Label3: TLabel;
procedure Button3Click(Sender: TObject);
procedure StringGrid1KeyPress(Sender: TObject; var Key: Char);
procedure Button2Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
// Процедура кнопки «Далее»
procedure TForm1.Button1Click(Sender: TObject);
var i:integer; n:integer;
begin
n:=strtoint(Edit1.Text);
StringGrid1.Visible:=true;
Процедура форма StringGrida
StringGrid1.ColCount:=n+2;
StringGrid1.RowCount:=3;
StringGrid1.Cells[0,0]:='t';
StringGrid1.Cells[0,1]:='r(t)';
StringGrid1.Cells[0,2]:='S(t)';
for i := 1 to StringGrid1.ColCount - 1 do
StringGrid1.Cells[i,0]:=inttostr(i-1);
// Кнопка «Сначала»
procedure TForm1.Button2Click(Sender: TObject); var i, j: Integer;
begin
with StringGRid1 do
for i:=1 to RowCount-1 do
for j:=1 to ColCount-1 do
Cells[j, i]:='';
with StringGRid2 do
for i:=1 to RowCount-1 do
for j:=1 to ColCount-1 do
Cells[j, i]:='';
with StringGRid3 do
for i:=1 to RowCount-1 do
for j:=1 to ColCount-1 do
Cells[j, i]:='';
end;
//// Процедура кнопки «Рассчитать»
procedure TForm1.Button3Click(Sender: TObject);
var n,i,P,k:integer;
begin
Form1.ClientHeight:=630;
n:=strtoint(Edit1.Text);
P:=StrToInt(Edit2.Text);
StringGrid2.Visible:=true;
StringGrid3.Visible:=true;
StringGrid2.ColCount:=n+1;
StringGrid2.RowCount:=n+1;
StringGrid3.ColCount:=n+1;
StringGrid3.RowCount:=n+1;
//Процедура заполнения первой таблицы
for i:= 1 to StringGrid1.ColCount - 2 do
begin
StringGrid2.Cells[i,0]:=inttostr(i);
StringGrid3.Cells[i,0]:=inttostr(i);
StringGrid2.Cells[0,i]:=inttostr(i);
StringGrid3.Cells[0,i]:=inttostr(i);
StringGrid2.Cells[i,n]:=IntToStr(Max(StrToInt(StringGrid1.Cells[i+1,1]),(StrToInt(StringGrid1.Cells[i+1,2])-P+StrToInt(StringGrid1.Cells[1,1]))));
end;
for i:= StringGrid2.RowCount - 2 downto 1 do
begin
n:=n-1;
for k:= 1 to n do
StringGrid2.Cells[k,i]:=IntToStr(Max((StrToInt(StringGrid1.Cells[k+1,1])+StrToInt(StringGrid2.Cells[k+1,i+1])),(StrToInt(StringGrid1.Cells[k+1,2])-P+StrToInt(StringGrid1.Cells[1,1])+StrToInt(StringGrid2.Cells[1,i+1]))));
end;
n:=strtoint(Edit1.Text);
//Процедура заполнения второй таблицы
for i:= 1 to StringGrid1.ColCount - 2 do
begin
if StrToInt(StringGrid1.Cells[i+1,1])>=(StrToInt(StringGrid1.Cells[i+1,2])-P+StrToInt(StringGrid1.Cells[1,1])) then
StringGrid3.Cells[i,n]:='C' else StringGrid3.Cells[i,n]:='З'
end;
for i:= StringGrid2.RowCount - 2 downto 1 do
begin
n:=n-1;
for k:= 1 to n do
if (StrToInt(StringGrid1.Cells[k+1,1])+StrToInt(StringGrid2.Cells[k+1,i+1]))>=(StrToInt(StringGrid1.Cells[k+1,2])-P+StrToInt(StringGrid1.Cells[1,1])+StrToInt(StringGrid2.Cells[1,i+1])) then
StringGrid3.Cells[k,i]:='C' else
begin
StringGrid3.Cells[k,i]:='З';
end;
end;
end;
procedure TForm1.StringGrid1KeyPress(Sender: TObject; var Key: Char);
begin
if not (key in ['0'..'9',#8]) then key:=#0;
end;
end.
Размещено на Allbest.ru
...Подобные документы
Постановка задачи динамического программирования. Составление основного функционального управления динамического программирования, определяющего условный оптимальный выигрыш для данного состояния. Выбор оптимальной стратегии замены оборудования.
курсовая работа [873,9 K], добавлен 02.07.2014Основные понятия и принципы динамического программирования, реккурентность природы задач данного типа и функциональные уравнения Беллмана. Разработка структуры блок-схемы и реализация на ЭВМ построенного алгоритма на выбранном языке программирования.
курсовая работа [30,2 K], добавлен 26.11.2010Постановка задачи динамического программирования. Поведение динамической системы как функция начального состояния. Математическая формулировка задачи оптимального управления. Метод динамического программирования. Дискретная форма вариационной задачи.
реферат [59,9 K], добавлен 29.09.2008Приобретение теоретических и практических навыков программирования на языке Паскаль. Математическая формулировка задачи и выбор метода обработки информации. Разработка алгоритма и его описание. Описание программы. Форма представления исходных данных.
курсовая работа [224,3 K], добавлен 11.02.2016Формулировка общей задачи математического программирования. Классификация задач нелинейного программирования. Понятие о функции Лагранжа. Задача теоремы Куна-Таккера. Экономическая интерпретация множителей Лагранжа, формулирование условий оптимальности.
презентация [669,1 K], добавлен 25.07.2014Функционирование систем массового обслуживания с разными типами заявок. Построение математической модели. Постановка задачи оптимизации среднего времени ожидания. Решение задачи оптимизации и разработка программного кода для оптимизации системы.
курсовая работа [538,5 K], добавлен 11.08.2017Критерий эффективности и функции в системе ограничений. Общая постановка задачи линейного программирования. Составление математической модели задачи. Алгоритмы решения задачи симплексным методом. Построение начального опорного решения методом Гаусса.
курсовая работа [232,4 K], добавлен 01.06.2009Методы решения задач линейного программирования: планирования производства, составления рациона, задачи о раскрое материалов и транспортной. Разработка экономико-математической модели и решение задачи с использованием компьютерного моделирования.
курсовая работа [607,2 K], добавлен 13.03.2015Функционирование систем массового обслуживания с разными типами заявок. Построение математической модели, постановка задачи оптимизации среднего времени ожидания. Решение задачи оптимизации системы. Разработка программного кода для оптимизации системы.
дипломная работа [581,7 K], добавлен 27.10.2017Алгоритм симплекс-метода. Задача на определение числа и состава базисных и свободных переменных, построение математической модели. Каноническая задача линейного программирования. Графический метод решения задачи. Разработки математической модели в Excel.
курсовая работа [1,1 M], добавлен 18.05.2013Решение задачи линейного программирования симплекс-методом: постановка задачи, построение экономико-математической модели. Решение транспортной задачи методом потенциалов: построение исходного опорного плана, определение его оптимального значения.
контрольная работа [118,5 K], добавлен 11.04.2012Класс задач, к которым применяются методы динамического программирования. Решения задачи распределения капитальных вложений между предприятиями путем построения математической модели. Программа "Максимизации капиталовложений" на базе Microsoft Excel.
курсовая работа [1,4 M], добавлен 28.10.2014Формулировка, спецификация и математическая постановка задачи. Описание схемы алгоритма. Рассмотрение результата машинного тестирования программы. Получение на занятиях навыков алгоритмизации и программирования задач на языке высокого уровня C#.
курсовая работа [268,2 K], добавлен 22.03.2015Описание решения задачи, ее постановка, общий подход к решению. Представление исходных данных, условий задачи и целей ее решения. Составление алгоритма решения поставленной задачи. Написание программного обеспечения и тестирование конечного продукта.
курсовая работа [1,1 M], добавлен 03.07.2011Структура математической модели линейной задачи, алгоритм симплекс-метода. Разработка программы: выбор языка программирования, входные и выходные данные, пользовательский интерфейс. Описание программы по листингу, тестирование, инструкция по применению.
курсовая работа [1,2 M], добавлен 31.05.2013Определение совокупности шаговых управлений. Решение задач динамического программирования двухэтапным способом. Решение последовательности задач условной оптимизации. Оптимальное распределение памяти, политика замены оборудования, замена форвардера.
презентация [674,9 K], добавлен 30.10.2013Задачи, решаемые методом динамического программирования. Основные этапы нахождения деревянного алгоритма решения задачи. Выполнение алгоритма Прима. Построение Эйлерового цикла. Решение задач средствами Excel. Алгоритм основной программы - Derevo.
курсовая работа [586,3 K], добавлен 04.04.2015Математическое программирование. Линейное программирование. Задачи линейного программирования. Графический метод решения задачи линейного программирования. Экономическая постановка задачи линейного программирования. Построение математической модели.
курсовая работа [581,5 K], добавлен 13.10.2008Проведение сравнительного анализа языков программирования. Создание алгоритма и специфика составления математической модели программы "Механические часы, показывающие текущее время" в среде Microsoft Visual Studio 2010, на базе языка программирования С++.
курсовая работа [408,9 K], добавлен 11.03.2013Разработка приложения для шифрования данных с помощью алгоритма DES5: процесс шифрования, расшифрования, получение ключей. Спецификация программы, процедуры и функции; описание интерфейса пользователя. Реализация задачи в среде программирования DELPHI.
курсовая работа [812,6 K], добавлен 27.03.2012