Closed swqsbssddqs closed 1 year ago
对于问题1:
事实上修改lam也会随之修改整体的SFC到达时间的分布,参见 data.virtual_network_request_simulator.py
def arrange_v_nets(self):
"""Arrange virtual networks, including length, lifetime, arrival_time"""
# length: uniform distribution
self.v_nets_size = generate_data_with_distribution(size=self.num_v_nets, **self.v_sim_setting['v_net_size'])
# lifetime: exponential distribution
self.v_nets_lifetime = generate_data_with_distribution(size=self.num_v_nets, **self.v_sim_setting['lifetime'])
# arrival_time: poisson distribution
arrival_time_interval = generate_data_with_distribution(size=self.num_v_nets, **self.v_sim_setting['arrival_rate'])
self.v_nets_arrival_time = np.cumsum(arrival_time_interval)
# np.ceil(np.cumsum(np.array([-np.log(np.random.uniform()) / self.aver_arrival_rate for i in range(self.num_v_nets)]))).tolist()
# self.v_nets_arrival_time = np.cumsum(np.random.poisson(20, self.num_v_nets))
if 'max_latency' in self.v_sim_setting:
self.v_nets_max_latency = generate_data_with_distribution(size=self.num_v_nets, **self.v_sim_setting['max_latency'])
对于问题2: 在record.csv中有一项running_time记录仿真时间的变化。相邻两列之差即当前所处理的SFC耗时。而一个record.csv的SFCs的大小是多样的,即可出统计相同大小的SFCs的平均处理时间。
问题2: 你好这是records目录下的csv文件的表头,没有发现running_time这一列呀(v_net_count,success_count,inservice_count,total_revenue,total_cost,total_r2c,total_time_revenue,total_time_cost,num_running_p_net_nodes,event_id,event_type,event_time,p_net_available_resource,p_net_node_available_resource,p_net_link_available_resource,p_net_node_resource_utilization,p_net_link_resource_utilization,v_net_id,v_net_lifetime,v_net_arrival_time,v_net_num_nodes,v_net_num_egdes,result,node_slots,link_paths,node_slots_info,link_paths_info,v_net_cost,v_net_revenue,v_net_demand,v_net_node_demand,v_net_link_demand,v_net_node_revenue,v_net_link_revenue,v_net_node_cost,v_net_link_cost,v_net_path_cost,v_net_r2c_ratio,v_net_time_cost,v_net_time_revenue,v_net_time_rc_ratio,description,total_violation,current_violation,total_place_violation,total_route_violation,place_result,route_result,early_rejection,revoke_times,selected_actions,v_net_reward,num_interactions,num_placed_nodes,num_routed_links)
这个功能最初版本已经实现,但由于迁移到Virne,尚未添加该记录。实际上,这个补充功能并不复杂,只需要几行代码来计算时间差,将在Virne的下一个版本中添加。
好的,谢谢作者大大。
作者你好,fig.6,fig.7是arrival rate对接受率和平均收益的影响,我看v_sim_setting.yaml中默认arrival_rate.lam=0.04,你对它取了倒数,应该默认100个时间单位处理3~4个请求。当我准备改动arrival_rate.lam时,发现它只起到了对scf排序的作用,因为代码处理scf时没有计算时间,直接开始处理下一个事件了,如下图。那么我该怎么得到fig.6,fig.7呢? fig8是不同长度scf处理时间的的比较,我也有相似的疑问,就是代码记录了处理一条scf的时间吗?处理一条scf的时间保存在下面这个表中吗?还请作者帮我解答一下