네트워크 매핑 및 데이터 축소의 여러 파도의 (a) 미사일 발사 계획

머리말

2017 대학원 수학적 모델링 주제 E 미사일 발사 계획의 여러 파도 , 미사일 시작 위치 선택 문제의 주제에 시작합니다. 먼저 등등 점의 분포를 매핑하고, 미사일 기동 전술에 대해 많이뿐만 아니라 미사일 발사대의 작동 매개 변수를 알려줍니다. 그러한 아래 네트워크 다이어그램, 및 어태치먼트 포인트의 데이터가 발생했습니다.

지도

도로의 전투 영역 다이어그램

별관에서 정보를 좌표


물론, 질문에 대답하기 전에, 네트워크 다이어그램을 복구해야합니다.


포인트 번호

첫째, 포인트의 문제, 스케줄링 문제 번호가있다.

전체 네트워크 다이어그램에서 지점 (130), 상기

  • 대기 지역 D1 ~ D2
  • 재판 영역 Z01 ~ Z06
  • 발광 영역의 F01 ~ F60
  • 도로 노드 J01 ~ J62
    • J01 ~ J11 주요 도로 1
    • J12 ~ J20 주요 도로 2
    • 다른 도로 J21 ~ J62

문자에 대응하는 번호를 우선 순위에 따라 상기 정보에 따르면.

영상

포인트 번호 예


도 네트워크 접속을 판단

0과 1 분명히, 이것은 그래프 이론의 기술은, 프로그래머의 눈 네트워크 그래프 행렬은, N 지점이 있으며, 엘리먼트 인덱스를 찾을 대응 낮은 랭크 N * N 매트릭스가있을 것이다 0이가 대표 점 사이의 접속의 존재를 표시하면 양질이고, 그렇지 않으면 어떠한 연결이 존재하지 않는다.

그래서 우리는 130 점, 심판 다음에있을 것입니다. , 첫 번째 점을 찾아 마지막 포인트 문자를 기록합니다.

연결 지점 결정


포인트 텍스트 위치

텍스트의 포인트 조정해야하므로 여기 비교적 가까운 (130)는, 포인트, 수평 및 수직 배향막에 따른 캐릭터의 위치가 배치되어있다.

matlab에 텍스트 정렬
그들의 모드 (수평 / 수직) 왼쪽 / 위 에 /에서 오른쪽 / 아래로
HorizontalAlignment로 왼쪽 센터 권리
verticalAlignment 상단 중간 바닥

두 배향의 임의의 조합으로, 텍스트는 점에서 아홉 주쯤 임의의 위치에 고정 될 수있다.


시간이 많이 소요되는 매트릭스를 운전

네트워크 연결도 마무리는 임의의 두 지점 사이의 거리가 연결되지 않으면, 거리가 무한대 계산 될 수 있으며, 0 점의 거리가 같은 경우. 다음과 같은 다양한 모델 A에 대한 그것의 속도, 다른 주요 도로와 주행 속도는 다른 B, C는 다르다 :

발사 차량 기본 정보
주요 도로 속도 (km / h) 기타 도로 속도 (km / h)
모델 A를 6 (70) (45)
모델 B 6 (60) (35)
C 자동차 (12) (50) (30)

최종 조작이 전체 모델을 포함하는 경우, 실제로는 각각의 세그먼트에 대한 데이터의로드 시간 소모적 인 계산에 관여하기 때문에, 차량이 도로의 시간이 소요되는 행렬의 도로망 차량 유형별로 해결할 필요하다는 것이다. 그것을 충분 매트릭스 (포인트 매트릭스를 제외하고) 당신이 포인트 사이가 될 수 매트릭스를 가속화 할 점 사이의 거리에 의해 구분된다.


질문

기본 데이터

기본 데이터를 보려면 클릭하세요


소스 표시

%% 准备存储空间
clc, clear, close all

%% 导入整理的数据
[~,~,point] = xlsread('data','网络图','A2:B131'); % 读取点位序号及编号
[point_locat,~,~] = xlsread('data','网络图','C2:D131'); % 读取点位坐标
[~,point_connect,~] = xlsread('data','网络图','E2:J131'); % 读取点位连接
[~,point_text_place,~] = xlsread('data','网络图','K2:L131'); % 读取点位文字摆放位置

%% 计算连接判断矩阵
is_connect = zeros(130,130); % 记录点位连接判断,0表示不连接,1表示连接
for i = 1:130
    for j = 1:6
        if ~isempty(point_connect{i,j})
            [row,~] = find(strcmp(point, point_connect{i,j})); % 找到当点位的序号
            is_connect(i,row) = 1; % 记录连接情况
        end
    end
end
xlswrite('data',is_connect,'连接判断矩阵');

%% 计算点位间距离
point_distance = pdist2(point_locat,point_locat).*is_connect; %.*triu(ones(m,m),0);
point_distance(point_distance == 0) = inf; % 未连接点位间距离变为无穷大
xlswrite('data',point_distance,'距离矩阵');

