MOOCHO (Single Doxygen Collection)  Version of the Day
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
RTOp_TOp_force_in_bounds.h File Reference
#include "RTOp.h"
#include "RTOp_obj_null_vtbl.h"
Include dependency graph for RTOp_TOp_force_in_bounds.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

const struct RTOp_RTOp_vtbl_t RTOp_TOp_force_in_bounds_vtbl
 
int RTOp_TOp_force_in_bounds_construct (struct RTOp_RTOp *op)
 
int RTOp_TOp_force_in_bounds_destroy (struct RTOp_RTOp *op)
 
const struct RTOp_RTOp_vtbl_t RTOp_TOp_force_in_bounds_buffer_vtbl
 
int RTOp_TOp_force_in_bounds_buffer_construct (RTOp_value_type rel_push, RTOp_value_type abs_push, struct RTOp_RTOp *op)
 
int RTOp_TOp_force_in_bounds_buffer_destroy (struct RTOp_RTOp *op)
 
int RTOp_TOp_force_in_bounds_buffer_init (RTOp_value_type rel_push, RTOp_value_type abs_push, struct RTOp_RTOp *op)
 

Detailed Description

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.

Function Documentation

int RTOp_TOp_force_in_bounds_construct ( struct RTOp_RTOp op)

Definition at line 134 of file RTOp_TOp_force_in_bounds.c.

int RTOp_TOp_force_in_bounds_destroy ( struct RTOp_RTOp op)

Definition at line 141 of file RTOp_TOp_force_in_bounds.c.

int RTOp_TOp_force_in_bounds_buffer_construct ( RTOp_value_type  rel_push,
RTOp_value_type  abs_push,
struct RTOp_RTOp op 
)

Definition at line 248 of file RTOp_TOp_force_in_bounds.c.

int RTOp_TOp_force_in_bounds_buffer_destroy ( struct RTOp_RTOp op)

Definition at line 259 of file RTOp_TOp_force_in_bounds.c.

int RTOp_TOp_force_in_bounds_buffer_init ( RTOp_value_type  rel_push,
RTOp_value_type  abs_push,
struct RTOp_RTOp op 
)

Definition at line 267 of file RTOp_TOp_force_in_bounds.c.

Variable Documentation

const struct RTOp_RTOp_vtbl_t RTOp_TOp_force_in_bounds_vtbl

Definition at line 121 of file RTOp_TOp_force_in_bounds.c.

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.