首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何追加数组以避免越界索引?

如何追加数组以避免越界索引?
EN

Stack Overflow用户
提问于 2019-06-11 21:54:41
回答 1查看 152关注 0票数 0

我目前正在尝试模拟一个日程安排问题。每天都有许多人打电话到医院要求预约。每天结束时,到达的人都会被分配一个时间段。最初,我构造了一个包含每天到达的数组和一个表示每天的时隙数量的数组。循环通过每天的到达,到达被分配到最近的时间段。然而,当到达的数量相对较高时,代码将尝试将到达分配给服务器数组末尾之外的时隙,即它引用的索引比服务器数组大。有没有办法在模型尝试将到达分配给服务器数组当前包含的将来的某个时隙时,自动追加数组?

到目前为止,我首先生成了一个到达数组(a),并将服务器数组设置为到达速率的两倍大小。虽然只要没有选择极值(高labda或低µ值)就可以工作,但我希望有一个更健壮的s创建。我个人认为最简单的方法是附加s。

代码语言:javascript
复制
def simple_model_test():

    labda, mu, Days = 10, 4, 10
    a = poisson(labda).rvs(Days)            # Generate array with number of arrivals each day
    s = np.ones_like(a) * mu                # Generate equal sizes array with time slots
    s = np.append(s, np.ones_like(a) * mu)  # Add some additional days at the end of time horizon

    for i in range(0, len(a)):              # Cycle through all days of time horizon
        j = i + 1                           # Patients cannot be served at day of arrival
        # if s[j] is empty:                   # I was trying to do something like this, but this does not work
           # s = np.append(s, mu)
        while a[i] > 0:                     # Assign all patients that arrived to a time slot
            if s[j] > 0:                    # Check if time slots are available at day j
                a[i] -= 1                   # To indicate that a patient is assigned
                s[j] -= 1                   # To indicate that a time slot is filled at day j
            else:
                j += 1                      # Check for free time slots next day
    print(s)

simple_model_test()

因此,目前它给出了错误:"IndexError:索引20超出了大小为20的轴0的边界“。所以我想在sj还不存在的时候附加s。

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56545390

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档