Отрицательная целевая функция, выходящая из задачи квадратичной оптимизации - PullRequest
0 голосов
/ 15 марта 2019

У меня есть вопрос относительно потенциально странного результата, который я получаю при минимизации квадратичной целевой функции при некоторых ограничениях.Я использую Matlab и Gurobi.

Я не могу опубликовать свою актуальную проблему оптимизации, потому что она слишком длинная и сложная.Я хотел бы получить от вас некоторые общие мысли о следующем.

Целевая функция имеет вид

enter image description here

При реализации алгоритма оптимизации в Gurobi я делаю классический

%1) Set constraints Aineq*x<=bineq and Aeq*x=beq
model.A=[Aineqother; Aeqother];
model.sense=[repmat('<', size(Aineqother,1),1); repmat('=', size(Aeqother,1),1)];
model.rhs=[bineqother; beqother];

%2) Set the variable type for each element of the unknown vector x
model.vtype=type; 

%3) Set the lower bound and the upper bound for each element of the unknown vector x
model.lb=total_lb;
model.ub=total_ub;

%4) Set the objective function (WITHOUT CONSIDERING ALPHA)
model.Q=Q;
model.obj=c;

%5) Run the optimisation problem
result=gurobi(model,params); 

%6) ADD BACK ALPHA
final_result=result.objval+alpha; 

Вопрос

Полученный мной final_result равен отрицательным и равен -1.6653e-13.

Обратите внимание, что алгебраически я не могу получить отрицательное число, потому что целевая функция является квадратичной.

Отсюда мой вопрос: означает ли это отрицательное число, что наверняка есть какая-то ошибка в коде?Или такое число настолько близко к нулю, что может быть из-за какого-то шага округления, сделанного Матлабом?

Позвольте мне подчеркнуть, что я почти уверен, что я правильно закодировал alpha,Q,C.Чтобы проверить это дважды, я вычислил

enter image description here

для тысяч случайных значений x, и оно всегда получается положительным.

...