m Моделирование в Matlab стратегии развертывания двумерных внутренних инфракрасных датчиков на основе алгоритма оптимизации виртуальной силы

Оглавление

1. Эффект имитации алгоритма

2. Алгоритмы предполагают обзор теоретических знаний

3. Базовая программа MATLAB

4. Полный файл кода алгоритма


1. Эффект имитации алгоритма

Результаты моделирования в Matlab2022a следующие:

 

 

2. Алгоритмы предполагают обзор теоретических знаний

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

1. История исследований

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

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

2. Алгоритм оптимизации виртуальной силы

       Алгоритм оптимизации виртуальной силы представляет собой алгоритм оптимизации, основанный на физических моделях. Он оптимизирует решение задачи оптимизации, моделируя действие физической механики. Основная идея состоит в том, чтобы выразить решение задачи, которую нужно оптимизировать, в виде набора положений точек, а затем ввести некоторые виртуальные силы (такие как отталкивание, притяжение и т. д.) для оптимизации положений точек.

Алгоритм оптимизации виртуальной силы включает следующие этапы:

Расположение точек инициализации: случайным образом сгенерируйте расположение набора начальных точек.

Рассчитайте виртуальную силу: в соответствии с характеристиками задачи рассчитайте отталкивание и притяжение каждой точки.

Обновите положение точки: в соответствии с действием виртуальной силы обновите положение каждой точки.

Условие завершения: после достижения заданного условия завершения выводится оптимальное решение.

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

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

       Построение 2D-модели помещения. Во-первых, вам необходимо построить 2D-модель помещения, включая размер комнаты, планировку, стены, мебель и другую информацию. Его можно смоделировать с помощью программного обеспечения для 2D-моделирования или отсканировать в режиме реального времени с помощью лазерного сканера.

       Определите количество и тип датчиков: определите количество и тип инфракрасных датчиков, которые необходимо развернуть, исходя из фактических потребностей.

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

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

(1) Отталкивание: используется для предотвращения перекрытия датчиков. Сила отталкивания обратно пропорциональна расстоянию между датчиками, чем меньше расстояние, тем больше сила отталкивания.

(2) Гравитация: используется для притяжения датчика к целевой области. Сила гравитации обратно пропорциональна расстоянию между датчиком и целевой областью, чем ближе расстояние, тем больше сила гравитации.

(3) Отталкивание от стены: используется для предотвращения столкновения датчика со стеной. Отталкивание от стены обратно пропорционально расстоянию между датчиком и стеной, чем меньше расстояние, тем больше отталкивание.

Обновите положение точки: в соответствии с действием виртуальной силы обновите положение каждой точки. В частности, ускорение каждой точки вычисляется в соответствии с величиной и направлением виртуальной силы, воспринимаемой каждой точкой, а затем скорость и положение каждой точки обновляются в соответствии с ускорением.

Повторяйте шаги 4 и 5 до тех пор, пока не будет достигнуто заданное условие завершения.

Выведите оптимальное решение: при достижении условия завершения выведите оптимальное положение развертывания датчика.

охват f1

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

сложность установки f2

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

f3, количество сенсоров после оптимизации

        Количество датчиков, то есть количество после каждой оптимизации, находится на максимальном заданном значении, и чем меньше значение, тем лучше.

3. Базовая программа MATLAB

...........................................................................
 
%下面这个for是优化适应度值的初始化计算
for i=1:Num
    XYZ1=[x(i,1:(dim-2)/2);x(i,1+(dim-2)/2:(dim-2))];
    NUM1          = 10;
    NUM2          = 10;
    [p(i),X1,Y1,f1,f2] = func_obj1(XYZ1,NUM1,NUM2);
    y(i,:)= x(i,:);
end
%全局最优
pg = x(1,:);             
%下面这个for是优化适应度值的初始化计算 
for i=2:Num
    XYZ1=[x(i,1:(dim-2)/2);x(i,1+(dim-2)/2:dim-2)];
    NUM1          = 10;
    NUM2          = 10;
    [pa(i),X1,Y1,f1,f2] = func_obj1(XYZ1,NUM1,NUM2);
    [pb(i),X1,Y1,f1,f2] = func_obj1(XYZ1,NUM1,NUM2);
    if pa(i) < pb(i)
       pg=x(i,:);
    end
end

