<div dir="ltr"><div style>I am starting to work on the adaptive penalty methods section and I have a few thoughts and questions.</div><div style><br></div><div style>Any guidance would be greatly appreciated.</div><div style>
<br></div><div>Currently there is just a fixed penalty (default of 10,000) that is applied in constrained_objective for both the constraints and objectives.<br></div><div><br></div>Adaptive Penalty for Constraints<div style>
Constraints are penalized in constrained_objective for anything that isn't transformed in fn_map. We use the same penalty term for constraints and objectives. Should we have separate penalty variables for constraints and objectives (e.g. constr_penalty  and obj_penalty)?</div>
<div style><br></div><div style>The design thoughts vignettes also includes discussion of relaxing constraints. </div><div style>We can relax constraints in fn_map, the basic premise goes like this:</div><div style> - Try to transform the set of weights to satisfy the constraint</div>
<div style> - If we reach max_permutations, then relax the constraint by a random amount</div><div style> - Attempt to relax the constraints up to 5 (this could easily be changed) times</div><div style> - If the weights still do not satisfy the constraint after 5 attempts, then penalize in constrained_objective</div>
<div style><br></div><div style>This relaxation technique only works for DEoptim and random portfolios, because they support a mapping function, so I will have to be able to relax the constraints for the pso and GenSA solvers. If we use normalize=TRUE, then we can relax constraints via fn_map which is called on the weights inside constrained_objective so we are transforming the weights outside those solvers.</div>
<div style><br></div><div style>Do we need to relax constraints for the ROI solvers or are we simply at the mercy of the solvers in this case?</div><div style><br></div><div style>Adaptive Penalty for Objectives</div><div style>
 For example, with DEoptim the iterations are tracked inside DEoptim (and even printed to the screen), but how can we track the iterations in constrained_objective to know the iteration number to apply and adaptive penalty inside the function? How do we set limits on the penalty so it doesn't increase to infinity with a large number of iterations?</div>
<div style><br></div><div style>Thanks,</div><div style>Ross</div></div>