Научная статья на тему 'Программная реализация алгоритма решения системы линейных алгебраических уравнений с интервальной неопределенностью в исходных данных'

Программная реализация алгоритма решения системы линейных алгебраических уравнений с интервальной неопределенностью в исходных данных Текст научной статьи по специальности «Математика»

CC BY
595
57
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
ИНТЕРВАЛЬНАЯ СЛАУ / ПСЕВДОРЕШЕНИЕ ИНТЕРВАЛЬНОЙ СИСТЕМЫ / ЛИНЕЙНОЕ ПРОГРАММИРОВАНИЕ / ТОЧНЫЕ ВЫЧИСЛЕНИЯ / INTERVAL LINEAR EQUATION SET / PSEUDO-SOLUTION OF INTERVAL EQUATION SET / LINEAR PROGRAMMING / EXACT COMPUTATIONS
i Надоели баннеры? Вы всегда можете отключить рекламу.

Похожие темы научных работ по математике , автор научной работы — Панюков Анатолий Васильевич, Голодов Валентин Александрович

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Текст научной работы на тему «Программная реализация алгоритма решения системы линейных алгебраических уравнений с интервальной неопределенностью в исходных данных»

УДК 004.02 + 004.457 ББК 22.19

ПРОГРАММНАЯ РЕАЛИЗАЦИЯ АЛГОРИТМА РЕШЕНИЯ СИСТЕМЫ ЛИНЕЙНЫХ АЛГЕБРАИЧЕСКИХ УРАВНЕНИЙ С ИНТЕРВАЛЬНОЙ НЕОПРЕДЕЛЕННОСТЬЮ В ИСХОДНЫХ ДАННЫХ1

Панюков А. В.2,

(ФГБОУ ВПО Юхно-Уральский государственный университет,

Челябинск)

Голодов В. А.3

(ФГБОУ ВПО Юхно-Уральский государственный университет,

Челябинск)

Рассматривается система линейных алгебраических уравнений Аж=ь, с интервальными матрицами а и ь. За множество решений принимается ©4о1(А,ь)={ж: Ажеь}. Пусть ©40г(А,Ь(г))={ж: Аж=(1+г)Ь)}, ,г*=М {г: ©4о;(А,Ь(.г))=0}. Элементы

множества ©4ог(А,ь(^*)) названы псевдорешениями. Доказано существование псевдорешения для любых интервальных СЛАУ, предложен способ поиска псевдорешения как решения соответствующей задачи линейного программирования. В силу вырожденности полученной задачи необходимо использовать вычисления с точностью, намного превышающей возможности стандартных типов данных языков программирования. Симплекс-метод в сочетании с безошибочными дробно-рациональными вычислениями дает решение задачи. Для реализации используется крупнозернистый параллелизм (тех-

1 Исследование выполнено при поддержке Министерства образования и науки Российской Федерации, соглашение №14.В37.21.0395

2 Панюков Анатолий Васильевич, доктор физикоматематических наук, профессор (Челябинск, ул. Ленина, д. 76 (anatoly.panyukov@gmail.com)).

3 Голодов Валентин Александрович, аспирант (avaksa@gmail.com).

нология MPI), безошибочные дробно-рациональные вычисления реализованы на GPU (технология CUDA О).

Ключевые слова: интервальная СЛАУ, псевдорешение

интервальной системы, линейное программирование, точные вычисления

Введение

Система линейных алгебраических уравнений - это фундаментальный объект, который встречается при решении многих задач. Часто оказывается, что коэффициенты рассматриваемой системы не могут быть заданы точно, но известны интервалы, которым они принадлежат. В условиях такой интервальной неопределенности коэффициентов необходимо уточнение определения решения. В дальнейшем изложении будем использовать стандартную нотацию, принятую в интервальном анализе [18].

В работах [17, 18, 21, 23, 24] систематизированы подходы к учету интервальной неопределенности и дана их классификация. В соответствии с данной классификацией АЕ-решением системы линейных алгебраических уравнений Ах=ь, в которой элементы матриц А и ь представляют интервалы ац = [а^.^], ь^ = [ь^,Ьз], %,]= 1,2,...,п, называют элементы допускового множества

