关于流通系统的流失特性的研究

场景描述:

一个由多个节点构成的流通系统,系统中存在能量的流动;如果这个系统是每个节点都是无损的,那么最终各个节点上的能量会稳定下来;
稳定的状态由转移矩阵决定,与能量从哪个节点进行系统没有关系;(充分联通的系统)


然而很多系统是有损的;系统内的能量在通过某个节点时会变少;一个流通网络的流失特性也值得关注;
假设每个节点的能量每次都会按比例流失。
下面就是计算一定的能量在系统中的流出分布,这与能量的来源是有关的。也许有更好的办法,欢迎探讨。


# -*- coding: utf-8 -*-
import numpy as np
from random import random


#流通矩阵
trans_matrix = np.array(
[[0.5   , 0.1  , 0.25 , 0.05],
 [0.15  , 0.5  , 0.2  , 0.05],
 [0.1   , 0.2  , 0.5  , 0.4 ],
 [0.25  , 0.2  , 0.05 , 0.5 ]])




#输入向量
input_array = np.array([[0, 100.0 , 0 , 0]]).T
#截止阈值
break_thresh = 0.0001


#总输入量
sum_input = sum(input_array)


#记录每个节点的消费比例,进入某节点的能量(数字),会被消耗掉一定的比例,下面为比例值
consume_array = np.array([[0.1 , 0.2 , 0.05 , 0.4]]).T 


#记录各个节点的消费累积, 最终关心的东西
sum_consumed_array = np.array([[0.0 , 0 , 0 , 0]]).T


res = input_array
while True :
    #先进行节点消费
    #先计算每个节点消费多少
    consumed_array = res*consume_array
    #print 'res before convert'
    #print res
    #print 'consumed_array'
    #print consumed_array
    sum_consumed_array += consumed_array
    #print 'sum_consumed_array'
    #print sum_consumed_array
    #减去被消费的
    res -= consumed_array
    #再进行流通转换
    res = np.dot(trans_matrix , res)
    #print 'res after convert'
    #print res 
    
    sum_remain = sum(res)
    #print sum_remain
    #print sum(sum_consumed_array)
    #如果剩下的微不足道了
    if sum_remain < sum_input*break_thresh :
        break
        
#得到的最终结果 , 可以看出输入的金币最终都从哪流出了系统
print sum_consumed_array


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值