微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

带有Python的Gurobi优化迭代/仿真

如何解决带有Python的Gurobi优化迭代/仿真

我建立了具有随机随机需求(〜N(100,40))的优化模型。我的优化模型本身给了我看似有希望的结果。现在,我下一步要做的是通过生成不同的正态分布随机需求来循环(模拟)整个优化问题。但是它无法附加我需要在仿真后得出期望值的目标值。

错误代码为:无法检索属性'objVal' 任何帮助将不胜感激!

for i in range(n_samples):
demand = np.random.normal(100,40,10)
capacity = np.tile(100,10)
shortfall = 0 

    m = gp.Model("Chaining Network")

    Network = {}
    Fulfillment = {}
    Lostsale = {}

    for i in range (nr_supplier):
        for j in range (nr_retailer):
            Fulfillment[i,j] = m.addVar()
            Network[i,j] = m.addVar(vtype = GRB.BINARY)
            
    for j in range (nr_retailer):       
        Lostsale[j] = m.addVar()


    m.setobjective (gp.quicksum(Lostsale[j] for j in range(nr_retailer)),GRB.MINIMIZE)   


    m.addConstr(sum(Network[i,j] for i in range (nr_supplier) for j in range(nr_retailer)) <= maxnet)
 
    for i in range(nr_supplier):
        for j in range(nr_retailer):
            m.addConstr(Fulfillment[i,j] <= bigM*Network[i,j])
         

    for j in range (nr_retailer):
        m.addConstr(sum(Fulfillment[i,j] for i in range(nr_supplier)) + Lostsale[j] >= demand[j] )


    for i in range (nr_supplier):
        m.addConstr(sum(Fulfillment[i,j] for j in range(nr_retailer)) <= capacity[i] )

    for j in range(nr_retailer):
         m.addConstr(Lostsale[j] == demand[j] - sum(Fulfillment[i,j] for i in range(nr_supplier)))

    for i in range(nr_supplier):
        for j in range(nr_retailer):
            if i == j:
                m.addConstr(Fulfillment[i,j] == min(demand[j],capacity[i]))
        
    m.optimize()
    res = m.objVal
    shortfall =+ res

estimate = np.mean(shortfall)/n_samples
print(estimate)

解决方法

您应该检查优化过程的解决方案状态。如果优化成功终止,则只能查询目标值:

connected

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。