(1) ©40г(А,ь)={ж: (Угл=1,2,...,п)(Уа^ еац)(£П=1 ач хз ^1)}, ЕЕ-решением рассматриваемой системы уравнений называют точки объединенного множества

(2) ©ипг(А,ь)={х: (ЩЛ=1,2,...,п)(За^ €ау)(£П=1 а^ х^ € ^)},

В работах [19, 20] доказано, что поиск ЕЕ-решения интервальной системы линейных уравнений является ЖР-трудной задачей. С другой стороны, в соответствии с теоремой Рона [22] любая точка допустимого множества АЕ-решений допускает представление в виде х=х+-х-, где х+,х- являются решением системы

неравенств

Ь4, г=1,2,...,п.,

bi, г=1,2,...,п,

0.

Следовательно, задача поиска АЕ-решений имеет полиномиальную сложность.

Методы оценки АЕ-решений для случаев ©4о1 (А,ь)=0 рассмотрены в работах [17, 21, 23, 24] и др. Основным методом исследования допускового множества решений, развиваемым в Новосибирске [17, 23, 24], является «метод распознающего функционала». В нём для принятия решения о разрешимости или неразрешимости задачи (т.е. о пустоте/непустоте множества решений) необходимо работать с некоторым специальным (негладким и вогнутым) функционалом, который назван «распознающим». При этом максимизация распознающего функционала, которую практически можно выполнять, например, с помощью различных методов негладкой оптимизации, разработанных в Институте кибернетики НАН Украины [14], даёт достаточно содержательную информацию для возможной коррекции задачи. Разработанные С.П. Шарым и П.И. Стецюком программы для исследования разрешимости интервальной линейной задачи о допусках (пустоты-непустоты допускового множества решений) имеются в свободном доступе на сайте [4]. Программы реализованы в ВДТЬАВ’е - интервальном расширении МАТЬАВ’а, а также в Ш48с1 - интервальном расширении 8сПаЬ’а.

Во многих практических задачах система неравенств (1) оказывается плохо обусловленными или вообще несовместной. В этом случае, по аналогии с работами [3, 16], разумным представляется введение понятия «псевдорешения».

Целью данной работы является изложение анонсированного в работах [6, 12, 13] понятия «псевдорешение» для систем уравнений с интервальной неопределенностью и способы построения инструментальных программных средств их поиска.

80

Е [а, ^

3 = 1

п

3 = 1

х+,х~ ^

1. Псевдорешение системы интервальных уравнений

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

аЧ = [“г,’ Ь Ь) = [Ь3 ,Ь3 ], г,^ = 1,2,...,п.

Для заданной системы уравнений построим параметризованное семейство систем уравнений Аж=ь(^) с модифицированной правой частью ь(.г) = [Ь—.ф|,Ь+.г|Ь|],.г>0.

Пусть 2* = М{*:: ©4о!(А,ь(г))=0}. Псевдорешением исходной системы Аж=ь будем называть внутренние точки допустимого множества ©4о;(А,ь(г*)).

Корректность введенного определения подтверждает Теорема 1. Для любой системы интервальных уравнений Аж=ь при всех г>1 множество ©4о;(А,ь(г))=0.

Доказательство. В соответствии с теоремой Рона условие ©4о;(А,ь(г))=0 эквивалентно совместности системы линейных неравенств

п

(3) Е [“3 х+—«43х-] > Ь4-^&|> г=1,2,...,п.,

3 = 1

(4) Е [“г3х+-“гзх-] < Ьг+г|Ьг|, г=1,2,...,п,

3=1

(5) ж+,ж- > 0.

Полагая в (3)-(5) ж+=ж-=0, получим

(6) 0^Ьг—г|Ьг|, 0^Ьг+г|Ьг|, г=1,2,...,п.

Таким образом, для всех ^>1 имеет место включение

0€©4ог(А,ь(г)).

Теорема доказана.

2. Способ поиска псевдорешения

Способ нахождения псевдорешения системы уравнений Аж= ь дает

3 = 1

3 = 1

г —— тшх+, Х-, г,

1 3 н 3 1 > Ьі 1 = 2 Ю

— і < Ьі +г|Ьі|, і=1,2,...,п,

ч, > 0, І=1,2,...,п,

Теорема 2. Существует решение х+*, х-*eRn, z*eR задачи линейного программирования

(7)

(8)

(9)

(10)

при этом х*=х+*-х-* является псевдорешением системы Лх=ь Доказательство. Сначала докажем существование оптимального решения х+*, х-*eRn, z*eR задачи линейного пограм-мирования (7)-(10). Из теоремы 1 и теоремы Рона следует, что множество допустимых решений рассматриваемой задачи не пусто. Задача, двойственная рассматриваемой, имеет вид

(11) Е Е ЬгУ2г ^ таХУ1г,У2г,

г=1 г=1

п п

(12) Еа^гУ1г^Е ajгУ2г < 0, ^'=1,2,...,П,

г=1 г=1

пп

(13) - Е а/гУн+Е аjгУ2г ^ 0, з=1,2,...,га,

г=1 г=1

, , п п _

(14) Е 1Ьг|У1г+Е |Ьг|У2г ^ 1, г=1,2,...,га,

г=1 г=1

(15) У1г,У2г > 0, г=1,2,...,п,

Легко заметить, что решение У1г=У2г=0, г=1,2,...,га является допустимым решением задачи (11)-(15). Таким образом, показано существование допустимых решений как у прямой, так и у и двойственной задач линейного программирования (задачи (7)-

(10) и (11)-(15)). Из теоремы двойственности в линейном программировании следует существование у этих задач оптимальных решений.

Пусть х+*, х-*, г* оптимальное решение задачи (7)-(10). Из теоремы Рона следует, что х*=х+*-х-* является допустимым решением системы Лх=Ъ^*). Из оптимальности г* следует, что х* является псевдорешением интервальной системы линейных уравнений Лх=Ь.

