MultiStart
Trouver plusieurs minima locaux
Description
Un objet MultiStart contient des propriétés (options) qui affectent la manière dont run exécute à plusieurs reprises un solveur local pour générer un objet GlobalOptimSolution. Lorsqu'il est exécuté, le solveur tente de trouver plusieurs solutions locales à un problème en partant de différents points.
Création
Syntaxe
Description
ms = MultiStart crée ms, un solveur MultiStart avec ses propriétés définies par défaut.
ms = MultiStart(Name,Value) définit les propriétés à l'aide de paires nom-valeur.
ms = MultiStart(oldMS,Name,Value) crée une copie du solveur oldMS MultiStart et définit les propriétés à l'aide de paires nom-valeur.
ms = MultiStart(gs) crée ms, un solveur MultiStart, avec des valeurs de paramètres communes du solveur gs GlobalSearch.
Propriétés
Niveau d'affichage dans la fenêtre de commande, spécifié comme l'un des vecteurs de caractères ou chaînes de caractères suivants :
'final'– Rapport récapitulatif des résultats une foisrunterminé.'iter'– Rapport des résultats après l'exécution initialefmincon, après l'étape 1, après chaque 200 points de départ et après chaque exécution defmincon, en plus du résumé final.'off'– Pas d’affichage.
Exemple : 'iter'
Types de données : char | string
Tolérance sur les valeurs de fonction pour considérer les solutions comme égales, spécifiée comme un scalaire non négatif. Les solveurs considèrent deux solutions identiques si elles sont à une distance relative de XTolerance l'une de l'autre et si leurs valeurs de fonction objectif sont à une différence relative de FunctionTolerance l'une de l'autre. Si les deux conditions ne sont pas remplies, les solveurs signalent les solutions comme distinctes. Définissez FunctionTolerance sur 0 pour obtenir les résultats de chaque exécution du solveur local. Définissez FunctionTolerance sur une valeur plus grande pour avoir moins de résultats. Pour plus de détails sur GlobalSearch, voir Update Solution Set dans When fmincon Runs. Pour plus de détails sur MultiStart, voir Create GlobalOptimSolution Object.
Exemple : 1e-4
Types de données : double
Durée maximale en secondes pendant laquelle MultiStart s'exécute, spécifiée sous la forme d'un scalaire positif. MultiStart et ses solveurs locaux s'arrêtent lorsque MaxTime secondes se sont écoulées depuis le début de l'exécution, comme mesuré par tic et toc.
MaxTime n'interrompt pas les solveurs locaux pendant une exécution, donc le temps total peut dépasser MaxTime.
Exemple : 180 arrête le solveur la première fois qu'un appel de solveur local se termine après 180 secondes.
Types de données : double
Rapport sur la progression du solveur ou arrêt du solveur, spécifié sous la forme d'un handle de fonction ou d'un cell array de handles de fonction. Les fonctions de sortie s'exécutent après chaque appel du solveur local. Ils s'exécutent également lorsque le solveur global démarre et se termine. Écrivez les fonctions de sortie en utilisant la syntaxe décrite dans OutputFcn. Voir Custom GlobalSearch Output Function.
La fonction de sortie @savelocalsolutions intégrée enregistre toutes les solutions locales dans la variable localSolTable dans l'espace de travail de base. Cette fonction de sortie enregistre les solutions locales irréalisables ainsi que les solutions locales réalisables. Pour un exemple, voir Collect All Local Solutions.
Types de données : cell | function_handle
Progression du solveur de tracé, spécifiée sous la forme d'un handle de fonction ou d'un cell array de handles de fonction. Les fonctions de tracé s'exécutent après chaque appel du solveur local. Ils s'exécutent également lorsque le solveur global démarre et se termine. Écrivez des fonctions de tracé en utilisant la syntaxe décrite dans OutputFcn.
Il existe deux fonctions de tracé intégrées :
@gsplotbestftrace la meilleure valeur de fonction objectif.@gsplotfunccounttrace le nombre d'évaluations de fonctions.
Voir MultiStart Plot Function.
Exemple : @gsplotbestf
Types de données : cell | function_handle
Points de départ à exécuter, spécifiés comme :
'all'— Exécutez tous les points de départ.'bounds'— Exécutez uniquement les points de départ qui satisfont les limites.'bounds-ineqs'— Exécutez uniquement les points de départ qui satisfont aux contraintes de limites et d’inégalité.
Exemple : 'bounds' exécute uniquement les points qui satisfont toutes les limites.
Types de données : char | string
Distribuez les appels du solveur local à plusieurs processeurs, spécifiés comme false ou true.
false— Ne pas exécuter en parallèle.true— Distribuez les appels du solveur local à plusieurs processeurs.
Exemple : true
Types de données : logical
Tolérance sur la distance pour considérer les solutions comme égales, spécifiée comme un scalaire non négatif. Les solveurs considèrent deux solutions identiques si elles sont à une distance relative de XTolerance l'une de l'autre et si leurs valeurs de fonction objectif sont à une différence relative de FunctionTolerance l'une de l'autre. Si les deux conditions ne sont pas remplies, les solveurs signalent les solutions comme distinctes. Définissez XTolerance sur 0 pour obtenir les résultats de chaque exécution du solveur local. Définissez XTolerance sur une valeur plus grande pour avoir moins de résultats. Pour plus de détails sur GlobalSearch, voir Update Solution Set dans When fmincon Runs. Pour plus de détails sur MultiStart, voir Create GlobalOptimSolution Object.
Exemple : 2e-4
Types de données : double
Fonctions d'objet
run | Run multiple-start solver |
Exemples
Considérons une fonction avec plusieurs minima locaux.
fun = @(x) x.^2 + 4*sin(5*x); fplot(fun,[-5,5])

