rime.util.dual_bisect

Detailed steps to solve the following convex optimization problem.

max_pi E_xy[s(x,y) * pi(x,y)] s.t. E_y[pi(x,y)] <= alpha(x)

E_x[pi(x,y)] >= beta(y)

Functions

dual_clip(u, constraint_type)

dual_complete(u, v, s, alpha, beta, eps)

min_{u>=0, v<=0} d(u, v)

dual_iterate(v, s, alpha, beta, eps[, ...])

dual_solve_u(s, alpha, eps[, verbose, ...])

find exact u s.t.

dual_v(v, s, alpha, beta, eps[, constraint_type])

min_{v<=0} d(v)

grad_u(s, alpha, eps)

alpha - E_y[sigmoid(s_xy / eps)], where

lagrangian(pi, u, v, s, alpha, beta, eps)

L(pi, u, v; s, alpha, beta, eps)

primal_solution(s[, u, v, eps])

max_pi L(pi, u, v; ...) solved by pi = sigmoid[(s(x,y) - u(x) - v(y)) / eps]