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 (将#修改为@)