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

Gurobi 嵌套目标函数

如何解决Gurobi 嵌套目标函数

我是 Gurobi 的新手,我需要帮助在目标函数中实现嵌套求和,如下所示:

max ∑_(t∈T)∑_(i∈I)w_(i,t)(∑_(k∈K)(1-p_t)p_t^(k-1)y_(ik,t) )

    I = [1,2,3,4]
        J = [1,2]
        K = [1,4,5,6,7]
        T = [1,4]
    
    distance = { 1 : 10,2 : 10,3 : 10,4: 10}
    
    a = {
        (1,1): { 1 : 1,2 : 0,3 : 0,4 : 0},(1,2) : { 1 : 0,2 : 1,3: 1,3) : { 1 : 0,4) : { 1 : 0,(2,3): { 1 : 1,4 : 0}
    }
    
    #w_{i,t}
    
    w_it = {
        1: { 1 : 500,2 : 1000,3 : 300,4 : 300},2 : { 1 : 600,2 :  500,3: 200,3 : { 1 : 300,2 :  600,3 :   0,4 :   0},4 : { 1 : 200,2 :  300,3 : 400,4 : 500},}
    w = { (dem,t) : w_it[dem][t] for dem in I for t in T }
    
    M = { 1 : 10,4: 10}
    
    P = { 1 : 1,4: 1}
    upper_dict2 = {
    1: { 1 : 500,4 : 0}
}

    upper2 = {(cand_loc,t) : upper_dict2[cand_loc][t] for cand_loc in J for t in T }

model = gb.Model()

u = model.addVars(J,T,name='u',vtype=gb.GRB.CONTINUOUS)
y = model.addVars(I,K,name='y',vtype=gb.GRB.BINARY)

model.setobjective(gb.quicksum(w[i,t] * gb.quicksum(P[t]*y[i,k,t] for k in K) for i in I for t in T),gb.GRB.MAXIMIZE)

I 是需求点的集合 J 是救护站候选位置的集合。 K 是救护车的集合。 T 是时间间隔的集合。

p_t 是救护车在时间间隔 t∈T 内不工作的概率。 w_it 是需求点 i∈I 在时间间隔 t∈T 的人口规模。 yik,t 是一个等于 1 的决策变量,如果需求点 i∈I 在时间间隔 t∈T 被至少 k∈K 辆救护车覆盖;否则为 0。

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