# Artelys Knitro

Artelys Knitro est un solveur d'optimisation commercial spécialisé dans la résolution de problèmes d'optimisation non linéaire.
KNITRO – (nom initial) pour "Nonlinear Interior point Trust Region Optimization" (le "K" est silencieux) – a été co-fondé par Richard Waltz, Jorge Nocedal, Todd Plantenga et Richard Byrd. La première version sortie en 2001 est née des travaux de recherche menés au sein de l'université de Northwestern (par le biais de Ziena Optimization LLC) et est désormais développé par Artelys.
Les problèmes d'optimisation doivent être passés au solveur sous leur forme mathématique et il est préférable de lui fournir un moyen de calculer les dérivées sous forme de matrice creuse. Knitro peut approximer les dérivées du problème mais les performances sont généralement accrues lorsque les dérivées exactes sont fournies. Il est également possible d'utiliser un langage de modélisation qui calculera automatiquement les dérivées et appellera Knitro depuis l’environnement de modélisation.

## Classes de problèmes résolus par Artelys Knitro

Knitro est spécialisé dans les problèmes d'optimisation non linéaire mais peut également résoudre :
* Problèmes d’optimisation non linéaire généraux (NLP), notamment non convexes ;
* Systèmes d'équations non linéaires ;
* Problèmes linéaires (LP) ;
* Problèmes quadratiques (QP/QCQP/SOCP), convexes et non convexes ;
* Problèmes de moindre-carrés / régression linéaire et non linéaire ;
* Problèmes avec contraintes de complémentarités (MPCC/MPEC) ;
* Problèmes non linéaires en variables mixtes (MIP/MINLP) ;
* Problèmes boîte noire (DFO) : type de problème pour lesquels les dérivées ne sont pas disponibles.

## Algorithmes intégrés au solveur

Artelys Knitro contraint une large gamme d'algorithmes d'optimisation.

### Algorithmes dédiés à l'optimisation non linéaire (NLP)

Knitro contient quatre algorithmes dédiés à l'optimisation non linéaire dont deux reposent sur des méthodes de points intérieurs et les deux autres sur des méthodes de type Active set. Ces algorithmes ont des caractéristiques très différentes (et complémentaires) : les Méthodes de points intérieurs suivent un chemin à l'intérieur de l'espace réalisable alors que les méthodes active set ont tendance à rester à la frontière de l'espace réalisable. La présence d’algorithmes aux propriétés différentes permet de passer d'un algorithme à l'autre durant la résolution. Une option multistart permet de lancer les algorithmes depuis différents points de l'espace réalisable et ainsi essayer d'obtenir un minimum global.
* Algorithme de points intérieurs/Direct
* Algorithme de points intérieurs avec gradient conjugué
* Algorithme basé sur une méthode d'Active set
* Algorithme d'Optimisation quadratique successive (SQP)

### Algorithmes dédiés à l'optimisation non linéaire en variables mixtes (MINLP)

Artelys Knitro comprend également des algorithmes permettant de résoudre des problèmes d'optimisation (linéaire ou non) comportant des variables binaires et entières. Il inclut notamment trois algorithmes permettant de résoudre des problèmes en variables mixtes (MIP/MINLP) :
* Branch and Bound non linéaire
* Algorithme de Quesada Grossman
* Algorithme d'Optimisation quadratique successive en variables mixtes (MISQP)

## Principales fonctionnalités

Artelys Knitro est compatible avec une large gamme de langages de programmation et de modélisation :
* Programmation orientée objet avec C++, C#, Java and Python
* Programmation matricielle avec Julia, C, Fortran, MATLAB, and R
* Langages de modélisation: AIMMS, AMPL, GAMS, and MPL
* Interface avec Excel par le biais de Frontline System
Artelys Knitro possède également plusieurs fonctionnalités majeures :
* Nombreuses options disponibles et un tuner automatique
* Multistart (parallélisable) pour l'optimisation globale
* Outils intégrés d'approximation et de vérification des dérivées
* Présolveur intégré

## Plateformes supportées

Artelys Knitro est disponible sur les plateformes suivantes :
* Windows 64
* Linux 64
* MacOS 64
* Les processeurs ARM pour l'optimisation embarquée