Я перехожу к программированию оптимизации модели с помощью Julia & JuMP.Я новичок в Юлии и JuMP.Поэтому я думаю, что я не очень хорошо использую различные функции и опции Julia и JuMP.
Недавно я получил предупреждение от Jupyter, как показано ниже.
"" "Предупреждение:Оператор сложения использовался в выражениях JuMP много раз. Это предупреждение безопасно игнорировать, но оно может указывать на то, что создание модели происходит медленнее, чем необходимо. По соображениям производительности не следует добавлять выражения в цикл. Вместо x + = y, используйте add_to_expression! (x, y) для изменения x на месте. Если y - единственная переменная, вы также можете использовать add_to_expression! (x, coef, y) для x + = coef * y. └ @ JuMP C: \ Users\ User.julia \ packages \ JuMP \ jnmGG \ src \ JuMP.jl: 689 "" "
Это Waring дает мне серьезную проблему с производительностью.Я реализую точно такой же алгоритм с Python & Matlab.Но они намного быстрее, чем Юлия.Я думаю, что это невозможно, потому что Джулия быстрее, чем оба языка.
Я пытаюсь преодолеть эту проблему.Но я не могу найти решение этого.
while eps_v > Eps_V
k +=1;
Grad_U, Grad_Gamma = Grad(U_BGD[1:m, i], Value_f_BGD);
U_BGD[1:m, i] = U_BGD[1:m, i].-(Step_Size/sqrt(k))*Grad_U;
Gamma_BGD[:,:,i] = Gamma_BGD[:,:,i].-(Step_Size/sqrt(k))*Grad_Gamma;
p_bgd[1, 1:m] = -U_BGD[1:m,i]';
p_bgd[1, m+1:m+N*M] = -reshape(Gamma_BGD[:,:,i]', 1 , N*M);
# Generate Model & Variables
model = Model(with_optimizer(CPLEX.Optimizer));
@variable(model, U_temp[1:m]);
@variable(model, 0<=Gamma_temp[1:N*M]);
D = vcat(U_temp, Gamma_temp);
D = reshape(D, length(D), 1);
obj = D'*Q_bgd*D+ p_bgd*D;
@constraint(model, A_bgd*D.==b_bgd);
@objective(model, Min, obj[1]);
@suppress optimize!(model);
U_BGD[1:m, i] = value.(U_temp);
Gamma_BGD[:,:,i] = reshape(value.(Gamma_temp), M, N)';
val = X[1:n,i]'*Q*X[1:n,i]+U_BGD[1:m,i]'*R.*U_BGD[1:m,i]+(alp/N)*sum(Gamma_BGD[:,:,i]*Value_f_BGD', dims=1);
eps_v = abs(val[1]-val_prev[1]);
#println(eps_v);
val_prev = val[1];
end
Выше я считаю проблемную часть.Особенно рассчитать часть обновления градиента.Нужна помощь с этим обновлением.
Спасибо.