Niet-lineair programmeren is een methode waarmee een objectieve functie wordt geoptimaliseerd, hetzij door te maximaliseren of te minimaliseren. Dit, rekening houdend met verschillende gegeven beperkingen. Het wordt gekenmerkt omdat de objectieve functie, of enkele van de beperkingen, niet-lineair kunnen zijn.
Niet-lineair programmeren is dus een proces waarbij de functie die moet worden gemaximaliseerd, of een van de beperkingen, verschilt van een lineaire of eerstegraadsvergelijking, waarbij de variabelen worden verheven tot de macht 1.
We moeten niet vergeten dat een lineaire vergelijking een wiskundige gelijkheid is die een of meer onbekenden kan hebben. Het heeft dus de volgende basisvorm, waarbij a en b de constanten zijn, terwijl x en y de variabelen zijn:
ax + b = y
Hieraan moet worden toegevoegd dat niet alle elementen waaruit dit type programmering bestaat, aan dit kenmerk zullen voldoen. Het kan bijvoorbeeld zijn dat de doelfunctie een vergelijking van de tweede graad is en dat een van de variabelen gekwadrateerd is en de volgende vorm vervult:
y = ax2+ bx + c
Nu, door niet-lineaire programmering, zou deze functie kunnen worden geoptimaliseerd door de maximale of minimale waarde van y te vinden. Dit, rekening houdend met het feit dat x onderhevig is aan bepaalde beperkingen.
Elementen van niet-lineair programmeren
De belangrijkste elementen van niet-lineair programmeren zijn de volgende:
- Objectieve functie: Het is de functie die wordt geoptimaliseerd, door het resultaat te maximaliseren of te minimaliseren.
- Beperkingen: Het zijn die voorwaarden waaraan moet worden voldaan bij het optimaliseren van de doelfunctie. Het kunnen algebraïsche vergelijkingen of ongelijkheden zijn.
Oefening niet-lineair programmeren
Laten we tot slot een niet-lineaire programmeeroefening bekijken.
Stel we hebben de volgende functie:
y = 25 + 10x-x2
We hebben ook de volgende beperking:
y = 50-3x
Zoals we in de grafiek kunnen zien, snijden de doelfunctie en de beperking elkaar op twee punten, maar waar y is gemaximaliseerd is wanneer x = 2,3, waarbij y = 43 (decimalen zijn bij benadering).
De afkappunten kunnen worden gevonden door beide vergelijkingen gelijk te stellen:
25 + 10x-x2= 50-3x
0 = x2-13x + 25
Dan heeft de kwadratische vergelijking hierboven twee oplossingen of wortels die gevonden kunnen worden met de volgende formules, waarbij a = 1, b = -13 en c = 25.
We vinden dus dat x1 = 2,3467 (y = 43) en x2 = 10,653 (y = 18).
We moeten waarschuwen dat dit type programmering complexer is dan lineair, en er zijn niet zoveel tools online beschikbaar om dit type optimalisatie op te lossen. Het getoonde voorbeeld is een zeer vereenvoudigd geval.