82

Теорема доказана.

Таким образом, введенное понятие «псевдорешение» интервальной системы линейных уравнений является вполне конструктивными и позволяет давать результаты при решении интервальных систем в том случае, когда допусковое множество ©toI(A,b) допустимых решений пусто.

Однако следует обратить внимание на высокую степень вырожденност задач (7)-(10) и (11)-(15)), что будет приводить при использовании приближенных вычислений к зацикливанию симплекс-метода. Избежать зацикливания можно за счет использования вычислений без округления [5], [25]. В этом случае на каждой итерации симплекс-метода количество требуемых бит памяти не превосходит величины 4im4+o(im3), где m - минимальная из размерностей задачи, l - число бит, достаточных для представления одного элемента матрицы исходных данных, при этом эффективность распараллеливания (т.е. отношение ускорения к числу процессоров) составляет в асимптотике величину близкую к 100% [8].

3. Техника реализации

Итак, для успешной реализации изложенного способа поиска псевдорешения на компьютере понадобится несколько составляющих. С одной стороны необходимо обеспечить достаточную точность вычислений для преодоления зацикливания симплекс-метода. Подобная техника описана в [15]. Далее для обеспечения эффективности всего алгоритма в целом следует обеспечить достаточное быстродействие точных вычислений, а для использования параллельной архитектуры современных процессоров произвести эффективную декомпозицию задачи линейного программирования на потоки.

3.1. ОБЕСПЕЧЕНИЕ НЕОБХОДИМОЙ ТОЧНОСТИ

В рамках предыдущих исследований были созданы классы overlong [10] и rational [11], реализованные в объектноориентированной парадигме на языке C++, а также библиотека

83

классов Exact Computational [5]. Данные классы позволяют производить безошибочные дробно-рациональные вычисления.

Объектами класса rational являются обыкновенные дроби p/q, где p, q - объекты класса overlong. Класс overlong предназначен для расширения возможностей целочисленных вычислений на компьютере. Объем памяти, занимаемый такими объектами, определяется значениями представляемых чисел, их диапазон ограничен только объемом адресуемой памяти. Минимальный шаг дискретизации чисел, представляемых объектами класса rational, может достигать (232*232). Для объектов классов overlong и rational определены все операторы, операции и бинарные отношения, используемые для стандартных числовых типов данных. Таким образом, классы overlong и rational дают потенциальную возможность использовать в программах пользователя безошибочные арифметические операции над полем рациональных чисел [1].

На сегодняшний день возможность использования безошибочных вычислений представляет известная библиотека GMP(The GNU Multiple Precision Arithmetic Library) [25]. Библиотека распространяется под лицензией GNU LGPL, актуальная версия библиотеки GMP 5.1.1 доступна для загрузки с официального сайта проекта. Программный код оптимизирован под большинство существующих процессорных архитектур, однако она не предоставляет своим объектам возможность их использования в распределенных вычислениях.

