Метод сжатия текстовой информации

Автор работы: Лена Шугалеева, 25 Сентября 2010 в 19:08, курсовая работа

Краткое описание

Математическое программирование занимается изучение экстремальных задач и поиском методов их решения. Задачи математического программирования формулируются следующим образом : найти экстремум некоторой функции многих переменных f ( x1, x2, ... , xn ) при ограничениях gi ( x1, x2, ... , xn )  bi , где gi - функция, описывающая ограничения,  - один из следующих знаков  ,  ,  , а bi - действительное число, i = 1, ... , m. f называется функцией цели ( целевая функция ).
Линейное программирование - это раздел математического программирования, в котором рассматриваются методы решения экстремальных задач с линейным функционалом и линейными ограничениями, которым должны удовлетворять искомые переменные.
Задачу линейного программирования можно сформулировать так . Найти max
при условии : a11 x1 + a12 x2 + . . . + a1n xn  b1 ;
a21 x1 + a22 x2 + . . . + a2n xn  b2 ;
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
am1 x1 + am2 x2 + . . . + amn xn  bm ;
x1  0, x2  0, . . . , xn  0 .
Эти ограничения называются условиями неотрицательности. Если все ограни-чения заданы в виде строгих равенств, то данная форма называется канонической.
- 7 -
В матричной форме задачу линейного программирования записывают следующим образом. Найти
max cT x
при условии
A x  b ;
x  0 ,
где А - матрица ограничений размером ( mn), b(m1) - вектор-столбец свобод-ных членов, x(n  1) - вектор переменных, сТ = [c1, c2, ... , cn ] - вектор-строка коэффициентов целевой функции.
Решение х0 называется оптимальным, если для него выполняется условие сТ х0  сТ х , для всех х  R(x).
Поскольку min f(x) эквивалентен max [ - f(x) ] , то задачу линейного программирования всегда можно свести к эквивалентной задаче максимизации.
Для решения задач данного типа применяются методы:
1) графический;
2) табличный ( прямой, простой ) симплекс - метод;
3) метод искусственного базиса;
4) модифицированный симплекс - метод;
5) двойственный симплекс - метод.

1.2 Табличный симплекс - метод
Для его применения необходимо, чтобы знаки в ограничениях были вида “ меньше либо равно ”, а компоненты вектора b - положительны.
Алгоритм решения сводится к следующему :
Приведение системы ограничений к каноническому виду путём введения дополнительных переменных для приведения неравенств к равенствам.
Если в исходной системе ограничений присутствовали знаки “ равно ”

- 8 -

или “ больше либо равно ”, то в указанные ограничения добавляются
искусственные переменные, которые так же вводятся и в целевую функцию со знаками, определяемыми типом оптимума.
Формируется симплекс-таблица.
Рассчитываются симплекс-разности.
Принемается решение об окончании либо продолжении счёта.
При необходимости выполняются итерации.
На каждой итерации определяется вектор, вводимый в базис, и вектор, выводимый из базиса. Таблица пересчитывается по методу Жордана-Гаусса или каким-нибудь другим способом.

Содержимое работы - 1 файл

МЕТОД СЖАТИЯ ТЕКСТОВОЙ ИНФОРМАЦИИ.DOC

— 177.00 Кб (Скачать файл)

    Пример 3. Ремонтная мастерская занимается обслуживанием машин; её рентабельность определяется количеством машин, обслуженных в течение дня. Показатель эффективности - среднее число машин, обслуженных за день.

    Пример 4.   Группа радиолокационных станций в определённом районе ведёт наблюдение за воздушным пространством. Задача группы - обнаружить любой самолёт, если он появится в районе. Показатель эффективности - вероятность обнаружения любого самолёта, появившегося в районе.

    Пример 5. Предпринимается ряд мер по повышения надёжности электронной цифровой вычислительной техники ( ЭЦВТ ). Цель операции - уменьшить частоту появления неисправностей ( “сбоев” ) ЭЦВТ, или, что равносильно, увеличить средний промежуток времени между сдоями ( “наработку на отказ” ). Показатель эффективности - среднее время безотказной работы ЭЦВТ.

    Пример 6. Проводится борьба за экономию средств при производстве определённого вида товара. Показатель эффективности - количество сэкономленных средств.

    С помощью анализа модели на чувствительность определить параметр, от которого результат зависит больше и решить, каким способом возможно увеличение эффективности и на сколько, а так же многое другое. 
 
 
 

    - 23 - 
     
     
     
     
     
     
     
     
     

