Changes in version 1.1.0 New features - Box constraints: GetAlgoParams gains lower and upper parameters for per-parameter bounds. Enforced via bounds_type = "reflect" (default, mirrors proposals back across boundary) or "clip" (truncates to boundary). - Warm start: optim_SQGDE gains warm_start parameter. Pass the output of a previous run to seed the population and continue optimization without re-initializing. - Disk recovery: GetAlgoParams gains recovery_path (.rds file path) and recovery_freq (save interval in iterations). Partial results are written to disk periodically via saveRDS, surviving interrupts and OOM crashes. Load with readRDS(recovery_path). - Progress message control: GetAlgoParams gains trace_print_freq. Set to an integer to print progress every N iterations, or Inf to suppress all iteration messages. - Unified adaptation schemes: rand, current, and best DE schemes are now selected via adapt_scheme in GetAlgoParams rather than separate internal functions. - crossover_rate = 0: Now accepted; selects exactly one random parameter to update per iteration. - jitter_size = 0: Now accepted; disables jitter noise. - Block coordinate updating: GetAlgoParams gains param_block_list, an optional list of integer vectors partitioning 1:n_params into blocks. The optimizer cycles through blocks in order across iterations, updating only the current block's parameters instead of using random crossover selection. Useful for high-dimensional problems where updating parameter subsets per iteration is more efficient. Bug fixes - Fixed division-by-zero in grad_approx_fn when two particles are identical or have equal weights (zero-diff guard). - Fixed rand scheme incorrectly sampling 2*n_diff parents instead of 2*n_diff + 1, causing out-of-bounds index access. - Fixed runif jitter applied over n_params elements instead of length(param_indices) when crossover_rate < 1. - Fixed GetAlgoParams validation for n_params, n_particles, and n_iter: finiteness is now checked before as.integer() coercion, preventing silent NA production and spurious "condition has length > 1" errors on vector inputs. Changes in version 1.0.1 (2022-05-10) - Package uses "message()" instead of "print()" to communicate with user. - minor fix to documentation. Changes in version 1.0.0 - First public release of package.