Для более полноценного использования современных процессорных архитектур классы overlong и rational хранят и оперируют числами по основанию 232, код операций оптимизирован для системы счисления по основанию степень двойки. Оптимизации применяются также при работе с памятью, и поскольку в C++ нет автоматического сборщика мусора, то лишние перевы-деления памяти приводят к её фрагментации и снижению быстродействия приложения в целом, краткое описание современных реализаций классов дано в [2]. Для облегчения сопровождения и модификации классов операции с памятью инкапсулированы в

отдельный класс MemHandle, а выполнение базовых арифметических операций с данными полностью производится в рамках класса ArifRealization (см. фрагмент листинга 1).

1

2

3

4

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

5

6

7

8

9

10

11

12

13

14

15

Тем самым объект класса overlong содержит в себе объект типа MemHandle, и все действия с памятью происходят через интерфейс MemHandle. Все арифметические операции с данными осуществляются вызовом соответствующих методов класса ArifRealization. Пример реализации метода add класса overlong представлен в листинге 2.

1

2

3

4

5

6

7

8

9

10

11

12

13

Эта техника позволяет полностью абстрагироваться от реального места хранения данных (за это полностью отвечает реализация класса MemHandle) и способа реализации арифметических операций (конкретная методика выполнения операций над разрядами инкапсулирована в ArifRealization).

void overlongNM :: add( const overlongNM& alpha , const overlongNM& beta){ d_t carry ;

const overlongNM & a =( alpha . size ()>=beta . size())? alpha:beta;

const overlongNM & b=( alpha . size ()>=beta . size())? beta:alpha;

int3 2 LA=a . size () , LB=b . size () ,sg=alpha.sgn, newleng ; / / LA>=LBBti30B6a30B0H

/ / apH^MeraqecKOHonepaqHH

ArifRealization :: add (a. mhandle . getptr () , LA, b . mhandle . getptr () , LB, mhandle . providetmpptr (LA, 1) , newleng , carry ); mhandle . settmpasptr ();

if ( carry ) mhandle . safesetvalue (LA, carry ); leng=newleng ; sgn=sg ;

}

Листинг 2. Организация операции сложения

class overlongNM { private: static ArifRealization realization; private: MemHandle mhandle;

public : inline int32 size () const { return leng ;} // leng public: inline int32 sign() const {return sgn;} //sign

// addition

template<typename Type>friend const overlongNM operator + (const overlongNM &num, Type v)

{overlongNM rez(num); return (rez+=v);} friend const overlongNM operator +

( const overlongNM&,const overlongNM&);

}

Листинг 1. Фрагмент класса overlong

3.2. ОБЕСПЕЧЕНИЕ НЕОБХОДИМОЙ

ПРОИЗВОДИТЕЛЬНОСТИ

Вышеописанная техника разбиения класса overlong на три части «интерфейс-память-арифметика» позволяет гибко использовать возможности вычислительной системы. Поскольку производительность алгоритма симплекс метода обеспечивается, в том числе, за счет эффективности реализаций классов overlong и rational, при их написании учтена возможность использования современных гетерогенных вычислительных сред с GPU-ускорителями Nvidia (возможность задействовать GPU от компании AMD и встроенные графических ускорителей, например, Intel HD Graphics, дает язык OpenCL, однако эксперименты показали большую трудоемкость процесса кодирования при малом приросте эффективности). Алгоритмы параллельного выполнения базовых арифметических операций, а также некоторые аспекты их реализации в гетерогенной среде описаны в [2, 9]. Хранение операндов организуется с учетом устройства, на котором производятся вычисления. Так, при наличии в системе GPU Nvidia все данные (разряды) чисел можно хранить непосредственно на GPU, там же выполнять арифметические операции над числами, это снижает до минимума количество пересылок данных по PCI шине, остается лишь скопировать в основную память результаты вычислений. Для систем без GPU вычисления проводятся на процессоре, данные хранятся непосредственно в оперативной памяти системы.

3.3. МЕЛКОЗЕРНИСТЫЙ ПАРАЛЛЕЛИЗМ