ПРИЛОЖЕНИЕ 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

- 24 - 

СОДЕРЖАНИЕ 
 

    ВВЕДЕНИЕ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .    25

1. НАЗНАЧЕНИЕ  ПРОГРАММЫ. . . . . . . . . . . . . . . . . . . . . . . . . . . .    26

2. УСЛОВИЯ  ПРИМЕНЕНИЯ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .    26

       1.1 Ограничения и область применения . . . . . . . . . . . . . . . . . . . . .     6

       1.2 Требования к техническим средствам  . . . . . . . . . . . . . . . . . . . .     7

3. ВХОДНЫЕ  И ВЫХОДНЫЕ ДАННЫЕ . . . . . . . . . . . . . . . . . . . . . .     5

4. ИНСТРУКЦИЯ  ПОЛЬЗОВАТЕЛЮ . . . . . . . . . . . . . . . . . . . . . . . . .    11

5. ТЕКСТ  ИСХОДНОГО МОДУЛЯ . . . . . . . . . . . . . . . . . . . . . . . . . . .     11

6. ОПИСАНИЕ  ЛОГИКИ СТРУКТУРНОЙ СХЕМЫ . . . . . . . . . . . .     11

7. ТЕСТОВЫЙ  ПРИМЕР. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .     25 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

- 25 - 

    ВВЕДЕНИЕ 

    В данной части пояснительной записки  к курсовой работе представлена и  описана программа, реализующая решение систем линейных неравенств табличным методом. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

- 26 - 

1. НАЗНАЧЕНИЕ ПРОГРАММЫ 

    Программа предусмотрена для решения систем линейных неравенств табличным методом, а так же для попытки оптимизации различных экономических, социальных и т. д. проблем.

    Метод, описанный в программе, может применяться на государственных и частных предприятиях для улучшения эффективности производства. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

    - 27 - 

2. УСЛОВИЯ ПРИМЕНЕНИЯ 

       1.1 Ограничения и область применения 

    Из  программных средств требуется  операционная система MS DOS                версии 5.0, программная Среда NORTON COMMANDER, язык программирования Borland Pascal 7.0 . Кроме того НГМД должен содержать файлы в директории KURSOVIK:

    1. Файл входных данных - KURS97.DAT

    2. Программный файл - KURS97.EXE 
 

       1.2 Требования к техническим средствам  

    IBM PC или IBM PC - совместимый компьютер  с дисководом 3.25”  ёмкостью 1.2 Мб. 
 
 
 
 
 
 
 
 
 
 
 
 
 

    - 28 - 

3. ВХОДНЫЕ И ВЫХОДНЫЕ  ДАННЫЕ

                                     

    Входные и выходные данные заносятся в  файлы KURS97.DAT  и KURS97.RES соответственно.  Входные данные записываются в определённом порядке. Выходные данные записываются в виде симплекс-таблиц. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

- 29 - 

4. ИНСТРУКЦИЯ ПОЛЬЗОВАТЕЛЮ 

    Входные данные вносятся в файл KURS 97.DAT в следующей очерёдности :

    сначала вводятся коэффициенты при неизвестных  в целевой функции, затем    вводятся элементы вектора ограничений, а потом - элементы матрицы ограничений  по столбцам.

    Результаты  вычислений вы найдёте в файле KURS 97.REZ. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

- 30 - 