for t=1:MAXGEN%开始优化
    t
    for i=1:Num
        Fx(i,:) = w*Fx(i,:)+rand*(pg(1:(dim-2)/2)        -x(i,1:(dim-2)/2));%水平力
        Fy(i,:) = w*Fy(i,:)+rand*(pg(1+(dim-2)/2:(dim-2))-x(i,1+(dim-2)/2:(dim-2)));%垂直力
        Fxy     = sqrt(Fx(i,:).^2+Fy(i,:).^2);
        
        Fxn(i,:) = w*Fxn(i,:)+rand*(pg(dim-1)-x(i,dim-1));%水平力
        Fyn(i,:) = w*Fyn(i,:)+rand*(pg(dim)  -x(i,dim));%垂直力
        Fxyn    = sqrt(Fxn(i,:).^2+Fyn(i,:).^2);        
        %更新变量
        x(i,1:(dim-2)/2)         = x(i,1:(dim-2)/2)+Fx(i,:)./Fxy*max_sensor;
        x(i,1+(dim-2)/2:(dim-2)) = x(i,1+(dim-2)/2:(dim-2))+Fy(i,:)./Fxy*max_sensor;
        x(i,dim-1) = x(i,dim-1)+Fxn(i,:)./Fxyn*max_sensor;
        x(i,dim)   = x(i,dim)  +Fyn(i,:)./Fxyn*max_sensor;        
        
        
        XYZ1=[x(i,1:(dim-2)/2);x(i,1+(dim-2)/2:(dim-2))];
        NUM1        = floor(x(i,dim-1));
        NUM2        = floor(x(i,dim));
        if NUM1>=N1
           NUM1=N1;
        end
        if NUM2>=N2
           NUM2=N2;
        end
        
        %适应度值的计算 
        [pa(i),X1,Y1,f1,f2,NX1,NX2] = func_obj1(XYZ1,NUM1,NUM2);
        if pa(i)<p(i)
           p(i)  = pa(i);
           y(i,:)= x(i,:);
        end
 
        XYZ1=[pg(1:(dim-2)/2);pg(1+(dim-2)/2:(dim-2))];
        NUM1        = floor(x(i,dim-1));
        NUM2        = floor(x(i,dim));
        if NUM1>=N1
           NUM1=N1;
        end
        if NUM2>=N2
           NUM2=N2;
        end
        %适应度值的计算 
        [pb(i),X1,Y1,f1,f2,NX1,NX2] = func_obj1(XYZ1,NUM1,NUM2);
        if p(i)<pb(i)
           pg=y(i,:);
        end
    end
    XYZ1=[pg(1:(dim-2)/2);pg(1+(dim-2)/2:(dim-2))];
    NUM1        = floor(x(i,dim-1));
    NUM2        = floor(x(i,dim));
        if NUM1>=N1%变量的约束
           NUM1=N1;
        end
        if NUM2>=N2%变量的约束
           NUM2=N2;
        end
    [pc,X1,Y1,f1,f2,NX1,NX2] = func_obj1(XYZ1,NUM1,NUM2);%适应度值的计算 
    Pbest(t)  = pc;
end
 
 

figure;
plot(1:10:MAXGEN,1-Pbest(1:10:end),'-r>',...
    'LineWidth',1,...
    'MarkerSize',6,...
    'MarkerEdgeColor','k',...
    'MarkerFaceColor',[0.9,0.9,0.0]);
grid on
xlabel('迭代次数');
ylabel('虚拟力算法优化过程');
legend('Average fitness');

%覆盖率
disp('覆盖率');
f1
%安装难易度
disp('安装难易度');
f2



[X1,Y1,NUM1_new,NUM2_new]=func_delete([X1;Y1],NX1,NX2);
%最优传感器数量
disp('最优传感器数量');
Nopt1 = NUM1_new
Nopt2 = NUM2_new

figure;
%显示障碍物
for i = 1:Nr1
    plotcube([L(i) W(i) 0],[X3(i),Y3(i),0],1,[0.8 0.9 0]);
    hold on
end
for i = 1:Nr2
    [x,y]=circle(R4(i),X4(i),Y4(i));
    plot(x,y,'g','linewidth',2);
    hold on
end
for i = 1:length(X1)
    if i<=Nopt1
    [x,y]=circle(Rad1,X1(i),Y1(i));
    plot(x,y,'r','linewidth',1);
    else
    %第一、传感器不用球或者圆替代,进行和原来一样的显示    
    rectangle('Position', [X1(i)-Rad2,Y1(i)-Rad2,2*Rad2,2*Rad2], 'LineWidth', 1, 'EdgeColor', 'b', 'Clipping', 'off')
    end
    
    hold on
    plot(X1(i),Y1(i),'r.');
end

view([0,90]);
axis equal
axis([0,SCALE,0,SCALE]);
09_057_m

4. Полный файл кода алгоритма

В

Supongo que te gusta

Origin blog.csdn.net/hlayumi1234567/article/details/131137552
Recomendado
Clasificación