Параллельные вычисления на GPU требуют переработки алгоритмов базовых арифметических операций с учетом специфической архитектуры устройств. Ниже приводятся листинги некоторых операций для GPU Nvidia на CUDA C.

3.3.1. СЛОЖЕНИЕ

Операция сложения длинных чисел на GPU осуществляется в несколько этапов: параллельное сложение разрядов, син-86

хронизация, параллельное распространение переносов из разрядов. Особенность архитектуры вРИ, а именно, выполнение нитей блоками и отсутствие синхронизации между блоками, требует сохранения «пограничных»переносов во временом массиве (за это отвечает строка номер 16 в листинге 3 и последующего распространения (DNumAdd_part2) (листинг 4).

___global__void DNumAdd_part1 (

d_t *A, int32 LA, d_t *B,int32 LB, d_t *C, d_t *bGCarry , int32 * f){ int32 gId=blockDim. x* blockldx.x + threadldx.x; int64 tmp=0; if ( gId >= LA) return; //bound check if ( gId>=LB) C[ gId]=A[ gId ];

else {tmp=( int64 )A[ gId] + ( int6 4 )B[ gId ] ; C[ gId]=tmp&MAX_DIGIT;}

__syncthreads ( );// carry propagation in the block int32 lId=threadIdx.x+1,i=gId+1 ,gS=blockDim .x ; for (tmp>>=BIT_IN_DIGIT;tmp && i<LA; lId++, i ++){ if (lI d==gS) {bGCarry [ blockIdx . x]=tmp; * f=1; return;} tmp+=( int64 )C[ i ] ; C[ i ]=tmp&MAX_DIGIT; tmp>>=BIT_IN_DIGIT;

} if (i==LA && tmp) { bGCarry [ Lcarry ] = 1;}

}

Листинг 3. Поразрядное сложение

__global__ void DNumAdd_part2

( d_t *C, d_t * bGCarry, int32 gS , uint32 Lcarry , uint3 2 LA){

// carry propagation between blocks

int gId = blockDim.x* blockIdx.x + threadI dx .x , i =( gId + 1 )* gS

if ( gId >= Lcarry ) return; uint64 tmp=( uint64 ) bGCarry [ gId ]; for (;tmp && i<LA; i++){ tmp+=( uint64 )C[ i ];

C [ i ]=tmp&MAX_DIGIT; tmp>>=BIT_IN_DIGIT;

}

if (i==LA&&tmp) { bGCarry [ Lcarry ] = 1;}

}

Листинг 4. Параллельное распространение переносов

Установка параметров и запуск кода на графическом ускорителе представлены на листинге 5. Этот код выполняется на стороне CPU, или так называемой стороне Host.

void ArifRealization :: add( const d_t *A, int32 LA,

const d_t *B, int32 LB, d_t *C, int32 &NL, d_t &Carry){ int tPerBlock = 128,bPerGrid = (LA + tPerBlock — 1) / tPerBlock; d_t * bGCarry_d=NULL, * ansCarry_h=new d_t [ 1 ]; int32c * F_d=NULLc, * F_h=new int32[1];

cudaM alloc (( void **)&bGCarry_d , sizeo f ( d_t) * (bPerGrid+1)); cudaMemset(( void *)bGCarry_d, 0, sizeof(d_t) * (bPerGrid+1)); cudaM alloc (( voidc**)&F_d , sizeof(int32)); cudaMemset (( void *)cF_d , 0, sizeof(int32));

DNumAdd_part1 <<< bPerGrid , tPerBlock >>>

( const_cast <d_t *>(A) , LA, const_cast <d_t *>(B) , LB, C, bGCarry_d ,CF_d); cudaMemcpy (cF_h , cF_d , sizeof( int32 ) , cudaMemcpyDeviceToHost);

i f ( * cF_h ) {

int gS=tPerBlock , LCarry=bPerGrid ;

bPerGrid = (bPerGrid + tPerBlock — 1) / tPerBlock; DNumAdd_part2 <<< bPerGrid, tPerBlock>>>

(d_buffC , bGC_d, gS, LCarry , LA);

}

cudaMemcpy( ansCarry_h,&bGCarry_d[bPerGrid ] ,

sizeo f ( d_t) , cudaMemcpyDeviceToHost);

NL= (carry = * ansCarry_h)? LA+1: LA;

delete [] ansCarry_h; cudaFree (bGCarry_d ); cudaFree (cF_d);

}

