Example with 2 actors, 2 products and 7 locations

  • Graph generation
  • Distance matrix
  • Gravity model (hyman model)

Created on Fri Feb 18 11:22:33 2022 @author: mesa

In [8]:
from supplychainmodelhelper import graphoperations as go
from supplychainmodelhelper.drawer import Drawer
from supplychainmodelhelper import mds
import pandas as pd
import numpy as np
import glob, os, subprocess

#help(go.hymanModel)
#help(go.calibration)

Create Graph

In [9]:
prod = ['eggs','milk']
act = ['Producer','Consumer']
loc = [
        'Portugal',
        'Spain',
        'France',
        'Italy',
        'Germany',
        'Montenegro',
        'Marocco'
        ]
         
myNW = go.createGraph(
        listOfActors=act,
        listOfLocations=loc,
        listOfProducts=prod)

Create Distance matrix

In [10]:
myData = {
        loc[0]: [1, 625, 1737, 2509, 2781, 3351,1100],
        loc[1]: [625, 1, 1277, 1965, 2320, 2804,1116],
        loc[2]: [1737, 1277, 1, 1420, 1054, 2038,2247],
        loc[3]: [2509, 1965, 1420, 1, 1505, 740,3019],
        loc[4]: [2781, 2320, 1054, 1505, 1, 1636,3297],
        loc[5]: [3351, 2804, 2038, 740, 1636, 1,3883],
        loc[6]: [1100,1116,2247,3019,3297,3883,1]
}

myDF = pd.DataFrame(myData,index=loc)

supply and demand

In [11]:
sendingProd = [[12588339,44688368,48464470,33153139,24304433,2300,9204611],#eggs
                   [75752927,121886945,490834291,3933048,497278336,138,0]]#milk
   
receivingProd = [[19101284,91333314,48818138,957046,12195878,0,0],#eggs
                 [70146856,121623784,95268102,761020054,104160029,14602,37452258]]#milk

print('send eggs:', sum(sendingProd[0]))
print('received eggs:',sum(receivingProd[0]))

print('send milk:', sum(sendingProd[1]))
print('received milk:',sum(receivingProd[1]))
send eggs: 172405660
received eggs: 172405660
send milk: 1189685685
received milk: 1189685685

Run the gravity model

In [12]:
myTDs = []
allFlows = np.ndarray((7,7,2,5))

for run,p in enumerate(prod):
    print('run:',run)
    print('p:', p)
    # creating list of node IDs of participants
    senderIDs = go.getListOfNodeIDs(
        myNW,
        actors=['Producer'],
        products=[p]
    )
    receiverIDs = go.getListOfNodeIDs(
        myNW,
        actors=['Consumer'],
        products=[p]
    )
    # creating edgeIDs for adding 'distance' to graph
    allcombIDs1, allcombIDs2 = go.getAllCombinations(
        list1=senderIDs,
        list2=receiverIDs,
        order='1st'
    )
    myEdges4Graph = go.getEdgeID(
        SCGraph=myNW, 
        outgoingNodes=allcombIDs1, 
        incomingNodes=allcombIDs2
    )
    didItWork3 = go.addAttr2Edges(
        SCGraph=myNW,
        listOfEdgeIDs=myEdges4Graph,
        listOfContent=myDF.values.flatten(),
        attr='distance'
    )
    go.addAttr2ExistingNodes(
        SCGraph=myNW,
        listOfNodeIDs=senderIDs,
        nameOfAttr='output',
        listOfAttr=sendingProd[run]
    )
    go.addAttr2ExistingNodes(
        SCGraph=myNW,
        listOfNodeIDs=receiverIDs,
        nameOfAttr='input',
        listOfAttr=receivingProd[run]
    )
    # get the transport distances
    myTDs.append(
        go.calcPotTransportDistances(
            SCGraph=myNW,
            listOfSenderIDs=senderIDs,
            listOfReceiverIDs=receiverIDs,
            nrOfValues=5
        )
    )
    
    # Run the gravity model with given transport distance and return the
    # flow 
    # each myTDs[run] is a list of 5 transport distances
    # allFlows is input for the calibration algorithm
    for it, td in enumerate(myTDs[run]):
        hmod = go.hymanModel(
            myNW,
            listOfSenderIDs=senderIDs,
            listOfReceiverIDs=receiverIDs,
            transportDistance=td,
            tolerance=0.01
        )
        print(hmod)
        allFlows[
            0:len(senderIDs),
            0:len(receiverIDs),
            run,
            it
        ] = hmod
run: 0
p: eggs
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
On the  1. iteration: tolerance is down to 387.6656
ipfn converged: convergence_rate not updating or below rate_tolerance
On the  2. iteration: tolerance is down to 115.4034
ipfn converged: convergence_rate not updating or below rate_tolerance
On the  3. iteration: tolerance is down to 117.8567
ipfn converged: convergence_rate not updating or below rate_tolerance
On the  4. iteration: tolerance is down to 199.0000
ipfn converged: convergence_rate not updating or below rate_tolerance
On the  5. iteration: tolerance is down to 199.0000
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
On the last iteration ( 2.): tolerance is down to 115.4034
[[19101284.        0.        0.        0.        0.        0.        0.]
 [       0. 91333314.        0.        0.        0.        0.        0.]
 [       0.        0. 48818138.        0.        0.        0.        0.]
 [       0.        0.        0.   957046.        0.        0.        0.]
 [       0.        0.        0.        0. 12195878.        0.        0.]
 [       0.        0.        0.        0.        0.        0.        0.]
 [       0.        0.        0.        0.        0.        0.        0.]]
On the  1. iteration: tolerance is down to 224.0946
On the  2. iteration: tolerance is down to 188.4168
ipfn converged: convergence_rate not updating or below rate_tolerance
On the  3. iteration: tolerance is down to 310.2875
ipfn converged: convergence_rate not updating or below rate_tolerance
On the  4. iteration: tolerance is down to 306.4942
ipfn converged: convergence_rate not updating or below rate_tolerance
On the  5. iteration: tolerance is down to 399.0000
ipfn converged: convergence_rate not updating or below rate_tolerance
On the  6. iteration: tolerance is down to 399.0000
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
On the last iteration ( 2.): tolerance is down to 188.4168
[[19101284.        0.        0.        0.        0.        0.        0.]
 [       0. 91333314.        0.        0.        0.        0.        0.]
 [       0.        0. 48818138.        0.        0.        0.        0.]
 [       0.        0.        0.   957046.        0.        0.        0.]
 [       0.        0.        0.        0. 12195878.        0.        0.]
 [       0.        0.        0.        0.        0.        0.        0.]
 [       0.        0.        0.        0.        0.        0.        0.]]
