Matlab에서 14 개 노드와 21 개 링크로 구성된 네트워크의 트래픽을 시뮬레이션하려고합니다. "New_Connection"이라는 함수와 "Close_connection"이라는 다른 함수가 있습니다.
지금은 'for'루프를 사용하여 트래픽을 구현했습니다. 각 반복에서 소스 노드를 임의로 선택하는 "New_Connection"이라고하며, 대상 노드 및 임의 기간 (이제이 값은 정수)이 실행됩니다. 이 연결은 설정되거나 설정되지 않을 수 있습니다 (잠금).
이후 모든 연결 시간 (배열에 저장 됨)을 확인하고 값이 0이면 연결을 닫는 "Close_connection"함수라고합니다.
마지막으로, 루프가 끝나기 전에 마지막으로 설정된 모든 연결에 대한 임시 단위를 뺍니다.
제가 원하는 것은 시간 (예 : 1 분)을 구현하는 시스템을 사용하여이 시뮬레이션을 수행하고 언제든지 모든 노드가 새로운 연결을 설정하는 것입니다. 예를 들면 :
t=0.000134 s ---- Node1 to Node8
t=0.003024 s ---- Node12 to Node11
t=0.003799 s ---- Node6 to Node3
.
.
.
t=59.341432 s ---- Node1 to Node4
그리고 "Close_Connection"함수는이 시간을 고려하여 연결을 닫습니다.
Simulink, SimEvents, 병렬 컴퓨팅, Discrete 이벤트 시뮬레이션에 대한 정보를 검색했지만 실제로 기능을 이해할 수 없습니다.
미리 감사드립니다. 제 영어에 대해 사과드립니다.
.NET과 같은 복잡한 프레임 워크를 사용할 필요가 없습니다 SIMEVENTS
. 간단한 작업의 경우 고유 한 이벤트 대기열을 작성할 수 있습니다. 다음 코드는 간단한 시나리오를 구현합니다. T = Uniform (0,10) 초마다 새 연결 만들기, 10 초 후에 연결 삭제
%max duration
SIMTIME=60;
T=0;
NODES=[1:20];
%Constructor for new events. 'Command' is a string, 'data' gives the parameters
MAKEEVENT=@(t,c,d)(struct('time',t,'command',c,'data',{d}));
%create event to end simulation
QUEUE(1)=MAKEEVENT(SIMTIME,'ENDSIM',[]);
%create initial event to create the first connection
QUEUE(end+1)=MAKEEVENT(0,'PRODUCECONNECTION',[]);
RUN=true;
while RUN
[nT,cevent]=min([QUEUE.time]);
assert(nT>=T,'event was created for the past')
T=nT;
EVENT=QUEUE(cevent);
QUEUE(cevent)=[];
fprintf('T=%f\n',T)
switch (EVENT.command)
case 'ENDSIM'
%maybe collect data here
RUN=false;
case 'PRODUCECONNECTION'
%standard producer pattern
%Create a connection between two random nodes every 10s
next=rand*10;
QUEUE(end+1)=MAKEEVENT(T+next,'PRODUCECONNECTION',[]);
R=randperm(size(NODES,2));
first=NODES(R(1));
second=NODES(R(2));
fprintf('CONNECT NODE %d and %d\n',first,second)
%connection will last for 20s
QUEUE(end+1)=MAKEEVENT(T+next,'RELEASECONNECTION',{first,second});
case 'RELEASECONNECTION'
first=EVENT.data{1};
second=EVENT.data{2};
fprintf('DISCONNNECT NODE %d and %d\n',first,second)
end
end
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다