Você diz no comentário que não pode fazê-lo funcionar, pois não é quadrático o suficiente. Não vejo razão para isso. O problema é facilmente codificado como um programa quadrático de número misto.
Se eu entendo sua definição de problema, você deseja restringir a soma das variáveis maiores que um limite. Introduza uma variável binária indicando se x é maior que ae introduza outra variável z que deve ser igual a x quando isso é válido e zero caso contrário, e use a soma das novas variáveis.
Usando a caixa de ferramentas MATLAB YALMIP para fazer interface com o CPLEX (ou Gurobi ou qualquer outro solucionador de MIQP), o problema é resolvido trivialmente em frações de segundo. Aqui, um exemplo aleatório, implementado usando um modelo derivado manualmente e um modelo que explora os recursos de modelagem de alto nível no YALMIP
% Create random data
N = 100;
y = rand(N,1);
a = rand(N,1);
b = rand(1);
% Decision variables
x = sdpvar(N,1);
z = sdpvar(N,1);
d = binvar(N,1);
% Define objective
Objective = (x-y)'*(x-y)
% High-level model
Con1 = [0 <= x <= 1,0 <= z <=1];
Con2 = [implies(x-a>=0,d), implies(d,z==x), implies(1-d,z==0)]
Con3 = [sum(z) <= b];
% Solve problem
solvesdp([Con1,Con2,Con3],Objective)
% display solution
[double(x) a double(z)]
% Manually derived model
Con1 = [0 <= x <= 1,0 <= z <=1];
Con2 = [x-a <= d, -(1-d) <= x-z <= 1-d, z <= d];
Con3 = [sum(z) <= b];
Objective = (x-y)'*(x-y)
solvesdp([Con1,Con2,Con3],Objective)
[double(x) a double(z)]