Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

[Feature Request] Documentation of Nelder-Mead method

Cerrado
#260 2 comentarios 0 reacciones 0 asignados Ver en GitHub

@github-actions ya está trabajando en esto.

Desde el 18/4/2026.

  • #377 de @github-actions — abierto

Evaluación

Dificultad
2/5
Tiempo estimado
1-3 horas
Aptitud para principiantes
52/100
Tipo de issue
Documentación
Claridad
Bastante claro
Estado de actividad
Tranquilo
Stack tecnológico
fsharp

Línea de trabajo

Comience con los puntos de entrada NelderMead.NmConfig y OptimizationStop.defaultStopCriteria mostrados en la reproducción, e inspeccione la estructura de documentación existente para determinar dónde se describen sus campos. Documente los campos relevantes de configuración y de los criterios de parada para que el resultado del ejemplo, cercano al mínimo, y los posibles ajustes sean comprensibles.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

Documentation

Problem

When Nelder-Mead method is applied to a simple quadratic polynomial, the minimization is unable to identify the minimum. It is quite close, but the modification of StopCriterion or the NmConfig isn't trivial without further documentation.

Solution

Description of the fields in the documentation.

Steps to reproduce

#r "nuget: Plotly.NET"
#r "nuget: FSharp.Stats, 0.4.12-preview.2"

open FSharp.Stats
open FSharp.Stats.Optimization
open System

open Plotly.NET


let myFunction (xs: vector) = 
    let x = xs.[0]
    x**2. - 0.32*x - 0.13

// initial guess for the optimization
let x0 = vector [| -0.3 |]

// default solver options
let nmc = NelderMead.NmConfig.defaultInit()   

// optimization procedure
let optim = 
    //let stopCrit = 
    //    { OptimizationStop.defaultStopCriteria with MinFunctionEpsilon = 1e-24 }
    //NelderMead.minimizeWithStopCriteria nmc x0 myFunction stopCrit
    NelderMead.minimize nmc x0 myFunction
 

(*
optim.Vectors just contains 3 valid vectors
*)

let validVectors = 3


// optimization results as x, y, and z coordinate
let xs,ys =
    optim.Vectors.[0..validVectors - 1] |> Array.map (fun x -> x.[0],myFunction x)
    |> Array.unzip

let optimizationPathchart = 
    [
    [-1.  .. 0.005 .. 1.] |> List.map (fun x -> x,myFunction (vector [x])) |> Chart.Line 
    Chart.Line(x=xs,y=ys,ShowMarkers=true,Name="Optimization path")
    Chart.Point([optim.SolutionVector.[0],optim.Solution],Name="Solution")
    ]
    |> Chart.combine    
    |> Chart.withTemplate ChartTemplates.lightMirrored
    |> Chart.withXAxisStyle ("x",ShowGrid=false) 
    |> Chart.withYAxisStyle ("myFunction(x)",ShowGrid=false) 
    |> Chart.withSize (800.,800.)


Chart.show optimizationPathchart

image

Lenguaje dominante
F#
Estrellas
228
Forks
58
Merge medio
5 d 13 h
PR fusionados (30 d)
2

Preparar el entorno

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de fslaborg/FSharp.Stats

Todos los issues de fslaborg/FSharp.Stats

Issues similares

Más issues de Documentation

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.