5. ТЕКСТ ИСХОДНОГО  МОДУЛЯ 

    Полный  текст программы KURS97.PAS выглядит следующим  образом :

    . program Kurs97; 

    uses crt; 

    const

      n = 2;

      m = 3;

      Epsilon = 0.000001; 

    var

      VectorA              : array [1..m, 0..m+n] of real;

      TargetVector         : array [1..m+n]       of real;

      SimplexVector        : array [0..m+n]       of real;

      DigitOfBasisVector   : array [1..m]         of real;

      BasisVector          : array [1..m]         of integer; 

      IndexOfEnterVector  : integer;

      IndexOfOutputString : integer;

      MinimumBuffer       : real; 

      key   : char;

      FileOfOutput : text; 

    { Описание процедур } 

    procedure ReadDates; { считывание данных из файла }

    var

      DateFile : text; 

      procedure ReadDatesTargetVector; { считывание данных целевого вектора }

      var i : integer;

      begin

        for i:=1 to n do Readln(DateFile, TargetVector[i]);

      end; 

      procedure ReadDatesVectorA; { считывание вектора А и заполнение единицами диагонали}

      var i,j : integer;

      begin

        for j:=0 to n do

          for i:=1 to m do

            Readln(DateFile, VectorA[i, j]);

        i:=1;

        for j:=n+1 to n+m do 
 
 
 

    - 31 - 
 

        begin

          VectorA[i, j]:=1;

          inc(i)

        end;

      end; 

      procedure ReadDatesBasisVector;

      var i : integer;

      begin

        for i:=1 to m do BasisVector[i]:=n+i;

      end; 

    begin

      Assign(DateFile, 'kurs97.dat');

      Reset(DateFile);

      ReadDatesTargetVector;

      ReadDatesVectorA;

      ReadDatesBasisVector;

      Close(DateFile);

    end; 

    procedure CountSimplexVector; { расчет симплек-вектора }

    var

      i,j      : integer;

      Summa    : real;

      Simplex  : real;

    begin

      SimplexVector[0]:=0;

      for i:=1 to m do

        SimplexVector[0]:=SimplexVector[0] + DigitOfBasisVector[i]*VectorA[i, 0];

      for j:=1 to m+n do

      begin

        Summa:=0;

        for i:=1 to m do Summa:=Summa + DigitOfBasisVector[i]*VectorA[i, j];

        SimplexVector[j]:=Summa - TargetVector[j];

        if abs(SimplexVector[j]) <= Epsilon then SimplexVector[j]:=0;

      end;

    end; 

    function GetEnterVector : integer; { поиск вводимого вектора }

    var

      i   : integer;

      Min : real;

    begin

      GetEnterVector:=1;

      Min:=SimplexVector[1];

      for i:=2 to m+n do

        if Min > SimplexVector[i]

          then

       
 
 

    - 32 - 

        begin

            GetEnterVector:=i;

            Min:=SimplexVector[i];

          end;

    end; 

    function GetOutputString : integer; { поиск выводимой строки }

    var

      i   : integer;

      Temp : real;

    begin

      GetOutputString:=1;

      if VectorA[1, IndexOfEnterVector] > 0 then MinimumBuffer:=VectorA[1, 0] / VectorA[1, IndexOfEnterVector];

      for i:=2 to m do

      begin

        Temp:=VectorA[i, 0] / VectorA[i, IndexOfEnterVector];

        if Temp > 0 then

        if MinimumBuffer >= Temp then

        begin

          MinimumBuffer:=Temp;

          GetOutputString:=i;

       end;

      end;

    end; 

    procedure ReCountOutputString; { пересчет коэффициентов выводимой строки }

    var

      i,j     : integer;

      Buffer  : real; 

      procedure ReCountDigitOfBasisVector;

      begin

        DigitOfBasisVector[IndexOfOutputString]:=TargetVector[IndexOfEnterVector];

Информация о работе Метод сжатия текстовой информации