Pour rechercher le minimum global, exécutez MultiStart sur 20 instances du problème à l'aide de l'algorithme fmincon 'sqp'.
rng default % For reproducibility opts = optimoptions(@fmincon,'Algorithm','sqp'); problem = createOptimProblem('fmincon','objective',... fun,'x0',3,'lb',-5,'ub',5,'options',opts); ms = MultiStart; [x,f] = run(ms,problem,20)
MultiStart completed the runs from all start points. All 20 local solver runs converged with a positive local solver exitflag.
x = -0.3080
f = -3.9032
Créez un objet MultiStart avec des propriétés par défaut.
ms = MultiStart
ms =
MultiStart with properties:
UseParallel: 0
Display: 'final'
FunctionTolerance: 1.0000e-06
MaxTime: Inf
OutputFcn: []
PlotFcn: []
StartPointsToRun: 'all'
XTolerance: 1.0000e-06
Créez un objet MultiStart avec des tolérances plus lâches que celles par défaut, afin que le solveur renvoie moins de solutions proches les unes des autres. De plus, faites en sorte que MultiStart exécute uniquement les points initiaux qui sont réalisables par rapport aux limites et aux contraintes d’inégalité.
ms = MultiStart('FunctionTolerance',2e-4,'XTolerance',5e-3,... 'StartPointsToRun','bounds-ineqs')
ms =
MultiStart with properties:
UseParallel: 0
Display: 'final'
FunctionTolerance: 2.0000e-04
MaxTime: Inf
OutputFcn: []
PlotFcn: []
StartPointsToRun: 'bounds-ineqs'
XTolerance: 0.0050
Créez un objet GlobalSearch sans utiliser les valeurs par défaut.
gs = GlobalSearch('FunctionTolerance',2e-4,'NumTrialPoints',2000)
gs =
GlobalSearch with properties:
NumTrialPoints: 2000
BasinRadiusFactor: 0.2000
DistanceThresholdFactor: 0.7500
MaxWaitCycle: 20
NumStageOnePoints: 200
PenaltyThresholdFactor: 0.2000
Display: 'final'
FunctionTolerance: 2.0000e-04
MaxTime: Inf
OutputFcn: []
PlotFcn: []
StartPointsToRun: 'all'
XTolerance: 1.0000e-06
Créez un objet MultiStart qui utilise les propriétés disponibles à partir de gs.
ms = MultiStart(gs)
ms =
MultiStart with properties:
UseParallel: 0
Display: 'final'
FunctionTolerance: 2.0000e-04
MaxTime: Inf
OutputFcn: []
PlotFcn: []
StartPointsToRun: 'all'
XTolerance: 1.0000e-06
ms a la même valeur personnalisée (pas celle par défaut) de FunctionTolerance que gs. Mais ms n'utilise pas la propriété NumTrialPoints.
Créez un objet MultiStart avec une FunctionTolerance de 1e-4.
ms = MultiStart('FunctionTolerance',1e-4)ms =
MultiStart with properties:
UseParallel: 0
Display: 'final'
FunctionTolerance: 1.0000e-04
MaxTime: Inf
OutputFcn: []
PlotFcn: []
StartPointsToRun: 'all'
XTolerance: 1.0000e-06
Mettez à jour la propriété XTolerance en 1e-3 et la propriété StartPointsToRun en 'bounds'.
ms = MultiStart(ms,'XTolerance',1e-3,'StartPointsToRun','bounds')
ms =
MultiStart with properties:
UseParallel: 0
Display: 'final'
FunctionTolerance: 1.0000e-04
MaxTime: Inf
OutputFcn: []
PlotFcn: []
StartPointsToRun: 'bounds'
XTolerance: 1.0000e-03
Vous pouvez également mettre à jour les propriétés une par une en utilisant la notation par points.
ms.MaxTime = 1800
ms =
MultiStart with properties:
UseParallel: 0
Display: 'final'
FunctionTolerance: 1.0000e-04
MaxTime: 1800
OutputFcn: []
PlotFcn: []
StartPointsToRun: 'bounds'
XTolerance: 1.0000e-03
Algorithmes
Pour une description détaillée de l'algorithme, voir MultiStart Algorithm.
Capacités étendues
Pour exécuter en parallèle, définissez l'option 'UseParallel' sur true.
options = optimoptions('solvername','UseParallel',true)
Pour plus d'informations, voir How to Use Parallel Processing in Global Optimization Toolbox.
Historique des versions
Introduit dans R2010aLa fonction de sortie @savelocalsolutions intégrée enregistre toutes les solutions locales dans la variable localSolTable dans l'espace de travail de base. Cette fonction de sortie enregistre les solutions locales irréalisables ainsi que les solutions locales réalisables.
Le optimValues Structure dans les fonctions de sortie et les fonctions de tracé contient désormais le champ constrviolation, qui présente la violation de contrainte maximale. Cette valeur est 0 pour aucune violation de contrainte.
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Sélectionner un site web
Choisissez un site web pour accéder au contenu traduit dans votre langue (lorsqu'il est disponible) et voir les événements et les offres locales. D’après votre position, nous vous recommandons de sélectionner la région suivante : .
Vous pouvez également sélectionner un site web dans la liste suivante :
Comment optimiser les performances du site
Pour optimiser les performances du site, sélectionnez la région Chine (en chinois ou en anglais). Les sites de MathWorks pour les autres pays ne sont pas optimisés pour les visites provenant de votre région.
Amériques
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)