Листинг 5. Вызов функции для исполнения на GPU

3.3.2. УМНОЖЕНИЕ

Операция умножения одна из наиболее затратных по времени. Для выполнения операции параллельного умножения используется быстрая разделяемая между нитями блока_shared_

память. В реализации существенно используется особенности архитектуры GPU Nvidia, а именно, полностью синхронное выполнение инструкций в рамках одного warp. Это избавляет от необходимости выполнять синхронизацию между нитями. Исходный код для выполнения на GPU (kernel) представлен на листинге б.

__global__void DNumMult( d_t *A,int32 LA, d_t *B,int32 LB,d_t * rez)

{

int32 lI d=threadIdx . x, gId=blockDim .x* blockIdx.x + 11 d ;

if(gId>=LB) return;

int3 2 cBS=(LA+blockDim . x — 1)/blockDim .x ;

__shared__uint64 sha[],shrez[];

for ( int i= lI d*cBS ; i <( lId + 1)*cBS && i<LA; i++){ sha[i]=A[ i]; shrez[i]=0;

}

shrez [LA+ lI d ] = 0;

uint64 digit =(uint64)B[gId] , t=0UL;

for(int i=0;i<LA; i++){ t+=sha [ i ] * digit; shrez [ i+ lI d ]+= t&MAX_DIGIT; t>>=BIT_IN_DIGIT;

}

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

shrez [LA+ lI d ]+= t&MAX_DIGIT;

cBS=(LA+blockDim .x+blockDim .x — 1)/blockDim . x ;

for( int i= lI d *cBS;i<(lId + 1)*cBS && i<LA+blockDim . x; i ++) { AtomicAdd( rez[i + gId],shrez[i]);

}

}

Листинг 6. Умножение на ОРи

Окончательное формирование результата происходит последовательным проходом по массиву rez[] и преобразованием 64битного числа ^Ц] в непосредственно разряд ответа и разряд 88

переноса. Эти действия также выполняются на GPU, но в однопоточном режиме.

3.3.3. ДЕЛЕНИЕ

Поскольку стандартный алгоритм деления столбиком является абсолютно последовательным, для реализации в вычислительной системе с массовым параллелизмом, какой является GPU, эффективным является использование итеративных методов деления, выражающих результат через операцию умножения, подробнее данный подход подход изложен в [9].

3.4. КРУПНОЗЕРНИСТЫЙ ПАРАЛЛЕЛИЗМ

Применяемая техника параллельной реализации симплекс метода детально описана в [7, 8]. В данном случае для разбиения задачи на потоки использовался механизм многопоточного програмирования std::thread, предоставляемый стандартом C++0x11.

4. Вычислительный эксперимент

Вычислительный эксперимент проводился на компьютере с процессором Intel Core i7-950 3.0б ГГц, б Гб ОЗУ, GPU Nvidia 4б0(1гб GDDR5), под управлением ОС Win 7 x64, в качестве компилятора был выбран б4-разрядный Visual C++ 2011.

В качестве модельной задачи использована система с матрицами:

A

i * (1 — 8) i * (1 + 8) i + j — 1 , i + j — 1

b = [1,1/2,..., 1 / (n — 1), 1/n]T

Зависимость минимального расширения правой части (параметр £*), соответствующего псевдорешению, при фиксированном значении п = 20 приведена в таблице (1) В таблице 2 приведены результаты времени затраченного на решение задачи для различных размерностей модельной интервальной системы.

nn

Таблица 1. Минимальное расширение правой части системы

8 10-i 10-2 10-3 10-4 10-5 10-6

z* 0,81 0,389 0,1 0,025 0,00б2 0,0017

Таблица 2. Время работы

Размерность матрицы (n) 10 20 50 100

Время работы 0,46с 7,73с 7,39м 15,1ч

5. Заключение