On the  1. iteration: tolerance is down to 103.2061
On the  2. iteration: tolerance is down to 49.4617
On the  3. iteration: tolerance is down to 25.0537
On the  4. iteration: tolerance is down to 10.2688
On the  5. iteration: tolerance is down to 3.6909
On the  6. iteration: tolerance is down to 0.9199
On the  7. iteration: tolerance is down to 0.1178
On the  8. iteration: tolerance is down to 0.0044
On the last iteration ( 8.): tolerance is down to 0.0044
[[1.23752261e+07 2.13237592e+05 1.20787913e-01 6.21218092e-08
  1.51290573e-07 0.00000000e+00 0.00000000e+00]
 [6.74473541e+05 4.40139265e+07 8.44350156e+00 7.56121001e-06
  1.06457979e-05 0.00000000e+00 0.00000000e+00]
 [4.36187362e+05 9.63986695e+06 3.83882265e+07 2.75622634e-01
  4.53086669e+01 0.00000000e+00 0.00000000e+00]
 [7.90859870e+05 3.04330582e+07 9.71674314e+05 9.56891086e+05
  6.83898325e+02 0.00000000e+00 0.00000000e+00]
 [1.14045474e+05 2.53713313e+06 9.45796870e+06 4.04950821e+01
  1.21951443e+07 0.00000000e+00 0.00000000e+00]
 [4.77925127e+01 1.87589117e+03 2.57657410e+02 1.14142788e+02
  4.51709229e+00 0.00000000e+00 0.00000000e+00]
 [4.71044388e+06 4.49421576e+06 2.24561904e+00 1.15493275e-06
  2.70346676e-06 0.00000000e+00 0.00000000e+00]]
/home/NeubertK/anaconda3/envs/p39/lib/python3.9/site-packages/ipfn/ipfn.py:146: RuntimeWarning: invalid value encountered in double_scalars
  if abs(m_ijk / ori_ijk - 1) > max_conv:
/home/NeubertK/anaconda3/envs/p39/lib/python3.9/site-packages/supplychainmodelhelper/graphoperations.py:1920: RuntimeWarning: divide by zero encountered in double_scalars
  (
/home/NeubertK/anaconda3/envs/p39/lib/python3.9/site-packages/supplychainmodelhelper/graphoperations.py:1628: RuntimeWarning: invalid value encountered in double_scalars
  WeightDist = np.sum(flow * dist) / (np.sum(flow))
On the  1. iteration: tolerance is down to 0.2847
On the  2. iteration: tolerance is down to 0.0004
On the last iteration ( 2.): tolerance is down to 0.0004
[[4.86965006e+06 7.14033191e+06 5.40517127e+05 2.74726079e+03
  3.51381015e+04 0.00000000e+00 0.00000000e+00]
 [5.29028091e+06 3.69582425e+07 2.27879180e+06 1.28656133e+04
  1.48325821e+05 0.00000000e+00 0.00000000e+00]
 [3.06716313e+06 1.74530660e+07 2.62006788e+07 5.92790988e+04
  1.68419303e+06 0.00000000e+00 0.00000000e+00]
 [2.70785369e+06 1.71157317e+07 1.02967338e+07 8.11173480e+05
  2.22163485e+06 0.00000000e+00 0.00000000e+00]
 [1.06714823e+06 6.07999024e+06 9.01386204e+06 6.84532112e+04
  8.07486675e+06 0.00000000e+00 0.00000000e+00]
 [1.56309737e+02 9.91713312e+02 7.86601503e+02 5.32638183e+01
  3.12107882e+02 0.00000000e+00 0.00000000e+00]
 [2.09903168e+06 6.58496004e+06 4.86767873e+05 2.47407200e+03
  3.14073336e+04 0.00000000e+00 0.00000000e+00]]
On the  1. iteration: tolerance is down to 108.9248
On the  2. iteration: tolerance is down to 29.0070
On the  3. iteration: tolerance is down to 3.1320
On the  4. iteration: tolerance is down to 0.0612
On the  5. iteration: tolerance is down to 0.0001
On the last iteration ( 5.): tolerance is down to 0.0001
[[2.64906620e+06 7.57929839e+06 1.99251320e+06 2.86861945e+04
  3.38785013e+05 0.00000000e+00 0.00000000e+00]
 [5.58959213e+06 3.03951656e+07 7.34392014e+06 1.10400490e+05
  1.24932203e+06 0.00000000e+00 0.00000000e+00]
 [4.29142914e+06 2.14475442e+07 1.92660029e+07 1.98828889e+05
  3.26064405e+06 0.00000000e+00 0.00000000e+00]
 [3.16468198e+06 1.65149408e+07 1.01844102e+07 4.52716418e+05
  2.83638241e+06 0.00000000e+00 0.00000000e+00]
 [1.90174107e+06 9.50934226e+06 8.49825673e+06 1.44322766e+05
  4.25074897e+06 0.00000000e+00 0.00000000e+00]
 [2.03884696e+02 1.06561906e+03 7.36287273e+02 3.07537454e+01
  2.63454223e+02 0.00000000e+00 0.00000000e+00]
 [1.50456960e+06 5.88595703e+06 1.53229856e+06 2.20604886e+04
  2.59732066e+05 0.00000000e+00 0.00000000e+00]]
run: 1
p: milk
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
On the  1. iteration: tolerance is down to 749.8218
ipfn converged: convergence_rate not updating or below rate_tolerance
On the  2. iteration: tolerance is down to 213.4026
ipfn converged: convergence_rate not updating or below rate_tolerance
On the  3. iteration: tolerance is down to 213.4023
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
On the last iteration ( 3.): tolerance is down to 213.4023
[[7.01468560e+007 4.90087271e-174 0.00000000e+000 0.00000000e+000
  0.00000000e+000 0.00000000e+000 3.74522580e+007]
 [1.48277271e-173 1.21623784e+008 0.00000000e+000 0.00000000e+000
  0.00000000e+000 0.00000000e+000 0.00000000e+000]
 [0.00000000e+000 0.00000000e+000 9.52681020e+007 0.00000000e+000
  3.53862034e-298 0.00000000e+000 0.00000000e+000]
 [0.00000000e+000 0.00000000e+000 0.00000000e+000 7.61020054e+008
  0.00000000e+000 9.08860106e-207 0.00000000e+000]
 [0.00000000e+000 0.00000000e+000 2.85254041e-298 0.00000000e+000
  1.04160029e+008 0.00000000e+000 0.00000000e+000]
 [0.00000000e+000 0.00000000e+000 0.00000000e+000 1.95005864e-210
  0.00000000e+000 1.46020000e+004 0.00000000e+000]
 [0.00000000e+000 0.00000000e+000 0.00000000e+000 0.00000000e+000
  0.00000000e+000 0.00000000e+000 0.00000000e+000]]
On the  1. iteration: tolerance is down to 512.5496
On the  2. iteration: tolerance is down to 501.5443
ipfn converged: convergence_rate not updating or below rate_tolerance
On the  3. iteration: tolerance is down to 496.0000
ipfn converged: convergence_rate not updating or below rate_tolerance
On the  4. iteration: tolerance is down to 461.3995
ipfn converged: convergence_rate not updating or below rate_tolerance
On the  5. iteration: tolerance is down to 496.0000
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
On the last iteration ( 4.): tolerance is down to 461.3995
[[7.01468560e+007 3.19493020e-093 3.02870242e-273 0.00000000e+000
  0.00000000e+000 0.00000000e+000 3.72233295e+007]
 [9.61178738e-093 1.21623784e+008 5.26559785e-199 1.65085272e-303
  0.00000000e+000 0.00000000e+000 2.28928544e+005]
 [4.99892148e-270 2.88884750e-196 9.52681020e+007 1.16908160e-214
  8.33109101e-162 0.00000000e+000 0.00000000e+000]
 [0.00000000e+000 7.32515631e-312 9.45532504e-226 7.61020054e+008
  2.45377842e-239 4.62242290e-111 0.00000000e+000]
 [0.00000000e+000 0.00000000e+000 6.71583032e-162 2.44569075e-228
  1.04160029e+008 6.66751348e-250 0.00000000e+000]
 [0.00000000e+000 0.00000000e+000 0.00000000e+000 9.91791327e-115
  1.43531867e-264 1.46020000e+004 0.00000000e+000]
 [0.00000000e+000 0.00000000e+000 0.00000000e+000 0.00000000e+000
  0.00000000e+000 0.00000000e+000 0.00000000e+000]]
On the  1. iteration: tolerance is down to 335.9269
On the  2. iteration: tolerance is down to 261.8380
On the  3. iteration: tolerance is down to 253.9850
ipfn converged: convergence_rate not updating or below rate_tolerance
On the  4. iteration: tolerance is down to 709.3969
ipfn converged: convergence_rate not updating or below rate_tolerance
On the  5. iteration: tolerance is down to 709.2576
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
On the last iteration ( 3.): tolerance is down to 253.9850
[[7.01468560e+007 1.16464228e-082 7.28046473e-244 0.00000000e+000
  0.00000000e+000 0.00000000e+000 3.70284672e+007]
 [3.48677889e-082 1.21623784e+008 2.07100532e-177 2.85932680e-270
  0.00000000e+000 0.00000000e+000 4.23790834e+005]
 [1.19855135e-240 1.13879854e-174 9.52681020e+007 1.21123269e-190
  5.51876815e-144 5.75284243e-280 2.95645475e-156]
 [0.00000000e+000 1.27163104e-278 9.79623557e-202 7.61020054e+008
  6.97865427e-214 1.48533279e-098 0.00000000e+000]
 [0.00000000e+000 0.00000000e+000 4.44877033e-144 6.95565258e-203
  1.04160029e+008 3.12582872e-222 0.00000000e+000]
 [0.00000000e+000 0.00000000e+000 9.98308448e-295 3.18694376e-102
  6.72898574e-237 1.46020000e+004 0.00000000e+000]
 [0.00000000e+000 0.00000000e+000 0.00000000e+000 0.00000000e+000
  0.00000000e+000 0.00000000e+000 0.00000000e+000]]
On the  1. iteration: tolerance is down to 196.8823
On the  2. iteration: tolerance is down to 76.8269
On the  3. iteration: tolerance is down to 43.1304
On the  4. iteration: tolerance is down to 23.5883
On the  5. iteration: tolerance is down to 14.6579
On the  6. iteration: tolerance is down to 9.6922
On the  7. iteration: tolerance is down to 7.0007
On the  8. iteration: tolerance is down to 5.6947
ipfn converged: convergence_rate not updating or below rate_tolerance
On the  9. iteration: tolerance is down to 957.1886
On the 10. iteration: tolerance is down to 5.6770
On the 11. iteration: tolerance is down to 5.6596
ipfn converged: convergence_rate not updating or below rate_tolerance
On the 12. iteration: tolerance is down to 957.2415
On the 13. iteration: tolerance is down to 5.6270
On the 14. iteration: tolerance is down to 5.5952
ipfn converged: convergence_rate not updating or below rate_tolerance
On the 15. iteration: tolerance is down to 957.2451
On the 16. iteration: tolerance is down to 5.5633
On the 17. iteration: tolerance is down to 5.5323
ipfn converged: convergence_rate not updating or below rate_tolerance
On the 18. iteration: tolerance is down to 957.2489
On the 19. iteration: tolerance is down to 5.5010
On the 20. iteration: tolerance is down to 5.4706
ipfn converged: convergence_rate not updating or below rate_tolerance
On the 21. iteration: tolerance is down to 957.2525
On the 22. iteration: tolerance is down to 5.4400
On the 23. iteration: tolerance is down to 5.4104
ipfn converged: convergence_rate not updating or below rate_tolerance
On the 24. iteration: tolerance is down to 957.2564
On the 25. iteration: tolerance is down to 5.3804
On the 26. iteration: tolerance is down to 5.3513
ipfn converged: convergence_rate not updating or below rate_tolerance
On the 27. iteration: tolerance is down to 957.2601
On the 28. iteration: tolerance is down to 5.3221
On the 29. iteration: tolerance is down to 5.2938
ipfn converged: convergence_rate not updating or below rate_tolerance
On the 30. iteration: tolerance is down to 957.2642
On the 31. iteration: tolerance is down to 5.2652
On the 32. iteration: tolerance is down to 5.2374
ipfn converged: convergence_rate not updating or below rate_tolerance
On the 33. iteration: tolerance is down to 957.2685
On the 34. iteration: tolerance is down to 5.2095
On the 35. iteration: tolerance is down to 5.1823
ipfn converged: convergence_rate not updating or below rate_tolerance
On the 36. iteration: tolerance is down to 957.2730
On the 37. iteration: tolerance is down to 5.1550
On the 38. iteration: tolerance is down to 5.1285
ipfn converged: convergence_rate not updating or below rate_tolerance
On the 39. iteration: tolerance is down to 957.2779
On the 40. iteration: tolerance is down to 5.1017
On the 41. iteration: tolerance is down to 5.0758
ipfn converged: convergence_rate not updating or below rate_tolerance
On the 42. iteration: tolerance is down to 957.2830
On the 43. iteration: tolerance is down to 5.0496
On the 44. iteration: tolerance is down to 5.0243
ipfn converged: convergence_rate not updating or below rate_tolerance
On the 45. iteration: tolerance is down to 957.2885
On the 46. iteration: tolerance is down to 4.9987
On the 47. iteration: tolerance is down to 4.9739
ipfn converged: convergence_rate not updating or below rate_tolerance
On the 48. iteration: tolerance is down to 957.2938
On the 49. iteration: tolerance is down to 4.9488
On the 50. iteration: tolerance is down to 4.9247
ipfn converged: convergence_rate not updating or below rate_tolerance
On the 51. iteration: tolerance is down to 957.3003
ipfn converged: convergence_rate not updating or below rate_tolerance
On the 52. iteration: tolerance is down to 957.1492
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
On the last iteration (50.): tolerance is down to 4.9247
[[7.01468467e+07 5.65166559e-01 1.43016034e-30 1.19822654e-21
  4.03484614e-45 3.00761842e-35 5.60679271e+06]
 [1.16745039e+00 1.15457443e+08 2.24578717e-24 2.27738937e-14
  6.52683576e-39 6.24879971e-28 6.42958519e+06]
 [8.11158223e+00 6.16633997e+06 9.52681020e+07 3.63983604e+08
  2.05761070e-07 7.05565893e-03 2.54158801e+07]
 [4.97431350e-30 4.57688002e-23 2.66412864e-31 3.93304460e+06
  1.73488679e-33 2.10025534e-06 1.55859303e-23]
 [3.79539395e-12 2.97214908e-06 3.41249675e-05 3.93103405e+08
  1.04160029e+08 1.44639931e+04 9.95188626e-06]
 [1.35625715e-42 1.36412426e-35 5.60965351e-41 2.28137767e-05
  6.93390086e-37 1.37999847e+02 2.21167423e-36]
 [0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00
  0.00000000e+00 0.00000000e+00 0.00000000e+00]]
On the  1. iteration: tolerance is down to 36.6053
On the  2. iteration: tolerance is down to 1.7399
On the  3. iteration: tolerance is down to 0.0814
On the  4. iteration: tolerance is down to 0.0002
On the last iteration ( 4.): tolerance is down to 0.0002
[[2.41496415e+07 1.74710432e+07 2.26310067e+06 2.25994445e+07
  8.42429418e+05 2.71895356e+02 8.42666914e+06]
 [1.62000948e+07 4.06432734e+07 4.47099210e+06 4.85454112e+07
  1.66596662e+06 5.85801445e+02 1.03602542e+07]
 [2.09235511e+07 4.45796551e+07 6.23607703e+07 3.26829154e+08
  2.30062819e+07 4.91540374e+03 1.31300427e+07]
 [2.70046004e+04 6.25589509e+04 4.22405204e+04 3.74336826e+06
  4.08845503e+04 4.99044283e+01 1.69460506e+04]
 [8.84656321e+06 1.88672514e+07 2.61309968e+07 3.59302546e+08
  7.86044639e+07 8.77898745e+03 5.51834532e+06]
 [8.48821342e-01 1.97226933e+00 1.65974808e+00 1.30380786e+02
  2.60986395e+00 7.58025711e-03 5.21106745e-01]
 [0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00
  0.00000000e+00 0.00000000e+00 0.00000000e+00]]

two RuntimeWarnings (probably because of division by zero):

ipfn/ipfn.py:146: RuntimeWarning: invalid value encountered in double_scalars if abs(m_ijk / ori_ijk - 1) > max_conv: supplychainmodelhelper/graphoperations.py:1920: RuntimeWarning: divide by zero encountered in double_scalars ( supplychainmodelhelper/graphoperations.py:1628: RuntimeWarning: invalid value encountered in double_scalars WeightDist = np.sum(flow * dist) / (np.sum(flow))

Repeat with all inputs > 0 and outputs > 0 (set 0 values to 1)

In [13]:
sendingProd = [[12588339,44688368,48464470,33153139,24304433,2300,9204611],#eggs
                   [75752927,121886945,490834291,3933048,497278336,137,1]]#milk
   
receivingProd = [[19101284,91333314,48818138,957046,12195876,1,1],#eggs
                 [70146856,121623784,95268102,761020054,104160029,14602,37452258]]#milk

myTDs = []
allFlows = np.ndarray((7,7,2,5))

for run,p in enumerate(prod):
    print('run:',run)
    print('p:', p)
    # creating list of node IDs of participants
    senderIDs = go.getListOfNodeIDs(
        myNW,
        actors=['Producer'],
        products=[p]
    )
    receiverIDs = go.getListOfNodeIDs(
        myNW,
        actors=['Consumer'],
        products=[p]
    )
    # creating edgeIDs for adding 'distance' to graph
    allcombIDs1, allcombIDs2 = go.getAllCombinations(
        list1=senderIDs,
        list2=receiverIDs,
        order='1st'
    )
    myEdges4Graph = go.getEdgeID(
        SCGraph=myNW, 
        outgoingNodes=allcombIDs1, 
        incomingNodes=allcombIDs2
    )
    didItWork3 = go.addAttr2Edges(
        SCGraph=myNW,
        listOfEdgeIDs=myEdges4Graph,
        listOfContent=myDF.values.flatten(),
        attr='distance'
    )
    go.addAttr2ExistingNodes(
        SCGraph=myNW,
        listOfNodeIDs=senderIDs,
        nameOfAttr='output',
        listOfAttr=sendingProd[run]
    )
    go.addAttr2ExistingNodes(
        SCGraph=myNW,
        listOfNodeIDs=receiverIDs,
        nameOfAttr='input',
        listOfAttr=receivingProd[run]
    )
    # get the transport distances
    myTDs.append(
        go.calcPotTransportDistances(
            SCGraph=myNW,
            listOfSenderIDs=senderIDs,
            listOfReceiverIDs=receiverIDs,
            nrOfValues=5
        )
    )
    
    # Run the gravity model with given transport distance and return the
    # flow 
    # each myTDs[run] is a list of 5 transport distances
    # allFlows is input for the calibration algorithm
    for it, td in enumerate(myTDs[run]):
        hmod = go.hymanModel(
            myNW,
            listOfSenderIDs=senderIDs,
            listOfReceiverIDs=receiverIDs,
            transportDistance=td,
            tolerance=0.01
        )
        print(hmod)
        allFlows[
            0:len(senderIDs),
            0:len(receiverIDs),
            run,
            it
        ] = hmod
run: 0
p: eggs
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
On the  1. iteration: tolerance is down to 387.6656
ipfn converged: convergence_rate not updating or below rate_tolerance
On the  2. iteration: tolerance is down to 199.0000
ipfn converged: convergence_rate not updating or below rate_tolerance
On the  3. iteration: tolerance is down to 199.0000
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
On the last iteration ( 2.): tolerance is down to 199.0000
[[1.91012840e+007 6.89441127e-041 1.65148888e-126 1.31030601e-188
  6.37911407e-207 1.27936840e-256 9.51857228e-092]
 [1.00161653e-040 9.13333140e+007 6.35538114e-091 1.33033290e-146
  2.92732284e-171 2.20250111e-214 1.50088840e-092]
 [2.17340098e-125 5.75706999e-090 4.88181380e+007 1.34466070e-104
  3.86782822e-074 1.74485766e-155 1.14906600e-178]
 [5.01172093e-183 3.50243580e-141 3.90807289e-100 9.57046000e+005
  3.08273523e-107 6.98745707e-055 2.64967127e-236]
 [3.40547196e-205 1.07568043e-169 1.56898905e-073 4.30267972e-111
  1.21958760e+007 9.44632814e-125 6.26205090e-259]
 [9.93621385e-250 1.17743556e-207 1.02972465e-149 1.41882985e-053
  1.37426788e-119 1.00000000e+000 1.09307844e-304]
 [1.89630214e-070 2.05816329e-071 1.73946820e-158 1.38010959e-220
  2.33687442e-239 2.80389497e-290 1.00000000e+000]]
On the  1. iteration: tolerance is down to 224.0946
On the  2. iteration: tolerance is down to 188.4168
ipfn converged: convergence_rate not updating or below rate_tolerance
On the  3. iteration: tolerance is down to 399.0000
On the  4. iteration: tolerance is down to 187.5272
ipfn converged: convergence_rate not updating or below rate_tolerance
On the  5. iteration: tolerance is down to 399.0000
On the  6. iteration: tolerance is down to 187.5237
On the  7. iteration: tolerance is down to 187.5217
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
On the last iteration ( 7.): tolerance is down to 187.5217
[[1.25884597e+07 1.02282150e-01 2.43883142e-31 5.11400322e-52
  8.42389002e-58 5.72696582e-75 2.66891079e-28]
 [8.35297615e-01 4.46883376e+07 8.88913727e-25 2.16345212e-44
  3.16129933e-51 2.64445502e-67 9.00873775e-28]
 [2.00311141e+01 8.94008284e+06 3.95242833e+07 5.21979023e-22
  1.04983006e-19 4.03681834e-42 1.24079745e-26]
 [6.21539728e+00 3.21968803e+07 7.72391747e-02 9.56230353e+05
  3.81583973e-16 2.16402111e-16 3.85003505e-27]
 [6.12509576e+00 2.81465016e+06 9.29385465e+06 2.28287653e-10
  1.21958760e+07 2.62810451e-24 3.18462330e-27]
 [2.62345220e-04 1.48334905e+03 2.25146111e-03 8.15646847e+02
  1.65573566e-11 1.00000000e+00 8.55099651e-32]
 [6.51279107e+06 2.69187966e+06 3.68646962e-24 7.73018476e-45
  1.06878650e-50 4.55513500e-68 1.00000000e+00]]
On the  1. iteration: tolerance is down to 103.2061
On the  2. iteration: tolerance is down to 49.4617
On the  3. iteration: tolerance is down to 25.0537
On the  4. iteration: tolerance is down to 10.2688
On the  5. iteration: tolerance is down to 3.6909
On the  6. iteration: tolerance is down to 0.9199
On the  7. iteration: tolerance is down to 0.1178
On the  8. iteration: tolerance is down to 0.0044
On the last iteration ( 8.): tolerance is down to 0.0044
[[1.23752263e+07 2.13237346e+05 1.20787395e-01 6.21214297e-08
  1.51289466e-07 1.07336855e-14 1.31006522e-06]
 [6.74473250e+05 4.40139268e+07 8.44347330e+00 7.56117179e-06
  1.06457301e-05 1.33259521e-12 3.95354143e-06]
 [4.36187285e+05 9.63986744e+06 3.83882261e+07 2.75621900e-01
  4.53085291e+01 2.08969479e-07 2.25536590e-06]
 [7.90859627e+05 3.04330590e+07 9.71673366e+05 9.56891120e+05
  6.83896439e+02 3.26359040e-01 4.08924766e-06]
 [1.14045474e+05 2.53713370e+06 9.45797013e+06 4.04950315e+01
  1.21951423e+07 7.64745025e-04 5.66785359e-07]
 [4.77785187e+01 1.87534253e+03 2.57581868e+02 1.14109420e+02
  4.51576272e+00 6.72876006e-01 2.13647302e-10]
 [4.71044426e+06 4.49421438e+06 2.24561124e+00 1.15492665e-06
  2.70344919e-06 1.72576854e-13 9.99987825e-01]]
On the  1. iteration: tolerance is down to 0.2847
On the  2. iteration: tolerance is down to 0.0004
On the last iteration ( 2.): tolerance is down to 0.0004
[[4.86965018e+06 7.14033179e+06 5.40517063e+05 2.74726029e+03
  3.51380882e+04 2.31597276e-03 7.69449580e-02]
 [5.29028086e+06 3.69582426e+07 2.27879156e+06 1.28656112e+04
  1.48325767e+05 1.08866409e-02 1.78844113e-01]
 [3.06716312e+06 1.74530660e+07 2.62006790e+07 5.92790940e+04
  1.68419261e+06 6.61347397e-02 1.01253605e-01]
 [2.70785366e+06 1.71157317e+07 1.02967335e+07 8.11173488e+05
  2.22163430e+06 7.77866563e-01 8.93920326e-02]
 [1.06714827e+06 6.07999052e+06 9.01386249e+06 6.84532115e+04
  8.07486581e+06 1.40442548e-01 3.49654171e-02]
 [1.56309719e+02 9.91713205e+02 7.86601404e+02 5.32638134e+01
  3.12107782e+02 3.24481315e-04 5.02004337e-06]
 [2.09903160e+06 6.58495969e+06 4.86767797e+05 2.47407147e+03
  3.14073205e+04 2.02905465e-03 5.18594855e-01]]
On the  1. iteration: tolerance is down to 108.9248
On the  2. iteration: tolerance is down to 29.0070
On the  3. iteration: tolerance is down to 3.1320
On the  4. iteration: tolerance is down to 0.0612
On the  5. iteration: tolerance is down to 0.0001
On the last iteration ( 5.): tolerance is down to 0.0001
[[2.64906625e+06 7.57929837e+06 1.99251312e+06 2.86861929e+04
  3.38784936e+05 2.68172899e-02 9.59214680e-02]
 [5.58959212e+06 3.03951658e+07 7.34391989e+06 1.10400484e+05
  1.24932175e+06 1.03367343e-01 2.76739870e-01]
 [4.29142912e+06 2.14475442e+07 1.92660032e+07 1.98828885e+05
  3.26064348e+06 2.08582712e-01 2.10400934e-01]
 [3.16468196e+06 1.65149408e+07 1.01844101e+07 4.52716430e+05
  2.83638193e+06 4.46257415e-01 1.55158578e-01]
 [1.90174107e+06 9.50934231e+06 8.49825691e+06 1.44322767e+05
  4.25074845e+06 1.94519280e-01 9.29514775e-02]
 [2.03884692e+02 1.06561904e+03 7.36287264e+02 3.07537459e+01
  2.63454179e+02 6.48549445e-05 9.88357452e-06]
 [1.50456960e+06 5.88595698e+06 1.53229849e+06 2.20604872e+04
  2.59732005e+05 2.03911056e-02 1.68817789e-01]]
run: 1
p: milk
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
On the  1. iteration: tolerance is down to 749.8218
ipfn converged: convergence_rate not updating or below rate_tolerance
On the  2. iteration: tolerance is down to 248.0000
ipfn converged: convergence_rate not updating or below rate_tolerance
On the  3. iteration: tolerance is down to 248.0000
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
On the last iteration ( 2.): tolerance is down to 248.0000
[[7.01468560e+007 7.52032759e-174 0.00000000e+000 0.00000000e+000
  0.00000000e+000 0.00000000e+000 1.65285235e-296]
 [9.67023332e-174 1.21623784e+008 0.00000000e+000 0.00000000e+000
  0.00000000e+000 0.00000000e+000 0.00000000e+000]
 [0.00000000e+000 0.00000000e+000 9.52681020e+007 0.00000000e+000
  3.54086021e-298 0.00000000e+000 0.00000000e+000]
 [0.00000000e+000 0.00000000e+000 0.00000000e+000 7.61020054e+008
  0.00000000e+000 9.22586178e-207 0.00000000e+000]
 [0.00000000e+000 0.00000000e+000 2.85434601e-298 0.00000000e+000
  1.04160029e+008 0.00000000e+000 0.00000000e+000]
 [0.00000000e+000 0.00000000e+000 0.00000000e+000 1.92275300e-210
  0.00000000e+000 1.46020000e+004 0.00000000e+000]
 [0.00000000e+000 0.00000000e+000 0.00000000e+000 0.00000000e+000
  0.00000000e+000 0.00000000e+000 3.74522580e+007]]
On the  1. iteration: tolerance is down to 512.5496
On the  2. iteration: tolerance is down to 501.5443
ipfn converged: convergence_rate not updating or below rate_tolerance
On the  3. iteration: tolerance is down to 496.0000
ipfn converged: convergence_rate not updating or below rate_tolerance
On the  4. iteration: tolerance is down to 496.0000
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
On the last iteration ( 3.): tolerance is down to 496.0000
[[7.01468560e+007 7.12847619e-187 0.00000000e+000 0.00000000e+000
  0.00000000e+000 0.00000000e+000 0.00000000e+000]
 [9.16635972e-187 1.21623784e+008 0.00000000e+000 0.00000000e+000
  0.00000000e+000 0.00000000e+000 0.00000000e+000]
 [0.00000000e+000 0.00000000e+000 9.52681020e+007 0.00000000e+000
  0.00000000e+000 0.00000000e+000 0.00000000e+000]
 [0.00000000e+000 0.00000000e+000 0.00000000e+000 7.61020054e+008
  0.00000000e+000 3.48057128e-222 0.00000000e+000]
 [0.00000000e+000 0.00000000e+000 0.00000000e+000 0.00000000e+000
  1.04160029e+008 0.00000000e+000 0.00000000e+000]
 [0.00000000e+000 0.00000000e+000 0.00000000e+000 7.25382518e-226
  0.00000000e+000 1.46020000e+004 0.00000000e+000]
 [0.00000000e+000 0.00000000e+000 0.00000000e+000 0.00000000e+000
  0.00000000e+000 0.00000000e+000 3.74522580e+007]]
On the  1. iteration: tolerance is down to 335.9269
On the  2. iteration: tolerance is down to 261.8379
On the  3. iteration: tolerance is down to 253.9850
ipfn converged: convergence_rate not updating or below rate_tolerance
On the  4. iteration: tolerance is down to 744.0000
ipfn converged: convergence_rate not updating or below rate_tolerance
On the  5. iteration: tolerance is down to 744.0000
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
On the last iteration ( 3.): tolerance is down to 253.9850
[[7.01468560e+007 1.77719337e-082 1.11383033e-243 0.00000000e+000
  0.00000000e+000 0.00000000e+000 1.40239263e-135]
 [2.28525610e-082 1.21623784e+008 2.07637568e-177 2.86693279e-270
  0.00000000e+000 0.00000000e+000 1.05188991e-137]
 [7.83687726e-241 1.13613449e-174 9.52681020e+007 1.21139950e-190
  5.51933215e-144 5.83828608e-280 7.31934115e-299]
 [0.00000000e+000 1.26874096e-278 9.79758473e-202 7.61020054e+008
  6.97967296e-214 1.50720371e-098 0.00000000e+000]
 [0.00000000e+000 0.00000000e+000 4.44922498e-144 6.95666791e-203
  1.04160029e+008 3.17213109e-222 0.00000000e+000]
 [0.00000000e+000 0.00000000e+000 9.84087154e-295 3.14114878e-102
  6.63286993e-237 1.46020000e+004 0.00000000e+000]
 [2.79809567e-166 1.63216114e-168 0.00000000e+000 0.00000000e+000
  0.00000000e+000 0.00000000e+000 3.74522580e+007]]
On the  1. iteration: tolerance is down to 196.8823
On the  2. iteration: tolerance is down to 76.8269
On the  3. iteration: tolerance is down to 43.1304
On the  4. iteration: tolerance is down to 23.5883
On the  5. iteration: tolerance is down to 14.6579
On the  6. iteration: tolerance is down to 9.6922
On the  7. iteration: tolerance is down to 7.0007
On the  8. iteration: tolerance is down to 5.6946
ipfn converged: convergence_rate not updating or below rate_tolerance
On the  9. iteration: tolerance is down to 957.1992
On the 10. iteration: tolerance is down to 5.6770
On the 11. iteration: tolerance is down to 5.6597
ipfn converged: convergence_rate not updating or below rate_tolerance
On the 12. iteration: tolerance is down to 992.0000
On the 13. iteration: tolerance is down to 5.6280
On the 14. iteration: tolerance is down to 5.5972
ipfn converged: convergence_rate not updating or below rate_tolerance
On the 15. iteration: tolerance is down to 992.0000
On the 16. iteration: tolerance is down to 5.5664
On the 17. iteration: tolerance is down to 5.5363
ipfn converged: convergence_rate not updating or below rate_tolerance
On the 18. iteration: tolerance is down to 992.0000
On the 19. iteration: tolerance is down to 5.5061
On the 20. iteration: tolerance is down to 5.4768
ipfn converged: convergence_rate not updating or below rate_tolerance
On the 21. iteration: tolerance is down to 992.0000
On the 22. iteration: tolerance is down to 5.4472
On the 23. iteration: tolerance is down to 5.4184
ipfn converged: convergence_rate not updating or below rate_tolerance
On the 24. iteration: tolerance is down to 992.0000
On the 25. iteration: tolerance is down to 5.3895
On the 26. iteration: tolerance is down to 5.3613
ipfn converged: convergence_rate not updating or below rate_tolerance
On the 27. iteration: tolerance is down to 992.0000
On the 28. iteration: tolerance is down to 5.3330
On the 29. iteration: tolerance is down to 5.3055
ipfn converged: convergence_rate not updating or below rate_tolerance
On the 30. iteration: tolerance is down to 992.0000
On the 31. iteration: tolerance is down to 5.2778
On the 32. iteration: tolerance is down to 5.2508
ipfn converged: convergence_rate not updating or below rate_tolerance
On the 33. iteration: tolerance is down to 992.0000
On the 34. iteration: tolerance is down to 5.2237
On the 35. iteration: tolerance is down to 5.1974
ipfn converged: convergence_rate not updating or below rate_tolerance
On the 36. iteration: tolerance is down to 992.0000
On the 37. iteration: tolerance is down to 5.1708
On the 38. iteration: tolerance is down to 5.1450
ipfn converged: convergence_rate not updating or below rate_tolerance
On the 39. iteration: tolerance is down to 992.0000
On the 40. iteration: tolerance is down to 5.1191
On the 41. iteration: tolerance is down to 5.0938
ipfn converged: convergence_rate not updating or below rate_tolerance
On the 42. iteration: tolerance is down to 992.0000
On the 43. iteration: tolerance is down to 5.0684
On the 44. iteration: tolerance is down to 5.0438
ipfn converged: convergence_rate not updating or below rate_tolerance
On the 45. iteration: tolerance is down to 992.0000
On the 46. iteration: tolerance is down to 5.0188
On the 47. iteration: tolerance is down to 4.9947
ipfn converged: convergence_rate not updating or below rate_tolerance
On the 48. iteration: tolerance is down to 992.0000
On the 49. iteration: tolerance is down to 4.9703
On the 50. iteration: tolerance is down to 4.9467
ipfn converged: convergence_rate not updating or below rate_tolerance
On the 51. iteration: tolerance is down to 992.0000
On the 52. iteration: tolerance is down to 4.9227
On the 53. iteration: tolerance is down to 4.8996
ipfn converged: convergence_rate not updating or below rate_tolerance
On the 54. iteration: tolerance is down to 992.0000
On the 55. iteration: tolerance is down to 4.8762
On the 56. iteration: tolerance is down to 4.8536
ipfn converged: convergence_rate not updating or below rate_tolerance
On the 57. iteration: tolerance is down to 992.0000
On the 58. iteration: tolerance is down to 4.8306
On the 59. iteration: tolerance is down to 4.8085
ipfn converged: convergence_rate not updating or below rate_tolerance
On the 60. iteration: tolerance is down to 992.0000
On the 61. iteration: tolerance is down to 4.7860
On the 62. iteration: tolerance is down to 4.7643
ipfn converged: convergence_rate not updating or below rate_tolerance
On the 63. iteration: tolerance is down to 992.0000
On the 64. iteration: tolerance is down to 4.7423
On the 65. iteration: tolerance is down to 4.7210
ipfn converged: convergence_rate not updating or below rate_tolerance
On the 66. iteration: tolerance is down to 992.0000
ipfn converged: convergence_rate not updating or below rate_tolerance
On the 67. iteration: tolerance is down to 957.1714
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
On the last iteration (65.): tolerance is down to 4.7210
[[7.01468554e+07 3.62857063e-02 1.38342830e-36 2.55665144e-26
  1.76570372e-53 2.14251098e-41 5.60681862e+06]
 [4.72400131e-02 1.17125019e+08 1.56691954e-29 5.23733639e-18
  2.07002845e-46 4.86706696e-33 4.76243900e+06]
 [5.17103754e-01 4.49876497e+06 9.52681020e+07 3.63983863e+08
  8.91646555e-10 6.87486343e-04 2.70829994e+07]
 [8.94074334e-36 1.40681874e-27 3.40536133e-37 3.93304262e+06
  9.83688740e-40 1.14743855e-07 4.68266077e-28]
 [2.46756590e-15 2.22204481e-08 3.33367016e-07 3.93103148e+08
  1.04160029e+08 1.44649995e+04 1.05093823e-07]
 [2.30813664e-50 4.02746107e-42 1.98144261e-48 3.53480769e-07
  1.11507982e-43 1.36999794e+02 5.66336977e-43]
 [1.57276049e-32 1.02612692e-32 2.03245906e-67 3.75609592e-57
  2.10946512e-84 1.47462823e-72 1.00000127e+00]]
On the  1. iteration: tolerance is down to 36.6053
On the  2. iteration: tolerance is down to 1.7399
On the  3. iteration: tolerance is down to 0.0814
On the  4. iteration: tolerance is down to 0.0002
On the last iteration ( 4.): tolerance is down to 0.0002
[[2.41496415e+07 1.74710432e+07 2.26310068e+06 2.25994445e+07
  8.42429418e+05 2.71895357e+02 8.42666906e+06]
 [1.62000947e+07 4.06432734e+07 4.47099210e+06 4.85454113e+07
  1.66596662e+06 5.85801447e+02 1.03602541e+07]
 [2.09235510e+07 4.45796550e+07 6.23607703e+07 3.26829154e+08
  2.30062818e+07 4.91540376e+03 1.31300426e+07]
 [2.70046002e+04 6.25589505e+04 4.22405203e+04 3.74336826e+06
  4.08845501e+04 4.99044285e+01 1.69460504e+04]
 [8.84656316e+06 1.88672514e+07 2.61309967e+07 3.59302546e+08
  7.86044640e+07 8.77898748e+03 5.51834524e+06]
 [8.42670457e-01 1.95797751e+00 1.64772092e+00 1.29435998e+02
  2.59095188e+00 7.52532774e-03 5.17330601e-01]
 [1.35904888e-01 1.80198358e-01 2.29041276e-02 2.28721844e-01
  8.47514129e-03 2.69210088e-06 4.23788270e-01]]

both warnings disappear if all inputs > 0 and all outputs > 0

--> are zeros not allowed?

creating calibration measure that halfway might make sense

In [14]:
allFoodTransported = sum(sum(sendingProd,[]))
dummy = np.random.rand(48)*allFoodTransported/80+allFoodTransported/(len(sum(sendingProd,[]))+1)
myCalMat = np.append(
    dummy,
    allFoodTransported-np.sum(dummy)).reshape((len(senderIDs),
    len(receiverIDs))
)
    
print(go.calibration(allFlows,myCalMat))
exiting with relative difference to calibration matrix: 6.106348820205747
[4, 4]

Test another example from graphoperations.py:

In [16]:
# creating the graph
prod = ['milk','beer','schnaps']
act = ['producer','consumer','warehouse','store']
loc = ['BER','SXF','TXL']
myNW = go.createGraph(
    listOfActors=act,
    listOfLocations=loc,
    listOfProducts=prod)

# Creating Distance matrix
myData={loc[0]:[1,2,50],loc[1]:[2,1,49],loc[2]:[50,49,1]}
myDF = pd.DataFrame(myData,index=loc)

# supply and demand
sendingProd = [[10,50,40],[11,45,44],[15,55,30]]
receivingProd = [[30,30,40],[40,30,30],[10,70,20]]

myTDs = []
allFlows = np.ndarray((3,3,3,5))

# creating list of node IDs of participants
for run,p in enumerate(prod):
    senderIDs = go.getListOfNodeIDs(
        myNW,
        actors=['producer'],
        products=[p]
    )
    receiverIDs = go.getListOfNodeIDs(
        myNW,
        actors=['consumer'],
        products=[p]
    )

    # creating edgeIDs for adding 'distance' to graph
    allcombIDs1, allcombIDs2 = go.getAllCombinations(
        senderIDs,
        receiverIDs,
        order='1st'
    )
    myEdges4Graph = go.getEdgeID(myNW, allcombIDs1, allcombIDs2)
    didItWork3 = go.addAttr2Edges(
        myNW,
        myEdges4Graph,
        myDF.values.flatten(),
        attr='distance'
    )

    go.addAttr2ExistingNodes(myNW,senderIDs,'output',sendingProd[run])
    go.addAttr2ExistingNodes(myNW,receiverIDs,'input',receivingProd[run])

    # get the transport distances
    myTDs.append(
        go.calcPotTransportDistances(
            myNW,
            listOfSenderIDs=senderIDs,
            listOfReceiverIDs=receiverIDs
        )
    )

    # Run the gravity model with given transport distance and return the
    # flow each myTDs[run] is a list of 5 transport distances
    # allFlows is input for the calibration algorithm
    for it, td in enumerate(myTDs[run]):
        hm = go.hymanModel(
                myNW,
                listOfSenderIDs=senderIDs,
                listOfReceiverIDs=receiverIDs,
                transportDistance=td,
                tolerance=0.01
        )
        print(hm)
        allFlows[
            0:len(senderIDs),
            0:len(receiverIDs),
            run,
            it
        ] = hm
#creating calibration measure that halfway might make sense
allFoodTransported = sum(sum(sendingProd,[]))
dummy = np.random.rand(8)*allFoodTransported/80+\
        allFoodTransported/(len(sum(sendingProd,[]))+1)
myCalMat = np.append(
    dummy,
    allFoodTransported-np.sum(dummy)).reshape((len(senderIDs),
    len(receiverIDs))
)

print(go.calibration(allFlows,myCalMat))
Maximum iterations reached
On the  1. iteration: tolerance is down to 0.0532
On the  2. iteration: tolerance is down to 0.3115
On the  3. iteration: tolerance is down to 0.0019
On the last iteration ( 3.): tolerance is down to 0.0019
[[ 4.89436823  4.48960544  0.61597657]
 [23.1959832  23.56995789  3.23381242]
 [ 1.90964857  1.94043667 36.15021101]]
On the  1. iteration: tolerance is down to 5.8087
On the  2. iteration: tolerance is down to 5.1095
On the  3. iteration: tolerance is down to 1.7615
On the  4. iteration: tolerance is down to 1.1753
On the  5. iteration: tolerance is down to 0.1145
On the  6. iteration: tolerance is down to 0.0063
On the last iteration ( 6.): tolerance is down to 0.0063
[[ 4.47534417  4.2234956   1.30112247]
 [21.54259779 21.75515588  6.70206028]
 [ 3.98205805  4.02134851 31.99681726]]
On the  1. iteration: tolerance is down to 3.8569
On the  2. iteration: tolerance is down to 3.1174
On the  3. iteration: tolerance is down to 0.3292
On the  4. iteration: tolerance is down to 0.0368
On the  5. iteration: tolerance is down to 0.0003
On the last iteration ( 5.): tolerance is down to 0.0003
[[ 4.08062214  3.92224848  1.99709887]
 [19.8538685  19.97518043 10.17080136]
 [ 6.06550936  6.10257109 27.83209977]]
On the  1. iteration: tolerance is down to 0.2606
On the  2. iteration: tolerance is down to 0.1758
On the  3. iteration: tolerance is down to 0.0007
On the last iteration ( 3.): tolerance is down to 0.0007
[[ 3.69633061  3.60593051  2.6976917 ]
 [18.15444114 18.21683408 13.62849398]
 [ 8.14922825  8.17723541 23.67381432]]
On the  1. iteration: tolerance is down to 3.3284
On the  2. iteration: tolerance is down to 1.7155
On the  3. iteration: tolerance is down to 0.0333
On the  4. iteration: tolerance is down to 0.0002
On the last iteration ( 4.): tolerance is down to 0.0002
[[ 3.31737867  3.28023048  3.40238897]
 [16.44694817 16.469846   17.08319665]
 [10.23567317 10.24992352 19.51441438]]
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
On the  1. iteration: tolerance is down to 3.0762
ipfn converged: convergence_rate not updating or below rate_tolerance
On the  2. iteration: tolerance is down to 4.0000
ipfn converged: convergence_rate not updating or below rate_tolerance
On the  3. iteration: tolerance is down to 3.7384
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
On the last iteration ( 1.): tolerance is down to 3.0762
[[7.68011074e+00 3.31995789e+00 5.14193949e-13]
 [2.46509436e+01 2.03493337e+01 3.15169789e-12]
 [7.66894566e+00 6.33070836e+00 3.00000000e+01]]
On the  1. iteration: tolerance is down to 0.8972
ipfn converged: convergence_rate not updating or below rate_tolerance
On the  2. iteration: tolerance is down to 7.7252
On the  3. iteration: tolerance is down to 0.8875
On the  4. iteration: tolerance is down to 0.8960
ipfn converged: convergence_rate not updating or below rate_tolerance
On the  5. iteration: tolerance is down to 7.6788
On the  6. iteration: tolerance is down to 2.9081
On the  7. iteration: tolerance is down to 0.9128
On the  8. iteration: tolerance is down to 0.9095
ipfn converged: convergence_rate not updating or below rate_tolerance
On the  9. iteration: tolerance is down to 7.7378
ipfn converged: convergence_rate not updating or below rate_tolerance
On the 10. iteration: tolerance is down to 7.7132
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
On the last iteration ( 3.): tolerance is down to 0.8875
[[1.37768271e+001 2.12112604e-008 3.14347340e-222]
 [2.62231729e+001 3.00000000e+001 4.44594993e-213]
 [2.74752708e-211 3.14324330e-211 3.00000000e+001]]
On the  1. iteration: tolerance is down to 3.9236
On the  2. iteration: tolerance is down to 4.8193
On the  3. iteration: tolerance is down to 4.7517
On the  4. iteration: tolerance is down to 4.9273
ipfn converged: convergence_rate not updating or below rate_tolerance
On the  5. iteration: tolerance is down to 11.7384
ipfn converged: convergence_rate not updating or below rate_tolerance
On the  6. iteration: tolerance is down to 11.7378
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
On the last iteration ( 1.): tolerance is down to 3.9236
[[1.38414128e+001 1.61816548e-006 4.59206974e-175]
 [2.61585872e+001 2.99999984e+001 8.51347322e-168]
 [2.31598555e-166 2.65609003e-166 3.00000000e+001]]
On the  1. iteration: tolerance is down to 4.7543
On the  2. iteration: tolerance is down to 3.4914
On the  3. iteration: tolerance is down to 0.5407
On the  4. iteration: tolerance is down to 0.0370
On the  5. iteration: tolerance is down to 0.0005
On the last iteration ( 5.): tolerance is down to 0.0005
[[ 5.32152284  3.88399249  1.79452182]
 [21.41803513 16.12970384  7.45241025]
 [13.26044203  9.98630367 20.75306793]]
On the  1. iteration: tolerance is down to 5.5886
On the  2. iteration: tolerance is down to 1.4358
On the  3. iteration: tolerance is down to 0.1539
On the  4. iteration: tolerance is down to 0.0021
On the last iteration ( 4.): tolerance is down to 0.0021
[[ 4.94004931  3.64740572  2.41255189]
 [20.01056451 15.04081659  9.94864658]
 [15.04938618 11.31177769 17.63880153]]
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
On the  1. iteration: tolerance is down to 1.9892
ipfn converged: convergence_rate not updating or below rate_tolerance
On the  2. iteration: tolerance is down to 3.0000
ipfn converged: convergence_rate not updating or below rate_tolerance
On the  3. iteration: tolerance is down to 3.0000
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
On the last iteration ( 1.): tolerance is down to 1.9892
[[1.00000000e+01 3.98842789e-12 0.00000000e+00]
 [2.10180948e-12 7.00000000e+01 0.00000000e+00]
 [0.00000000e+00 0.00000000e+00 2.00000000e+01]]
On the  1. iteration: tolerance is down to 0.9935
ipfn converged: convergence_rate not updating or below rate_tolerance
On the  2. iteration: tolerance is down to 5.9999
ipfn converged: convergence_rate not updating or below rate_tolerance
On the  3. iteration: tolerance is down to 5.9010
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
On the last iteration ( 1.): tolerance is down to 0.9935
[[2.22013187e+00 1.27796967e+01 2.25902183e-04]
 [6.58286941e+00 4.84164742e+01 8.55840911e-04]
 [1.19699872e+00 8.80382913e+00 1.99989183e+01]]
On the  1. iteration: tolerance is down to 3.6015
On the  2. iteration: tolerance is down to 4.0068
ipfn converged: convergence_rate not updating or below rate_tolerance
On the  3. iteration: tolerance is down to 8.9289
ipfn converged: convergence_rate not updating or below rate_tolerance
On the  4. iteration: tolerance is down to 8.8709
ipfn converged: convergence_rate not updating or below rate_tolerance
ipfn converged: convergence_rate not updating or below rate_tolerance
On the last iteration ( 1.): tolerance is down to 3.6015
[[ 2.02844338 12.88578625  0.08582124]
 [ 6.69715626 47.98345323  0.31957689]
 [ 1.27440036  9.13076053 19.59460187]]
On the  1. iteration: tolerance is down to 4.2770
On the  2. iteration: tolerance is down to 3.1023
On the  3. iteration: tolerance is down to 1.2434
On the  4. iteration: tolerance is down to 0.1525
On the  5. iteration: tolerance is down to 0.0046
On the last iteration ( 5.): tolerance is down to 0.0046
[[ 1.72849435 11.7188284   1.55271092]
 [ 6.12501207 43.15694077  5.71817004]
 [ 2.14649358 15.12423083 12.72911904]]
On the  1. iteration: tolerance is down to 4.6405
On the  2. iteration: tolerance is down to 0.0707
On the  3. iteration: tolerance is down to 0.0051
On the last iteration ( 3.): tolerance is down to 0.0051
[[ 1.6215325  11.15528525  2.22320947]
 [ 5.83676111 40.99348029  8.16985773]
 [ 2.5417064  17.85123447  9.6069328 ]]
exiting with relative difference to calibration matrix: 0.8965644466641519
[4, 4, 4]
/home/NeubertK/anaconda3/envs/p39/lib/python3.9/site-packages/supplychainmodelhelper/graphoperations.py:1628: RuntimeWarning: invalid value encountered in double_scalars
  WeightDist = np.sum(flow * dist) / (np.sum(flow))

The second runtime warning also here

/home/NeubertK/anaconda3/envs/p39/lib/python3.9/site-packages/supplychainmodelhelper/graphoperations.py:1628: RuntimeWarning: invalid value encountered in double_scalars WeightDist = np.sum(flow * dist) / (np.sum(flow))

In [ ]: