Улучшение ограничений добавления производительности Gurobi Python

Использовать eval:

x="ls | wc"
eval $x
y=$(eval $x)
echo $y
0
задан hiro protagonist 18 March 2019 в 16:27
поделиться

1 ответ

Не уверен, что вы можете уменьшить сложность, но вы можете сократить время внутренних циклов.

  • во-первых, сравните u != v на внешнем уровне, не выполняйте внутренние циклы, просто чтобы убедиться, что ничего не поделаешь
  • , во-вторых, сортируйте свой список экспертов и не обрабатывайте 2 «половины», просто чтобы отбросить половину итераций при сравнении.
  • затем кэшируйте ваши переменные условия, чтобы избежать их многократного вычисления

, как это (для последнего условия)

sorted_experts = sorted(Experts)
for p1 in projects:
    for u1 in Skills:
        for v1 in Skills:
            if u1!=v1:  # do this check here
                for ei,i1 in enumerate(sorted_experts):
                   for ej in range(ei+1,len(sorted_experts)):
                        j1 = sorted_experts[ej]  # no need to test for indices
                        ycond = y[i1,u1,j1,v1,p1] # cache your condition variables
                        zcond = z[i1,u1,j1,v1,p1]
                        w = Wp[p1]
                        m.addConstr( ycond <= zcond )
                        m.addConstr( ycond <= w )
                        m.addConstr( ycond >= zcond + w - 1 ) 
0
ответ дан Jean-François Fabre 18 March 2019 в 16:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: