param n;
param p{1..n};
param w{1..n};
param total_portfolio_value;
var x{1..n} >= 0 integer;
var u{1..n} >= 0;
var r >= 0;
minimize objective:
r + sum{i in 1..n} u[i];
s.t. norm1{i in 1..n}:
u[i] >= w[i] * total_portfolio_value - x[i] * p[i];
s.t. norm2{i in 1..n}:
-u[i] <= w[i] * total_portfolio_value - x[i] * p[i];
s.t. total_value:
r + sum{i in 1..n} x[i] * p[i] = total_portfolio_value;