В работе полностью рассмотрена задача нахождения псевдорешения интервальной системы линейных алгебраических уравнений, дано определение понятия, показано существование псевдорешения для любой интервальной системы. Дано конструктивное доказательство существования псевдорешения как решения соответствующей задачи линейного программирования. Приведены подробности техники программной реализации симплекс-метода решения задачи линейного программирования, соответствующей псевдорешению интервальной системы, а также некоторые особенности реализации классов overlong и rational, обеспечивающих необходимую точность вычислений и тем самым позволяющих избежать зацикливания симплекс-метода в случае сильной вырожденности сформулированной задачи. Даны результаты численного эксперимента для различных смоделированных исходных данных. Дальнейшая работа направлена на получение более эффективных реализаций за счет оптимизации параллельной версии программы.

Литература

1. ГОЛОДОВ В.А. Адаптация библиотеки «exact computational» для гетерогенных вычислительных сред // Материалы четвертой научной конференции аспи-

рантов и докторантов. Естественные науки. — Челябинск: Издательский центр ЮУрГУ, 2012. — С. 27-30.

2. ГОЛОДОВ В.А. Распределенные символьные дробнорациональные вычисления на процессорах x86 и x64 // Труды международной научной конференции «Параллельные вычислительные технологии (ПаВТ’2012)», Новосибирск, 26 - 30 марта. — Челябинск: Издательский центр ЮУрГУ, 2012. —С. 719.

3. ИВАНОВ В.К. О линейных некорректных задачах // Доклады Академии наук СССР. — 1962. — Т. 145.

4. Интервальный анализ и его приложения. - Режим доступа: http://www.nsc.ru/interval (дата обращения 30 марта 2013).

5. ПАНЮКОВ А.В., ГЕРМАНЕНКО М.И., ГОРБИК В.В. Библиотека классов «exact computation» номер гос. регистрации 2009612777 от 29 мая 2009 г. // Программы для ЭВМ, базы данных, топологии интегральных микросхем. Официальный бюллетень Российского агентства по патентам и товарным знакам. — М.: ФИПС, 2009. — № 3. — С. 251.

6. ПАНЮКОВ А.В., ГОЛОДОВ В.А. Вычисление псевдорешений систем линейных алгебраических уравнений с интервальной неопределенностью коэффициентов // Алгоритмический анализ неустойчивых задач: тез. Докл. Международной конференции, посвященной памяти В.К. Иванова, Екатеринбург, 31 октября - 5 ноября. — Екатеринбург: ИММ УрО РАН, 2011. — С. 261-262.

7. ПАНЮКОВ А.В., ГОРБИК В.В. Параллельные реализации симплекс-метода для безошибочного решения задач линейного программирования // Вестник Южно-Уральского государственного университета. Серия: «Математическое моделирование и программирование». — 2011.— № 25.— С. 107-118.

8. ПАНЮКОВ А.В., ГОРБИК В.В. Применение массивнопараллельных вычислений для решения задач линейного программирования с абсолютной точностью // Автома-

тика и телемеханика. — 2012. — № 2. — С. 73-88.

9. ПАНЮКОВ А.В., ЛЕСОВОЙ С.Ю. Реализация базовых операций целочисленной арифметики в гетерогенных системах // Труды международной научной конференции «Параллельные вычислительные технологии (ПаВТ’2012)», Новосибирск, 26 марта - 30 марта 2012 г. — Челябинск: Издательский центр ЮУрГУ, 2012.— С. 7784.

10. ПАНЮКОВ А.В., СИЛАЕВ М.М. Класс overlong номер гос. регистрации 990489 // Программы для ЭВМ. Базы данных. Топологии интегральных микросхем. Официальный бюллетень Российского агентства по патентам и товарным знакам. — М.: ФИПС, 1999. — № 4(29). — С. 17.

11. ПАНЮКОВ А.В., СИЛАЕВ М.М., ГЕРМАНЕНКО М.И. Класс rational номер гос. регистрации 990607 // Программы для ЭВМ. Базы данных. Топологии интегральных микросхем. Официальный бюллетень Российского агентства по патентам и товарным знакам. — М.: ФИПС, 1999. — № 4(29). — С. 97.

12. ПАНЮКОВ А.В., ЧЕЧУЛИНА Е.С. Решения систем линейных алгебраических уравнений при интервальной неопределенности коэффициентов // Алгоритмический анализ неустойчивых задач: Тез. докладов Всерос. конф., Екатеринбург, 2-6 февр. — Екатеринбург: Изд-во Уральского университета, 2004. — С. 291-292.

