Введение
Актуальность
Сегодня, во времена, когда компьютерные технологии проникли во все сферы деятельности человека, трудно представить какие-либо научные исследование без использование специальных программ, моделирующих то или иное явление или процесс.
Физика в первую очередь требует компьютерно-симуляционного подхода к решению поставленных задач. В работе будет рассказано о применение так называемого генетического алгоритма, который основывается на процессе естественного отбора, то есть выбора наилучших показателей для элемента отбора, в исследованиях явления невидимости объектов, которая достигается за счет маскирующей оболочки, обладающей определенными свойствами преломления электромагнитных волн. Преимущество этого метода состоит также в том, что для расчета оптимальных показателей не требуется сложных формул – все опирается на геометрическую оптику, а именно на принцип Гюйгенса-Френеля.
Эксперимент с маскирующей оболочкой, для которого и была написана программа, был выбран не случайно – результаты этого исследования, проведенного в университете ИТМО, были опубликованы в журнале Успехи Физических Наук, однако несмотря на весь данный материал точных характеристик оболочки не было. Этот факт и побудил создать данную программу, чтобы в дальнейшем воспроизвести эксперимент приобретения невидимости объектом.
Цель: изучить метод генетического алгоритма в компьютерном моделировании и применение его на практике для расчета физических параметров сферической неоднородной маскирующей оболочки.
План работы:
Изучить информацию об основных понятиях, связанных с радио-прозрачностью;
Изучить литературу и материалы о принципе работы генетического алгоритма;
Проанализировать полученную информацию;
Графически смоделировать ситуацию с объектом, невидимым в радиодиапазоне;
Разработать действующую программу на основе генетического алгоритма;
Продолжение исследований, направленных на получение точных значений маскирующего покрытия.
Проектирование и создание маскирующего покрытия на основе полученных данных.
Задачи:
Изучение материала по данной теме.
Формулирование основной идеи генетического алгоритма.
Написание компьютерной программы, работающий по принципу генетического алгоритма.
Методы:
Работа с информационными источниками.
Компьютерное моделирование.
§ 1.1 Генетический алгоритм
Генетический алгоритм — это эвристический алгоритм поиска, используемый для решения задач оптимизации и моделирования путём случайного подбора, комбинирования и вариации искомых параметров с использованием механизмов, аналогичных естественному отбору в природе.
Критерии остановки генетического алгоритма:
Нахождение глобального, либо субоптимального решения.
Исчерпание числа поколений, отпущенных на эволюцию.
Исчерпание времени, отпущенного на эволюцию.
Исчерпание времени, на улучшение предыдущего результата.
Область применения генетического алгоритма обширна: оптимизация функций, оптимизация запросов в базах данных, разнообразные задачи на графах, обучение искусственной нейронной сети, задачи компоновки, составление расписаний, игровые стратегии, искусственная жизнь, биоинформатика.
Генетически алгоритм
§ 1.2. Невидимость с точки зрения геометрической оптики
В основе нашего исследования лежит эксперимент ИТМО с маскирующей оболочкой, работающей за счет явления волнового обтекания (подробнее об экспериментах в параграфе 1.4). Если в ходе университетского исследования для расчета траектории хода лучей были использованы Максвелла, то в нашей работе все опирается на геометрическую оптику.
§ 1.3. Принцип Гюйгенса-Френеля
Принцип Гюйгенса является развитием принципа, который ввёл Христиан Гюйгенс в 1678 году: каждая точка фронта (поверхности, достигнутой волной) является вторичным (то есть новым) источником сферических волн. Огибающая фронтов волн всех вторичных источников становится фронтом волны в следующий момент времени.
Эффект Гюйгенса-Френеля
§ 1.4 Покрытие, разработанное Университетом ИТМО
Подробности экспериментов с невидимостью, проводившихся в университете ИТМО были опубликованы в журнале УФН в 2014 году. Работа покрытия основывалась на явление волнового обтекания, однако данный метод был использован еще раньше – в 2007 году английским физиком Джоном Пендри.
Результаты исследований ИТМО
Глава II Практическая часть
§ 2.1 Компьютерное моделирование
В ходе проведенных нами работ была написана программа на языке программирования Pascal. Данный код включает в себя генетический алгоритм.
Программа иллюстрирует движение лучей в неоднородной сферической оболочке, состоящей из 15 слоев (данное количество взято для простоты вычислений). Вычисление траектории лучей производится через принцип Гюйгенса-Френеля, который был описан ранее. Главной целью является вычисление оптимальных показателей преломления для каждого из слоев покрытия, при которых направление лучей при выходе в оболочку будет совпадать с направление лучей на входе. Точное значение показателей преломления дает возможность подбора материалов и создание действующей оболочки.
Разберем принцип работы данной программы. Первая часть программы заключает в себя инициализацию переменных и констант. Далее задаются показатели преломления для каждого слоя. Они являются элементами массива. Затем, идет вычисление хода лучей по принципу Гюйгенса-Френеля. На данном этапе количество лучей равно 60. Для каждого луча проверяется следующее: проходит ли луч через внутреннюю полость оболочки и угол, под которым луч выходит из оболочки. Если данные условия выполняются, то особой переменной, которая отвечает за такие «неправильные» лучи присваивается значение 2 (единица за каждое выполненное условие). После расчета суммируется количество «неправильных» лучей. Это является отправной точкой в работе генетического алгоритма – от этого показателя зависит дальнейшее выполнение программы: при минимальном количестве ошибок программа заканчивает свою работу и нам доступны точные показатели преломления.
Стоит отметить также то, что все это выводится на экран с помощью библиотеки GraphABC, а полученное изображение сохраняется в файл, в имени которого содержится информация о количестве «ошибочных» лучей.
Алгоритм работы программы
Программный код:
Programabc;
usescrt, graphABC;
programAlgorithm;
usescrt, graphABC;
const
ox1 = 600;
oy1 = 350;
or1 = 300;
ox2 = 600;
oy2 = 350;
or2 = 250;
ox3 = 600;
oy3 = 350;
or3 = 200;
ox4 = 600;
oy4 = 350;
or4 = 150;
dt = 0.01;
n0 = 1;
n1 = 1.5;
c = 2;
var
i, j: integer;
da: real; r1: real; r2: real;
xx1, yy1, x1, x2, y1, y2: real;alpha: real;
a: real;
nn: array [1..15] of real;pic: Picture;
filename: integer;
err, errors: integer;
inobj: boolean; george, dodo: real;
errorarray: array [1..10] of integer;
z: real;
procedure init_N; var
i: integer;
begin
for i := 1 to 60do
begin
nn[i] := 1 + 0.1 * i + z;
setpencolor(clBlack);
setbrushcolor(clLightBlue);
pic.Rectangle(100, 60 + 10 * i, round(100 + 10 * nn[i]), 60 + 10 * (i + 1));
setbrushcolor(clLightGray);
pic.TextOut(20, 60 + 10 * i, 'n[' + IntToStr(i) + '] = ' + FloatToStr(nn[i]));
end;
for i := 7 to 15 do
begin
nn[i] := 1 + 0.1 * i+1 + z;
setpencolor(clBlack);
setbrushcolor(clLightBlue);
pic.Rectangle(100, 60 + 10 * i, round(100 + 10 * nn[i]), 60 + 10 * (i + 1));
setbrushcolor(clLightGray);
pic.TextOut(20, 60 + 10 * i, 'n[' + IntToStr(i) + '] = ' + FloatToStr(nn[i]));
end;
z := z + 0.1;
end;
function n(x, y: real): real;
var
i: integer;
begin
n := n0;
for i := 1 to 15 do
if (sqr(x - ox1) + sqr(y - oy1) < sqr(310 - i * 10)) then n := nn[i];
if (sqr(x - ox4) + sqr(y - oy4) < sqr(or4)) then n := n0;
end;
begin
setfontsize(7);
for j := 1 to 10 do
begin
setwindowsize(1200, 700);
clearwindow;
pic := Picture.Create(1200, 700);
with pic do
begin
setbrushcolor(clLightGray);
setpencolor(clBlack);
rectangle(0, 0, 1200, 700);
setbrushcolor(clLightBlue);
circle(ox1, oy1, or1);
setbrushcolor(clLightGray);
circle(ox4, oy4, or4);
a := 1;
init_N;
setbrushcolor(clLightGray);
errors := 0;
for i := 1 to 60 do
begin
inobj := false;
alpha := 0;
x1 := 50;
y1 := 10 * (4 + i);
moveto(round(x1), round(y1));
x2 := x1 + a * sin(alpha);
y2 := y1 - a * cos(alpha);
setpencolor(RGB(i * 4, 0, 255 - i * 4));
repeat
r1 := c * dt / n(x1, y1);
r2 := c * dt / n(x2, y2);
da := arctan((r2 - r1) / 1);
alpha := alpha + da;
xx1 := x1;
yy1 := y1;
x1 := x1 + r1 * cos(alpha);
y1 := y1 + r1 * sin(alpha);
x2 := x2 + r2 * cos(alpha);
y2 := y2 + r2 * sin(alpha);
if sqrt(sqr(x1 - ox4) + sqr(y1 - oy4)) < or4 then inobj := true;
pic.Line(round(xx1), round(yy1), round(x1), round(y1));
until (x1 > 1200) or (y1 > 700) or (x1 < 0) or (y1 < 0) or (KeyPressed);
pic.Draw;
if inobj then err := err + 1;
pic.TextOut(1000, 10 * (4 + i), 'alpha(' + IntToStr(i) + ') = ' + IntToStr(round(alpha * 180 / pi)));
if abs(alpha * 180 / pi) <= 30 then err := err + 1;
pic.TextOut(1100, 10 * (4 + i), 'err = ' + IntToStr(err));
errors := errors + err;
errorarray[j] := errors + err;
err := 0;
if (errorarray[j]>errorarray[j+1]) and (errorarray[j+1]>errorarray[j+2]) then
exit;
end;
pic.TextOut(1000, 660, '------------------------------------');
pic.TextOut(1000, 670, 'Errors = ' + IntToStr(errors));
pic.TextOut(1000, 680, IntToStr(errorarray[j]));
end;
pic.Save(inttostr(j) + '(' + inttostr(errorarray[j]) + ')' + ' [' + inttostr(errors) + '].jpg');
end;
end.
Заключение
В ходе работ был собрано большое количество информации на тему невидимости, написана программа, показывающая принцип маскировки объектов с помощью оболочки, работа которой основана на явлении волнового обтекания. Генетический алгоритм поможет выяснить показатели преломления оболочки.
Целью следующих работ является создание макета и применение направленных антенн для измерения области тени за объектом, а также разработка систем невидимости в оптическом диапазоне с использование эффекта Керра.
Источники информации
Курейчик В. М., Лебедев Б. К., Лебедев О. К. Поисковая адаптация: теория и практика. — М: Физматлит, 2006. — 272 с.
Гладков Л. А., Курейчик В. В., Курейчик В. М. Генетические алгоритмы: Учебное пособие. — 2-е изд. — М: Физматлит, 2006. — 320 с.
Гладков Л. А., Курейчик В. В, Курейчик В. М. и др. Биоинспирированные методы в оптимизации: монография. — М: Физматлит, 2009. — 384 с.
Рутковская Д., Пилиньский М., Рутковский Л. Нейронные сети, генетические алгоритмы и нечеткие системы. — 2-е изд. — М: Горячая линия-Телеком, 2008. — 452 с.
Скобцов Ю. А. Основы эволюционных вычислений. — Донецк: ДонНТУ, 2008. — 326 с.
«Метод краевых волн в физической теории дифракции», Уфимцев П. Я., изд. «Советское радио», 1962, тираж 6.5 т. экз.
А. Н. Лагарьков, М. А. Погосян Фундаментальные и прикладные проблемы стелс-технологий// Вестник РАН. — 2003. — Т. 73, № 9.
Российская газета: «Российские „стелс-технологии“ востребованы на мировом рынке» (Интервью с чл.-корр. РАН А. Н. Лагарьковым)
Бочкарев А. М., Долгов М. Н. «Радиолокация малозаметных летательных аппаратов» Зарубежная радиоэлектроника. — 1989. — № 2.
Смирнов А. Радиолокационная заметность объектов // Армейский сборник: журнал. — 2013. — Ноябрь (№ 11).
Митио Каку Невидимость // Физика невозможного — Альпина нон-фикшн, 2009.
«Элементарный учебник физики», Г. Ландсберг, том 1; 2; 3, Москва, 1952
«Метод краевых волн в физической теории дифракции», Уфимцев П. Я., изд. «Советское радио», 1962
Бочкарев А. М., Долгов М. Н. «Радиолокация малозаметных летательных аппаратов», «Зарубежная радиоэлектроника» — 1989
«Радиолокационная заметность объектов», Смирнов А.,2013.
Прохоров А.М. Физический Энциклопедический Словарь. — Советская энциклопедия, 1983.
Сивухин Д. В. Общий курс физики. — М.. — Т. IV. Оптика.
Звелто О. Принципы лазеров. — Лань, 2008.
«Экспериментальные реализации маскирующих покрытий»//Успехи Физических Наук, Том 185, №2, февраль 2015г.;