randn('state',0);
rand('state',0);
a = 1;
b = -5 ;
m= 100;
u = 10*rand(m,1);
y = (rand(m,1) < exp(a*u+b)./(1+exp(a*u+b)));
plot(u,y,'o')
axis([-1,11,-0.1, 1.1]);
U = [ones(m,1) u];
cvx_expert true
cvx_begin
variables x(2)
maximize(y'*U*x-sum(log_sum_exp([zeros(1,m); x'*U'])))
cvx_end
ind1 = find(y==1);
ind2 = find(y==0);
aml = x(2); bml = x(1);
us = linspace(-1,11,1000)';
ps = exp(aml*us + bml)./(1+exp(aml*us+bml));
dots = plot(us,ps,'-', u(ind1),y(ind1),'o',...
u(ind2),y(ind2),'o');
axis([-1, 11,-0.1,1.1]);
xlabel('x');
ylabel('y');
Successive approximation method to be employed.
For improved efficiency, sedumi is solving the dual problem.
sedumi will be called several times to refine the solution.
Original size: 600 variables, 202 equality constraints
200 exponentials add 1600 variables, 1000 equality constraints
-----------------------------------------------------------------
Cones | Errors |
Mov/Act | Centering Exp cone Poly cone | Status
--------+---------------------------------+---------
200/200 | 6.389e+00 2.483e+00 1.010e-04 | Inaccurate/Solved
200/200 | 4.837e-01 1.682e-02 6.484e-05 | Inaccurate/Solved
123/200 | 5.962e-02 2.827e-04 4.536e-05 | Inaccurate/Solved
0/197 | 2.398e-03 9.557e-05 9.516e-05 | Inaccurate/Solved
0/196 | 2.491e-04 4.552e-05 4.547e-05 | Inaccurate/Solved
0/179 | 4.138e-04 6.719e-05 6.710e-05 | Inaccurate/Solved
-----------------------------------------------------------------
Status: Inaccurate/Solved
Optimal value (cvx_optval): -32.9797