머리말
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)는, 포인트, 수평 및 수직 배향막에 따른 캐릭터의 위치가 배치되어있다.
그들의 모드 (수평 / 수직) | 왼쪽 / 위 | 에 /에서 | 오른쪽 / 아래로 |
---|---|---|---|
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는 동일한 크기로 확장이 실수를 제외에 기록하는 경우를 발생하지 않을 수 있고, 서로 비교 겹치는 투명성을 감소 완전히 겹치는 선이다.
개요
위의 단계는 데이터 감소라는 질문의 시작입니다. 절대 안전한, 그렇지 않으면 다음 계산을 확인해야합니다, 모든 베팅은 잘못입니다! !