%% 点位序号编组
D = [1:2]; % 待机区域点位
Z = [1:6] + 2; % 转载区域点位
F = [1:60] + 2 + 6; % 发射区域点位
J1 = [1:11] + 2 + 6 +60; % 主干道1点位
J2 = [12:20] + 2 + 6 +60; % 主干道2点位
J3 = [21:62] + 2 + 6 + 60; % 普通道路点位

%% 画网络连接图
for k = 1:3
    figure(k);set(gcf,'outerposition',get(0,'screensize'));hold on;
    % 画点位
    hD = plot(point_locat(D,1),point_locat(D,2),'rp','markersize',14,'linewidth',2);
    hZ = plot(point_locat(Z,1),point_locat(Z,2),'g+','markersize',8,'linewidth',2);
    hF = plot(point_locat(F,1),point_locat(F,2),'b^','markersize',8,'linewidth',2);
    hJ = plot(point_locat([J1,J2,J3],1),point_locat([J1,J2,J3],2),'ko','markersize',8,'linewidth',2);
    % 画主干道
    hJ1 =  plot([point_locat(J1(1:10),1),point_locat(J1(2:11),1)],[point_locat(J1(1:10),2),point_locat(J1(2:11),2)],'r-','linewidth',3);
    hJ1 =  plot([point_locat(J2(1:8),1),point_locat(J2(2:9),1)],[point_locat(J2(1:8),2),point_locat(J2(2:9),2)],'r-','linewidth',3);
    % 画连线图
    for i = 1:130
        for j = 1:130
            if is_connect(i,j) == 1
                plot([point_locat(i,1),point_locat(j,1)],[point_locat(i,2),point_locat(j,2)],'k-');
                if k == 3
                    text((point_locat(i,1)+ point_locat(j,1))/2,(point_locat(i,2)+ point_locat(j,2))/2,sprintf('%.1f',point_distance(i,j)));
                end
            end
        end
        if k == 1
            % 点位编号网络图
            text(point_locat(i,1),point_locat(i,2),num2str(point{i,1}),'horizontalAlignment',point_text_place{i,1},'verticalAlignment',point_text_place{i,2},'fontsize',14);
        elseif k == 2
            % 点位序号网络图
            text(point_locat(i,1),point_locat(i,2),point{i,2},'horizontalAlignment',point_text_place{i,1},'verticalAlignment',point_text_place{i,2},'fontsize',14);
        end
    end
    axis([0,300,0,150]);set(gca,'fontsize',24);xlabel('x(km)'),ylabel('y(km)');
    legend('待机地点','转载地点','发射地点','道路节点','主干道');box on
    if k == 1
        print(gcf,'-djpeg','-r300','作战区域道路点位序号网络图.jpg');
    elseif k == 2
        print(gcf,'-djpeg','-r300','作战区域道路点位编号网络图.jpg');
    else
        print(gcf,'-djpeg','-r300','作战区域道路点位距离网络图.jpg');
    end
end



%% 计算车辆在网络图中的耗时
%导入车辆信息
car = xlsread('data','车辆信息','C2:D4'); % 读取车辆行车速度
[~,car_type,~] = xlsread('data','车辆信息','A2:A4'); % 读取车辆型号
main = [J1(1:10),J2(1:8)]; % 主干道序号
% 计算车辆网络行车耗时矩阵
for i = 1:3
    speed = ones(130,130)*car(i,2);
    for j = 1:length(main)
        speed(main(j),main(j)+1) = car(i,1);
    end
    time_cost = point_distance./speed;
    xlswrite('data',time_cost,sprintf('%s耗时矩阵',car_type{i}));
end


영업 실적

실행 한 후, 다음과 같은 파일을 얻을 것이다 :

  • 전투 지역 도로 네트워크 다이어그램 .JPG 포인트 번호

전투 지역 도로 네트워크지도 포인트 번호

  • 포인트 .JPG에서 전투 지역 도로 네트워크지도

전투 지역 도로 네트워크 맵에서 포인트

  • 전투 지역 도로 네트워크 다이어그램 .JPG 지점 번호

전투 지역 도로 네트워크지도 지점 번호

  • data.xlsx (기본 테이블에 대한 계산 결과의 확장)

영상


크로스 네트워크 피사체도 정렬

그것은 없거나 전혀 인공 취득한 네트워크 접속 판정,도 원본과 PS는 동일한 크기로 확장이 실수를 제외에 기록하는 경우를 발생하지 않을 수 있고, 서로 비교 겹치는 투명성을 감소 완전히 겹치는 선이다.

영상

크로스 네트워크 피사체도 정렬

개요

위의 단계는 데이터 감소라는 질문의 시작입니다. 절대 안전한, 그렇지 않으면 다음 계산을 확인해야합니다, 모든 베팅은 잘못입니다! !

추천

출처www.cnblogs.com/gshang/p/11455691.html