def find_contiguous_1h(itvs_avail, hy_res_rqts, hy, beginning): # NOT FOR PRODUCTION USE # Notes support only one resource group and ordered resource_id hierarchy level result = [] hy_level_nbs, constraints = hy_res_rqts[0] # one resource group l_name, n = hy_level_nbs[0] # one hierarchy level # hy_level = hy[l_name] itvs_cts_slots = aggregate_itvs(intersec(constraints, itvs_avail)) if l_name == "resource_id": for itv in itvs_cts_slots: if (itv[1] - itv[0] + 1) >= n: result = [(itv[0], itv[0]+n-1)] break return result
def find_contiguous_sorted_1h(itvs_avail, hy_res_rqts, hy, beginning): # NOT FOR PRODUCTION USE # Notes support only one resource group and ordered resource_id hierarchy level result = [] hy_level_nbs, constraints = hy_res_rqts[0] # one resource group l_name, n = hy_level_nbs[0] # one hierarchy level # hy_level = hy[l_name] itvs_unsorted = aggregate_itvs(intersec(constraints, itvs_avail)) lg = len(itvs_unsorted) ids_sorted = sorted(range(lg), key=lambda k: itvs_unsorted[k][1] - itvs_unsorted[k][0]) if l_name == "resource_id": for i in ids_sorted: itv = itvs_unsorted[i] if (itv[1] - itv[0] + 1) >= n: result = [(itv[0], itv[0]+n-1)] break return result
def test_aggregate_itvs_2(): assert aggregate_itvs([]) == []
def test_aggregate_itvs_1(): r = [(1, 2), (4, 10)] a = aggregate_itvs([(1, 2), (4, 5), (6, 6), (7, 10)]) assert a == r