Package 'SphereOptimize'

Title: Optimization on a Unit Sphere
Description: A simple tool for numerical optimization on the unit sphere. This is achieved by combining the spherical coordinating system with L-BFGS-B optimization. This algorithm is implemented in Kolkiewicz, A., Rice, G., & Xie, Y. (2020) <doi:10.1016/j.jspi.2020.07.001>.
Authors: Yijun Xie
Maintainer: Yijun Xie <[email protected]>
License: GPL-3
Version: 0.1.1
Built: 2024-12-15 07:26:51 UTC
Source: CRAN

Help Index


Converting spherical coordinates to Cartesian coordinates

Description

The function from.Sphere convert a list of angles representing a point on a unit sphere to the corresponding Cartesian coordinates.

Usage

from.Sphere(theta)

Arguments

theta

A list of angles. The first item should be between 0 to pi, and the following items should be between 0 to 2*pi.

Value

A vector of the corresponding Cartesian coordinates.

Examples

from.Sphere(c(pi/3, pi/4, pi/5))

Conducting optimization on a unit sphere

Description

The function SphereOptimize conducts optimization on a unit sphere. If the size of neighbor near the initial value is specified, the L-BFGS-B opitmization algorithm will be called. Otherwise this function searches the whole unit sphere using Nelder-Mead algorithm by default. Other optimization methods are allowed.

Usage

SphereOptimize(par, fn, neighbor = NULL, ...)

Arguments

par

Initial values for the parameters to be optimized over. Must be in Cartesian coordinates and on a unit sphere.

fn

A function to be minimized (or maximized).

neighbor

Radius of neighbor to search for the optimal results. If not specified, this function will search for the whole unit sphere.

...

Extra arguments that can be passed to optim().

Value

A list compose three items.

  • par The optimal restuls found.

  • value The value of fn corresponding to par.

  • method The optimization algorithm used.

Examples

fn = function(s){
    return(sum(s^3))
}

s = c(sqrt(2)/2,sqrt(2)/2)
k = SphereOptimize(s, fn, control = list(fnscale = -1))
k$value
k$par

Converting Cartesian coordinates to spherical coordinates

Description

The function to.Sphere convert a list of Cartesian coordinates representing a point on a unit sphere to the corresponding spherical coordinates.

Usage

to.Sphere(s)

Arguments

s

A list of Cartesian coordinates.

Value

A vector of the corresponding angles in spherical coordinating system.

Examples

s = from.Sphere(c(pi/3, pi/4, pi/5))
theta = to.Sphere(s)
theta = round(theta, 5)
theta == round(c(pi/3, pi/4, pi/5), 5)