13. ПАНЮКОВ А.В., ЧЕЧУЛИНА Е.С. Псевдорешения систем линейных алгебраических уравнений при интервальной неопределенности коэффициентов // Интервальный анализ. Труды XIII Байкальской международной школы-семинара «Методы оптимизации и их приложения» Иркутск, Байкал, 2-8 июля. — 2005.

14. СТЕЦЮК П.И. Субградиентные методы с преобразованием пространства для минимизации овражных выпуклых функций.— 2011.— ISBN 978-5-905569-01-2. — http://conf.nsc.ru/niknik-90/ru/reportview/37828.

15. СХРЕЙВЕР А. Теория линейного и целочисленного программирования.— Москва, Мир, 1991. — Т. 1. — С. 360.

16. ТИХОНОВ А.Н., АРСЕНИН В.Я. Методы решения некорректных задач. — Москва, Наука, 1979. — С. 285.

17. ШАРЫЙ, С.П. Решение интервальной линейной задачи о допусках // Автоматика и телемеханика. — 2004. — Т. 10. — С. 147-162.

18. KEARFOTT R.B., NAKAO M.T., NEUMAIER A., RUMP S.M., SHARY S.P., VAN HENTENRYCK P. Standardized notation in interval analysis // Proc. XIII Baikal International School-seminar: Optimization methods and their applications, Irkutsk, Baikal, July 2-8, Institute of Energy Systems SB RAS. — Irkutsk, 2005. — Vol. 4. Interval analysis. — Pp. 106-113.

19. LAKEYEV A.V., KREINOVICH V. Optimal solution of interval linear systems is intractable(np-hard) // Interval Computations. — 1993. — No. 1. — Pp. 6-14.

20. LAKEYEV A.V., KREINOVICH V. Np-hard classes of linear algebraic systems with uncertainties // Reliable Computing. — 1997. —No. 3. —Pp. 51-81.

21. NEUMAIER A. Interval Methods for Systems of Equations.— Cambridge University Press, 1990.

22. ROHN J. Inner solutions of linear interval systems // Interval Mathematics and Springer Verlag. — 1985 and 1986.— Pp. 157-158.

23. SHARY S.P. Solving the linear interval tolerance problem // Mathematics and Computers in Simulation.— 1996.— Т. 39. — С. 53-85.

24. SHARY S.P. A new technique in systems analysis under interval uncertainty and ambiguity // Reliable Computing. — 2002. — Vol. 8, No. 5. — Pp. 321-418.

25. The gnu mp bignum library. — February 2013. Available at: http://gmplib.org/ (accessed 30 March 2013).

SOFTWARE IMPLEMENTATION OF ALGORITHM FOR SOLVING A SET OF LINEAR EQUATIONS UNDER INTERVAL UNCERTAINTY

Anastoly Panyukov, South Ural State University, Lenina Ave., build. 7б, Chelyabinsk 4540S0 (anatoly.panyukov@gmail.com). Valentin Golodov, South Ural State University, postgraduate, South Ural State University, (avaksa@gmail.com).

Abstract: We consider a set of linear equations Ax=b with interval matrices a, b. Solutions are items of 0toI(A,b)={x: Axe b}. Let 0to;(A,b(z))={x: Ax=(i+z)b)}, z*=inf{z: 0to;(A,b(z))=0} be. Items of the set 0to;(A,b(z*)) are referred to as pseudosolutions. We prove existence of a pseudosolution for all sets of interval algebraic linear equations, suggest a technique to search for the pseudosolution via solving the corresponding linear programming problem. The obtained problem is singular, thus computations demand accuracy exceeding that of standard data types of programming languages. Simplex method coupled with errorless rational-fractional computations gives an efficient solution of the problem. Coarsegrained parallelism for distributed computer systems with MPI gives a software implementation tool. CUDA C software is suggested for errorless rational-fractional calculations.

Keywords: interval linear equation set, pseudo-solution of interval equation set, Linear programming, exact computations.

Статья рекомендована к публикации программным комитетом

международной конференции «Параллельные вычисления и задачи управления» (PACO), Россия, Москва, 24-26 октября 2012 г. Поступила в редакцию 04.04.2013. Опубликована 31.05.2013.

i Надоели баннеры? Вы всегда можете отключить рекламу.