1 Задача оптимального программирования производства при ограниченных ресурсах. Рассмотрим проблему оптимального использования ресурсов с целью максимизации валовой прибыли, путем подбора ассортимента выпускаемой продукции. Любое производство нуждается в определенном наборе, количестве и качестве ресурсов(сырье, энергия..) Как правило рынок ресурсов является весьма ограниченным, и на нем побеждает тот покупатель, который способен за преобретен.ресурсов заплатить больше. Поэтому каждый производитель заинтересован в том, чтобы приобретенные ресурсы, запущенные в его технологию, принисли бы мах прибыль после их переработки в готовую продукцию и ее реализации. Каждое производство способно выпускать строго определенный ассортимент изделий причем каждое изделие в данный момент времени имеет на рынке готовой продукции свою определенную цену. Производство того или иного изделия нуждается в потреблении тех или иных ресурсов в определенном соотношении. Итак некоторое предприятие способно выпускать некоторую продукцию видов 6, перед собой имеет цель-используя имеющиеся запасы ресурсов получить мах валовую прибыль. Предприятие имеет в своем распоряжении три вида ресурсов: сырье, топливо и деньги. Цель- мах-ть прибыль от реализации готовой продукции. Понятно, что прибыль зависит от цены, установивш.на кажд.из видов продукции, и от кол-ва реализованных изделий. Прибыль F=а1х1+а2х2+..а6х6, где х1..х6 кол-во реализ.изделий по цене а1..а6 за 1 шт..Данное выражение наз.целевой функцией и решение задачи сводится к поиску мах ее значения путем нахожд.перемен.х1..х6. Выбор количества выпускаемых единиц продукции х1..х6 ограничен имеющ.ресурсами Ограничения: по топливу Т1х1+…Т6х6≤Тзап., по сырью С1х1..С6х6≤ Сзап., по деньгам Д1х1..Д6х6≤Дзап. Решение произв. в ЕХЕIIE. Заносим исходные данные в ЕХЕЛЬ, после заполнения таблиц исходных данных оформляем целевую функцию задачи, используя функцию СУММПРОИЗВ из категории математич, мы можем найти сумму произведений элементов двух диапазонов ячеек «х(количество)» и «а(прибыль)». Т.к. «х(количество)» пока не заполнен то равен 0, знач.целевой функции=0. Формулы ограничен.тоже составл. СУММПРОИЗВ и равны пока 0 т.к. «х(количество)» пока не заполнен. После того как формы будут заполнены из «Сервис» пункт «Поиск решения» возникает окно «Поиск решения». В качестве целевой ячейки поиска решения, курсором мыши укажем ячейку целевой функции (F13 например). После этого в окне ввода «установить целевую ячейку» появится ссылка на нее. Установим текущий курсор в окно «Ограничения» и нажмем кнопку «добавить». Используя возникшее окно «добавление ограничений» внесем ограничения по первому ресурсу (по топливу). После этого нажав кнопку «добавить» окна «добавления ограничен.», внесем ограничения по остальным ресурсам, после нажмем «ОК». Теперь нужно проконтролировать чтобы использовался симплексный метод, нажмем кнопку «Параметры..» окна «Поиск реш» – наличие пометки «Линейная модель» – «ОК» и в окне «Поиск реш.» – «Выполнить». В рез-те найдено мах. значен. целевой функции, необходимый для этого набор выпускаемых изделий и значений ограничений. | 2 Синтаксис реляционной алгебры. В реализациях конкретных реляционных СУБД сейчас не используется в чистом виде ни реляционная алгебра, ни реляционное исчисление. Фактическим стандартом доступа к реляционным данным стал язык SQL (Structured Query Language). Язык SQL представляет собой смесь операторов реляционной алгебры и выражений реляционного исчисления, использующий синтаксис, близкий к фразам английского языка и расширенный дополнительными возможностями, отсутствующими в реляционной алгебре и реляционном исчислении. Вообще, язык доступа к данным называется реляционно полным, если он по выразительной силе не уступает реляционной алгебре (или, что то же самое, реляционному исчислению), т.е. любой оператор реляционной алгебры может быть выражен средствами этого языка. Именно таким и является язык SQL. Реляционная алгебра представляет собой набор операторов, использующих отношения в качестве аргументов, и возвращающие отношения в качестве результата. Таким образом, реляционный оператор f выглядит как функция с отношениями в качестве аргументов: R=f(R1, R2, R3…Rn) Реляционная алгебра является замкнутой, т.к. в качестве аргументов в реляционные операторы можно подставлять другие реляционные операторы, подходящие по типу: Теоретико-множественные операторы: Объединение, Пересечение, Вычитание, Декартово произведение Специальные реляционные операторы: Выборка, Проекция, Соединение, Деление Объединением двух совместимых по типу отношений A и B называется отношение с тем же заголовком, что и у отношений A и B, и телом, состоящим из кортежей, принадлежащих или A, или B, или обоим отношениям. Синтаксис операции объединения: A UNION B SELECT * FROM A UNION SELECT * FROM B; Пересечением двух совместимых по типу отношений A и B называется отношение с тем же заголовком, что и у отношений A и B, и телом, состоящим из кортежей, принадлежащих одновременно обоим отношениям A и B. A INTERSECT B SELECT * FROM A INTERSECT SELECT * FROM B; Вычитанием двух совместимых по типу отношений A и B называется отношение с тем же заголовком, что и у отношений A и B, и телом, состоящим из кортежей, принадлежащих отношению A и не принадлежащих отношению B. A MINUS B Оператор SQL:SELECT * FROM A EXCEPT SELECT * FROM B Декартово произведение двух отношений должно быть множеством упорядоченных пар кортежей. Декартово произведение двух отношений А и В, где А и В не имеют общих имен атрибутов, определяется как отношение с заголовком, который представляет собой сцепление двух заголовков исходных отношений А и В, и телом, состоящим из множества всех кортежей t, таких, что t представляет собой сцепление кортежа а, принадлежащего отношению А, и кортежа b, принадлежащего отношению В. Кардинальное число результата равняется произведению кардинальных чисел исходных отношений А и В, а степень равняется сумме их степеней. A TIMES B SELECT A.Поле1, A.Поле2, …, B.Поле1, B.Поле2, … FROM A, B; или SELECT A.Поле1, A.Поле2, …, B.Поле1, B.Поле2, … FROM A CROSS JOIN B; Выборкой (ограничением, селекцией) на отношении A с условием C называется отношение с тем же заголовком, что и у отношения A, и телом, состоящем из кортежей, значения атрибутов которых при подстановке в условие Cдают значение ИСТИНА. Cпредставляет собой логическое выражение, в которое могут входить атрибуты отношения Aи (или) скалярные выражения. В простейшем случае условие Cимеет вид , где - один из операторов сравнения ( и т.д.), а Xи Y- атрибуты отношения A или скалярные значения. Такие выборки называются -выборки (тэта-выборки) или -ограничения, -селекции. Синтаксис операции выборки: A WHERE C, или A WHERE X@Y Оператор SQL: SELECT * FROM A WHERE c; Проекцией отношения A по атрибутам X,Y…Z, где каждый из атрибутов принадлежит отношению A, называется отношение с заголовком (X,Y…Z )и телом, содержащим множество кортежей вида (x,y…z ), таких, для которых в отношении Aнайдутся кортежи со значением атрибута Xравным x, значением атрибута Yравным y, …, значением атрибута Zравным z. Синтаксис операции проекции: A[X,Y…Z] SELECT DISTINCT X, Y, …, Z FROM A; Соединение Операция соединения отношений, наряду с операциями выборки и проекции, является одной из наиболее важных реляционных операций. Обычно рассматривается несколько разновидностей операции соединения: Общая операция соединения, -соединение (тэта-соединение) , Экви-соединение , Естественное соединение Наиболее важным из этих частных случаев является операция естественного соединения. Все разновидности соединения являются частными случаями общей операции соединения. Общая операция соединения Определение 8. Соединением отношений A и Bпо условию C называется отношение (A TIMES B) WHERE C Cпредставляет собой логическое выражение, в которое могут входить атрибуты отношений A и B и (или) скалярные выражения. Таким образом, операция соединения есть результат последовательного применения операций декартового произведения и выборки. Если в отношениях A и B имеются атрибуты с одинаковыми наименованиями, то перед выполнением соединения такие атрибуты необходимо переименовать. | 3 Средства повышения надежности работы приложений. Исключительные ситуации. Надежность программного изделия, как любого изделия этапа проектирования определяется надежностью всех видов обеспечения и ошибками проекта. Типичные ошибки проектирования программных проуктов: -
Ошибки описания исключительных ситуаций -
алгоритмические ошибки -
программные ошибки -
технологические ошибки Повышает надежность обработка исключительных ситуаций. Exception (иск. ситуация) –это ошибки времени выполнения В Delphi введен специальный класс Exceptions который инкапсулирует основные характеристики и методы доступа Exception TObjection | Exception |_Eabaut (скрытое исключение) |_EInOutError(ввода вывода) |_EIndError(ошибки при выполнении целочисленных опрераций) Исключительная ситуация или исключение – это ошибки времени выполнения, переполнение, деление на 0, невозможность приведения экземпляра класса к указанному типу, не готовность устройства. В приложениях D5 можно использовать спец. класс Exception. Он инкапсулирует основные характеристики и методы доступа к этим характеристикам. При возникновении исключ. ситуации создается экземпляр класса соответствующего исключения Raise. Происходит вызов стандартной процедуры Raise, которая помещает исключения в фрэйм исключений. В SysUtils описана глобальная переменная отражаемая содержимое фрэйма. Использование экземпляра новых классов исключений осуществляется с помощью 2ух основных конструкций: -
try {что защищаем} finally {код завершения что делаем если возникла ИС} end; -
try {-------------} except {обработка ИС} end. Если за время выполнения операторов следующих за try не возникло исключений то выполняется оператор следующий за try end. Если м/у try и finally произошло исключение то управление немедленно передается первому оператору следующему за finally. Блок finally называют блоком очистки или освобождения системных ресурсов, а try - finally защиты ресурсов. Первая конструкция не позволяет идентифицировать возникшее исключение а следов-но обработать его, конструкция то-ко выявляет ИС. В отличие от 1-ой когда блок finally выполняется всегда, except выполняется лишь в случае возникновения ИС. Отсеить предполагаемые ошибки можно с помощью конструкции ON…do. Каждая директива связывает ситуацию ON c группой операций Do. Если возникло исключение не обозначенное On…Do то вызывается стандартный обработчик исключений. После обработки ИС происходит выход из защищенного блока и управление в секцию try не передается. Конструкции 1 и2 могут быть вложены. Отсеивание возникшей ИС каскадом except осущ-ся последовательно, но необходимо точно представлять место в классе исключения в иерархии, отключающее системное средство подхватывающее исключение по умолчанию. Помимо каскада ON Do исп-ся else: --- try ----- except On EoutOfMemory do Shomessage(‘Мало памяти’) On EoutOfResources do showmessage(Мало ресурсов) else showmessage(‘не знаю ’) end; ---. Для обращения к методам и свойствам исключений можно использовать невидимую и автоматически создаваемую переменную E определяемую экземпляр класса. Try …except On E:EmyException do showmessage(E.message) end. Где Е переменная, область видимости которой ограничена оператором do.Поэтому можно использовать в showmessage(E.message) это св-во исключения E.message.Если необходимо повторно возбудить ИС то после обработки on..do вызывается процедура Raise. Исключение определяемое пользователем:EmyException=class(Exception) public ErrorNumber:integer; constructor create(Const Msg:string;ErrorNum:integer) end. При описании конструктора begin inherited create(Msg) ErrorNumber:=ErrorNum;end; Обращение Raise EmyException.Create(). |