554 double alpha_i =
alpha[
i];
557 G[j] += alpha_i*Q_i[j];
567 int max_iter =
max(10000000, l>INT_MAX/100 ? INT_MAX : 100*l);
568 int counter =
min(l,1000)+1;
570 while(iter < max_iter)
576 counter =
min(l,1000);
602 double C_i =
get_C(i);
603 double C_j =
get_C(j);
605 double old_alpha_i =
alpha[
i];
606 double old_alpha_j =
alpha[
j];
610 double quad_coef =
QD[
i]+
QD[
j]+2*Q_i[
j];
639 alpha[
j] = C_i - diff;
647 alpha[
i] = C_j + diff;
653 double quad_coef =
QD[
i]+
QD[
j]-2*Q_i[
j];
656 double delta = (
G[
i]-
G[
j])/quad_coef;
657 double sum = alpha[
i] + alpha[
j];
666 alpha[
j] = sum - C_i;
682 alpha[
i] = sum - C_j;
697 double delta_alpha_i = alpha[
i] - old_alpha_i;
698 double delta_alpha_j = alpha[
j] - old_alpha_j;
702 G[
k] += Q_i[
k]*delta_alpha_i + Q_j[
k]*delta_alpha_j;
718 G_bar[k] -= C_i * Q_i[k];
721 G_bar[k] += C_i * Q_i[k];
729 G_bar[k] -= C_j * Q_j[k];
732 G_bar[k] += C_j * Q_j[k];
746 fprintf(stderr,
"\nWARNING: reaching max number of iterations\n");
758 v += alpha[i] * (
G[i] +
p[i]);
777 si->upper_bound_p =
Cp;
778 si->upper_bound_n =
Cn;
780 info(
"\noptimization finished, #iter = %d\n",iter);
void min(Image< double > &op1, const Image< double > &op2)
virtual Qfloat * get_Q(int column, int len) const =0
ql0001_ & k(htemp+1),(cvec+1),(atemp+1),(bj+1),(bl+1),(bu+1),(x+1),(clamda+1), &iout, infoqp, &zero,(w+1), &lenw,(iw+1), &leniw, &glob_grd.epsmac
virtual int select_working_set(int &i, int &j)
bool is_upper_bound(int i)
void max(Image< double > &op1, const Image< double > &op2)
void update_alpha_status(int i)
virtual double * get_QD() const =0
virtual void do_shrinking()
bool is_lower_bound(int i)
fprintf(glob_prnt.io, "\)
virtual double calculate_rho()
void reconstruct_gradient()