RTOpPack: Extra C/C++ Code for Vector Reduction/Transformation Operators
Version of the Day
|
#include "RTOp.h"
#include "RTOp_obj_null_vtbl.h"
Go to the source code of this file.
const struct RTOp_RTOp_vtbl_t | RTOp_TOp_force_in_bounds_buffer_vtbl |
Force the elements in a vector to be within upper and lower bounds.
Force vec[0](i) <= targ_vec[0](i) <= vec[1](i), for i = 1...n
.
This operator is only admits dense vectors. This transformation operation performs the following (apply_op(...)
):
/ xl(i) : if x(i) < xl(i) x(i) = | x(i) : if xl(i) <= x(i) <= xu(i) \ xu(i) : if x(i) > xu(i) where: x = targ_vec[0] xl = vec[0] xu = vec[1]
Definition in file RTOp_TOp_force_in_bounds.h.
const struct RTOp_RTOp_vtbl_t RTOp_TOp_force_in_bounds_buffer_vtbl |
This operator is used by the interior point algorithm to push initial variables sufficiently inside the bounds since the algorithm assumes that they are ALWAYS within bounds.
element-wise transformation: xl_sb = min(v0 + rel_push*(v1-v0), v0 + abs_push); xu_sb = max(v1 - rel_push*(v1-v0), v1 - abs_push); if (xl_sb >= xu_sb) { z0 = v0 + (v1-v0)/2.0; } else if (z0 < xl_sb) { z0 = xl_sb; } else if (z0 > xu_sb) { z0 = xu_sb; } // Otherwise, leave it
This operator class implementation was created automatically by 'new_rtop.pl'.
xl_sb = min(xl+relative_bound_push*(xu-xl), xl + absolute_bound_push) xu_sb = max(xu-relative_bound_push*(xu-xl), xu - absolute_bound_push) if (xl_sb > xu_sb) then x = (xl + (xu-xl)/2 else if (x < xl_sb) then x = xl_sb else if (x > xu_sb) then x = xu_sb
Definition at line 235 of file RTOp_TOp_force_in_bounds.c.