УДК 004.457
ЭНЕРГОСБЕРЕГАЮЩИЙ АЛГОРИТМ РАБОТЫ МОБИЛЬНЫХ УСТРОЙСТВ С БЕСПРОВОДНЫМИ САМООРГАНИЗУЮЩИМИСЯ WI-FI-СЕТЯМИ ^-ИОС)
Б.В. Окунев, к.т.н., доцент (Смоленский филиал Национального исследовательского университета МЭИ, Энергетический проезд, 1, г. Смоленск, 214013, Россия, [email protected])
Рассмотрен энергосберегающий алгоритм работы мобильных устройств c беспроводными самоорганизующимися Wi-Fi-сетями (Ad-hoc). Он предназначен для использования в мобильных устройствах, работающих на основе операционной системы Android. Предлагаемый алгоритм позволяет оптимизировать процесс взаимодействия подобных устройств с беспроводными сетями с позиции как энергосбережения, так и возможностей автоматизации вышеупомянутого процесса. Все это достигается за счет усовершенствования процессов поиска и подключения к беспроводным сетям, а также более рационального использования недокументированных возможностей смартфонов и планшетных компьютеров на основе Android по взаимодействию с ad-hoc-сетями. Необходимо заметить, что при наличии уже имеющегося подключения к беспроводной Wi-Fi-сети с позиций энергосбережения мобильного устройства представляется нерациональным непрерывное циклическое сканирование других доступных сетей. Это продиктовано изначальными возможностями Android, предполагающими единовременное подключение только к одной сети. Процесс подключения к ad-hoc-сети осуществляется с помощью задания набора статических параметров (ip-адрес, маска сети, основной шлюз и т.д.), формируемых с помощью предлагаемого алгоритма, оформленного в виде программного модуля. В работе рассмотрена одна из возможных реализаций вышеназванного алгоритма на языке программирования Java. Тестирование данного алгоритма проводилось на смартфонах (коммуникаторах) HTC Sensation и Samsung Galaxy S на платформе Android (версии 2.2-4.1.1). Программный модуль, разработанный на основе предлагаемого алгоритма, может найти применение у разработчиков сетевого ПО для решения достаточно широкого круга задач, связанных с взаимодействием мобильных устройств и беспроводных Wi-Fi-сетей.
Ключевые слова: энергосбережение, мобильные устройства, беспроводные Wi-Fi-сети, ОС Android, беспроводные самоорганизующиеся сети (ad-hoc), язык программирования Java.
POWER SAVING ALGORITHM FOR MOBILE DEVICES WITH A WIRELESS SELF-ORGANIZING ANDROID WI-FI NETWORKS (AD-HOC) Okunev B. V., Ph.D., associate professor (Smolensk Branch of the Moscow Power Engineering Institute, Energeticheskyproezd, 1, Smolensk, 214013, Russia, [email protected]) Abstract. The article considers energy efficient algorithm for mobile devices with self-organizing wireless Wi-Fi network (Ad-hoc). It is designed for using in mobile devices based on the operating system (OS) Android. The proposed algorithm allows optimizing the interaction of described devices with wireless networks, both from the point of energy saving and automation capabilities of the process. It is achieved by improving the process of finding and connecting to wireless networks, as well as better use of undocumented features of Android-based smartphones and tablets to interact with ad-hoc networks. When there is already existing connection to a wireless Wi-Fi network, continuous cyclic scanning other available networks is irrational from the point of energy saving. The primordial features of OS Android determine a one-time connection to a single network. Connecting to ad-hoc network is carried out by specifying a set of static parameters (ip-address, subnet mask, default gateway, etc.) generated by the proposed algorithm designed as a software module. The paper considers one of possible implementations of the proposed algorithm in the Java programming language. Testing of this algorithm was performed on smartphones HTC Sensation and Samsung Galaxy S based on OS Android (2.2-4.1.1). The software module based on the proposed algorithm can be used by developers of network software for solving a wide range of problems connected to mobile devices interaction and wireless Wi-Fi networks.
Keywords: energy, mobile devices, wireless Wi-Fi network, operation system Android, wireless self-organizing network (ad-hoc), Java.
Многофункциональные мобильные устройства на основе операционной системы (ОС) Android обретают все большую популярность. Абсолютное большинство этих устройств имеют функцию работы с беспроводными Wi-Fi-сетями. При этом энергопотребление подобных устройств в режиме работы с беспроводными Wi-Fi-сетями значительно увеличивается по сравнению с автономным. Энергопотребление любого мобильного устройства является его важнейшей характеристикой и зависит от множества различных факторов, таких как версия ОС, набор запущенных программ, режим работы и т.д.
В последние несколько лет беспроводные технологии прошли процесс стандартизации, значительно повысилась скорость передачи данных, а цена стала доступной. Беспроводные сети позволяют без труда подключить пользователей к Интернету (или корпоративным ресурсам) там, где необходима высочайшая мобильность.
При выборе способа построения сети в качестве основных преимуществ беспроводных решений можно выделить гибкость конфигурации, простоту расширения сети, мобильность, безопасность, большое разнообразие поддерживаемых устройств. Существуют типовые решения конфигу-
рации беспроводных локальных сетей - ad-hoc (самоорганизующаяся сеть) и Infrastructure (взаимодействие через точку доступа). Первая группа типовых решений собрана на основе режима работы «равный с равным». В режиме ad-hoc, который также называют Independent Basic Service Set, станции непосредственно взаимодействуют друг с другом. Для этого режима требуется минимум оборудования: каждая станция должна быть оснащена беспроводным адаптером. При такой конфигурации не требуется создание какой-либо сетевой инфраструктуры. Главный недостаток режима ad-hoc - ограниченный радиус действия возможной сети. Остальные решения создаются на основе более сложного режима работы Infrastructure. В данном режиме станции взаимодействуют друг с другом через точку доступа (Access Point). Точки доступа соединяются между собой либо с помощью сегментов кабельной сети, либо радиомостами. При этом основным протоколом в организации данной сети является Dynamic Host Configuration Protocol (DHCP), а главным инструментом, реализующим этот протокол, - DHCP-сервер [1]. DHCP - протокол динамической конфигурации узла, позволяющий компьютерам автоматически получать IP-адрес и другие параметры, необходимые для работы в сети Transmission Control Protocol/Internet Protocol (TCP/IP).
При использовании стандартных процедур мобильные устройства на основе ОС Android дают возможность организовать подключение к Wi-Fi-сети через точку доступа и неполнофункциональ-ное подключение к ad-hoc-сети. При таком подключении мобильное устройство посылает запрос на получение ip-адреса от DHCP-сервера, который отсутствует в ad-hoc-сети. Поэтому разработчику при создании своего приложения приходится использовать узконаправленные системные функции и алгоритмы для подключения к такой сети.
Рассмотрим стандартные процедуры поиска доступных беспроводных Wi-Fi-сетей, подключения и работы с ними. Важной особенностью этих процедур является возможность единовременного подключения одного устройства только к одной сети (в случае наличия одного сетевого адаптера). В соответствии со стандартной процедурой работы с беспроводными сетями в устройствах на основе ОС Android пользователь, выбирая соответствующий пункт меню, проводит настройку беспроводных Wi-Fi-сетей. Устройство автоматически начинает поиск доступных сетей в радиусе действия. После выполнения поиска доступные сети выводятся в виде списка на экран. Если найдена предпочтительная или запомненная сеть, устройство автоматически подключается к ней. Запомненной Wi-Fi-сетью в устройствах на основе ОС Android является каждая сеть, подключение к которой уже осуществлялось с этого мобильного устройства. Предпочтительнее сеть с наилучшим
сигналом из списка запомненных. Список доступных сетей обновляется через определенные интервалы времени, длительность которых зависит от версии ОС мобильного устройства и лежит в диапазоне от долей секунды до нескольких секунд. Таким образом, выполнение сканирования сети происходит циклично с заданным периодом времени. Если пользователь выбирает в списке доступных другую сеть, производится автоматическое подключение к этой сети.
Следует обратить внимание на то, что пользователю предоставляется возможность практически непрерывно наблюдать обновленный список доступных сетей. Цикличный бесконечный поиск этих сетей введен для быстрого переподключения пользователя от одной сети к другой, при этом то, что каждый поиск довольно энергозатратный, игнорируется. Необходимо заметить, что данная возможность не является часто востребованной, а комфортное для пользователя время переподключения в обычных режимах составляет несколько секунд. При этом, как отмечалось выше, нет возможности одновременного подключения к нескольким сетям.
На основании вышеизложенного, а также учитывая замечания в работах [2, 3], представляется рациональным с точки зрения энергосбережения и расширения функциональных возможностей использовать следующий обобщенный алгоритм поиска и подключения мобильного устройства к беспроводной Wi-Fi-сети. На начальном этапе производится поиск доступных беспроводных сетей в радиусе действия, далее пользователю предоставляется возможность выбора сети из сформированного списка. После подключения к выбранной сети циклический поиск других доступных сетей больше не производится до того момента, пока этого не пожелает пользователь.
В большинстве случаев разработка ПО для мобильных устройств на основе ОС Android осуществляется на языке Java, поэтому реализация вышеописанной процедуры представлена именно на этом языке [4].
На начальном этапе необходимо обратиться к классу WiFiManager через функцию getSystemSer-vice с параметрами WIFI_SERVICE. Данный класс позволяет получить подробную информацию об адаптере и подключениях к беспроводной Wi-Fi-сети.
На следующем этапе следует убедиться в том, что Wi-Fi-адаптер мобильного устройства включен. Сделать это можно с помощью метода isWifi-Enabled класса WiFiManager, который возвращает значение true при включенном адаптере. Если Wi-Fi-передатчик включен, можно приступить к сканированию беспроводных Wi-Fi-сетей в радиусе действия с помощью метода startScan класса WiFiManager. Результат сканирования сетей записывается в переменную класса ScanResult с помо-
щью функции getScanResults. После этого следует вывести список доступных сетей в объект ListView, используя класс ArrayAdapter. Для объекта ListView нужно обработать процедуру выбора сети и произвести подключение с помощью метода enabledNetWork. При этом параметром подключения является идентификатор (id) поля WiFiConfiguration, поэтому предварительно нужно добавить сеть из класса ScanResult в WiFiConfigu-ration. Если подключаемая беспроводная сеть является ad-hoc-сетью, предлагается следующий вариант подключения. Из настроек приложения (Preferences) извлекаются пароль для подключения к сети, желаемый ip, основной шлюз и предпочитаемые DNS-серверы. Затем с помощью функции setlpAssignment можно установить использование статических параметров подключения. Установка параметров происходит при помощи функций setIpAddress, setGateway, setDNS. После этого следует применить новые параметры сети и добавить в поле WiFiConfiguration.
Далее приведен фрагмент программы, реализующей вышеописанный алгоритм, на языке программирования Java:
public void onItemClick(AdapterView<?> parent, View view,int position, long id)
{ MSR fff = (MSR) LV_Wi Fi.getItemAt Position (position);
ScanResult ggg = fff.SR;
String service = Context.WIFI_SERVICE;
WifiManager wifi = (WifiManager) getSys-temService(service) ;
List<WifiConfiguration> configurations = wifi .getConfiguredNetworks();
final ContentResolver cr = getContentRe-solver();
Pref = getSharedPreferences("MyFile", MODE_PRIVATE);
String savedYourIP = Pref.getString(YOUR_ IP, " " ) ;
String savedPASS = Pref.getString(PASS, "");
WifiConfiguration dd = new WifiConfigura-tion();
i f (ggg.capabilities.length()==0)
{dd .SSI D = 'V" + ggg.SSID + 'V"; dd.hiddenSSID = true; dd.BSSID = ggg.BSSID; dd.status = WifiConfiguration.Sta-tus.ENABLED;
dd.allowedKeyManagement.set(Wi fiConfi-guration.KeyMgmt.NONE);
try{ setIpAssignment("STATIC", dd); //or "DHCP" for dynamic setting
setIpAddress(InetAddress.getByNa-me(savedYourIP), 24, dd);
setGateway(InetAddress.getByNa-me ("4.4.4.4") , dd);
setDNS(InetAddress.getByNa-me ("4.4.4.4") , dd);
wifi.updateNetwork(dd); } catch(Exception e) { e.printStackTrace();} int res = wifi.addNetwork(dd); boolean b = wifi.enableNetwork(res, true);}
else {dd.SSID = 'V" + ggg.SSID + '\"'; dd.preSharedKey = "\""+savedPASS+"\""; dd.hiddenSSID = true; dd.BSSID = ggg.BSSID; dd.status = WifiConfiguration.Sta-tus.ENABLED;
dd.allowedGroupCiphers.set(Wi fiConfigu-
ration.GroupCipher.TKIP);
dd.allowedGroupCiphers.set(Wi fiConfigu-ration.GroupCipher.CCMP);
dd.allowedKeyManagement.set(Wi fiConfi-guration.KeyMgmt.NONE);
dd.allowedKeyManagement.set(Wi fiConfi-guration.KeyMgmt.IEEE8021X) ;
dd.allowedKeyManagement.set(Wi fiConfi-guration.KeyMgmt.WPA_EAP);
dd.allowedKeyManagement.set(Wi fiConfi-guration.KeyMgmt.WPA_PSK);
dd.allowedPairwiseCiphers.set(Wi fiCon-figuration.Pairwi seCipher.TKIP) ;
dd.allowedPairwiseCiphers.set(Wi fiCon-figuration.Pairwi seCipher.NONE) ;
dd.allowedPairwiseCiphers.set(Wi fiCon-figuration.Pairwi seCipher.CCMP) ;
dd.allowedProtocols.set(Wi fiConfigu-ration.Protocol.RSN);
dd.allowedProtocols.set(Wi fiConfigura-tion.Protocol.WPA);
dd.allowedAuthAlgorithms.set(Wi fiConfi-guration.AuthAlgorithm.SHARED) ;
dd.allowedAuthAlgorithms.set(Wi fiConfi-guration.AuthAlgorithm.LEAP);
dd.allowedAuthAlgorithms.set(Wi fiConfi-guration.AuthAlgorithm.OPEN);
int res = wifi.addNetwork(dd);
boolean b=wifi.enableNetwork(res, true);}}
После подключения для получения более подробной информации о сети используют класс Wi-Filnfo. Используемыми в данном случае методами этого класса являются получение имени подключенной сети WiFiInfo.getSSID, MAC-адреса подключенной сети WiFiInfo.getBSID и значения уровня сигнала сети WiFiInfo.getSingnalLevel. Предложенная последовательность этапов не предполагает циклического непрерывного повторения, а выполняется по требованию пользователя, что позволяет сократить энергопотребление мобильного устройства. Внедряя данную процедуру в любое сетевое приложение для мобильных устройств на основе ОС Android, можно сократить их энергозатраты во время работы с беспроводными Wi-Fi-сетями, а также автоматизировать процесс поиска и настройки ad-hoc-сетей.
В ходе исследований были проведены вычислительные эксперименты с целью оценки работоспособности и эффективности предложенного подхода. В качестве мобильного устройства использовались смартфоны (коммуникаторы) HTC Sensation и Samsung Galaxy S на платформе ОС Android (версии 2.2-4.1.1). Исследования показали, что при прочих равных условиях энергопотребление вышеназванных смартфонов при работе с Wi-Fi-сетью уменьшалось в среднем на 10 %.
Литература
1. Некоторые особенности построения беспроводных сетей. URL: http://citforum.ru/hardware/mobile/wlan/index.shtml (дата обращения: 10.01.2013).
2. Пучков А.Ю., Павлов Д.А. Варианты построения алгоритма поиска решения обратных задач с применением нейронных сетей // Программные продукты и системы. 2012. № 2 (98). С. 149-153.
3. Dli M.I., Gimarov V.A., Kruglov V.V., Journ. of Computer and Systems Sciences International, 2004, Vol. 43, no. 3, pp. 414-418.
4. Шилдт Г. Полный справочник по Java. Java SE™ 6 Edition. М.: Вильяме, 2007. 1040 с.
References
1. Gurevich Yu., Petrishchev V., Ekspress-Elektronika [Express-Electronics], 2003, no. 12, Available at: http://citforum.ru/ hardware/mobile/wlan/index.shtml (accessed 10 Jan. 2013).
2. Puchkov A.Yu., Pavlov D.A., Programmnye produkty i systemy [Software and Systems], Tver, 2012, no. 2(98), pp. 149-153.
3. Dli M.I., Gimarov V.A., Kruglov V.V., Journ. of Comp. and Systems Sc. Intern., 2004, Vol. 43, no. 3, pp. 414-418.
4. Shildt G., Java SE 6: The Complete Reference, 7th Ed., McGraw-Hill/Osborne Media, 2006, 1024 p.
УДК 519.68
УМАЭТЕЯ. - СРЕДА ДЛЯ РАЗРАБОТКИ И ВЕРИФИКАЦИИ ВЕРОЯТНОСТНЫХ МУЛЬТИАГЕНТНЫХ СИСТЕМ
П.В. Лебедев, аспирант (Тверской государственный университет, ул. Желябова, 33, г. Тверь, 170100, Россия, [email protected])
Рассматривается программная система для описания, редактирования, моделирования работы и верификации вероятностных мультиагентных систем (ВМАС). Кратко описаны архитектура мультиагентной системы, семантика ее работы. Рассматриваемая программная система позволяет создавать несколько интеллектуальных агентов, задавать им параметры, которые могут иметь различные типы данных, а также управлять обменом сообщениями между агентами с заданными вероятностными каналами связи. Каждый агент выполняет программу на каждом шаге работы системы, описываемую на некотором C-подобном процедурном языке. Предложен синтаксис этого языка, рассмотрены его сходство и различия с языком C, специальные средства описания вероятностных переходов ВМАС и обмена сообщениями между интеллектуальными агентами. Таким образом, состояния агентов и вероятностные действия образуют вероятностное пространство состояний, которое моделируется цепями Маркова. Верификация цепей Маркова - вычисление вероятности выполнения свойств системы, которые определяются формулами специальных (темпоральных) логик. Верификация выполняется методом проверки на модели. В программной системе реализованы алгоритм построения цепи Маркова по описанной ВМАС, а также несколько алгоритмов верификации полученной цепи для темпоральных логик PCTL и PLTL и их модификаций, кратко описаны синтаксис и семантика этих логик. Представлены пример описания ВМАС в программной системе и примеры верификации ВМАС для нескольких конкретных формул.
Ключевые слова: мультиагентные системы, интеллектуальный агент, динамическая система, верификация, темпоральные логики, PCTL, PTL, PLTL, проверка на модели, цепь Маркова, вероятность, вероятностная программа, граф состояний.
VMASTER - ENVIRONMENT FOR PROBABILISTIC MULTIAGENT SYSTEM DEVELOPMENT
AND VERIFICATION
Lebedev P. V., postgraduate (Tver State University, Zhelyabova St., 33, Tver, 170100, Russia, [email protected])
Abstract. This paper considers the program system for description, editing, modeling and verification of probabilistic multi-agent systems (PMAS). The architecture of PMAS and semantics of its work is briefly outlined. Considered program system allows creating several intelligent agents, setting their parameters with various data types and operating message exchange between agents with set probabilistic communication channels. At every step of work of the system every agent performs the program described on some C-like procedural language. There is syntax of this language, its similarity and distinction with C-language, description features of PMAS probabilistic transitions and message exchange between intelligent agents. Therefore, states of agents and probabilistic actions create probabilistic space of states modeled by Markov chains. Markov chains verification is probability calculation of system properties performance defined by special logics formulas (temporal). Verification is performed by model checking method. The algorithm of Markov chain construction for PMAS and some algorithms of the derived Markov chain for temporal logics PCTL and PLTL and for its modifications are realized in the program system. Syntax and semantics of these logics are briefly described. The example of PMAS description in the program system and examples of PMAS verification for some concrete formulas are presented.
Keywords: multi-agent systems, intelligent agent, dynamic system, verification, temporal logic, PCTL, PTL, PLTL, model checking, Markov chain, probability, probabilistic program, state graph.
В данной статье описывается программная система VMASTER, предназначенная для описания, редактирования, моделирования работы и верификации вероятностных мультиагентных систем (ВМАС). Интеллектуальные агенты таких систем используют стохастичность в программе выполнения действий на каждом шаге работы, не-
надежными также могут быть почтовые системы передачи сообщений между агентами. Такие системы можно моделировать конечными цепями Маркова.
Основной подход к их верификации основан на так называемом методе проверки на моделях (model checking), который в настоящее время широко