Programmazione lineare Scipy

Programmazione lineare Scipy

Nel mondo di oggi in cui ogni altro compito richiede un alto potere computazionale o una forza lavoro, i sistemi artificialmente intelligenti stanno prendendo il posto del lavoro manuale. Quindi, ogni altro compito quotidiano basato sulla vita viene convertito in sistemi autonomi. Per creare tali sistemi autonomi, dobbiamo creare interazione con i computer per farli imparare a eseguire il programma e come prendere decisioni. Utilizziamo alcuni linguaggi comprensibili per computer, anche indicati come linguaggi di programmazione, per consentire questa interazione.

Tra tutti i linguaggi del computer attualmente in uso, Python è uno dei più noti. Il linguaggio è costruito con diverse librerie che consentono il funzionamento di diverse attività utilizzando i loro moduli e caratteristiche integrati. Python è anche accreditato per essere una lingua per principianti a causa della sua sceneggiatura di facile comprensione poiché la sceneggiatura di Python è scritta principalmente in lingua inglese. Scipy è la famosa biblioteca di Pythons costruita su un'altra famosa biblioteca, "Numpy", di Python. Lo Scipy funziona fornendo le funzioni integrate e i moduli per i compiti in cui lavoriamo con la formazione di reti neurali artificiali di Deep Learning e algoritmi di apprendimento automatico per scopi matematici e computazionali.

Il modulo di "programmazione lineare" dello Scipy rappresenta quegli strumenti e le tecniche che vengono utilizzate come strumenti matematici per le ottimizzazioni matematiche per risolvere le equazioni del sistema lineare, comprese le uguaglianze e le disuguaglianze. Aiuta a massimizzare o ridurre al minimo il sistema o la funzione lineare. I sistemi lineari possono avere molte soluzioni, quindi utilizziamo la programmazione lineare in modo da trovare una soluzione particolare per il sistema di disuguaglianze.

Procedura:

Questo articolo copre l'introduzione dell'argomento della programmazione lineare di Scipy. Quindi, otterremo la conoscenza della sintassi per la dichiarazione di questa funzione nello script Python con i suoi parametri tutto possibile. E quindi la funzione è implementata con l'aiuto di esempi.

Sintassi:

La sintassi per la funzione di programmazione lineare di Scipy nello script Python può essere scritta come segue:

$ SCIPY.ottimizzare.LinProg (C, A_UB = NONE, B_UB = NONE, A_EQ = NONE, B_EQ = Nessuno, limiti = nessuno, Method = 'Highs', callback = Nessuno, Opzioni = nessuno, x0 = Nessuno, integralità = nessuno)


Nella funzione precedentemente menzionata, il parametro "C" è l'array 1-dimensionale che ha le informazioni sui coefficienti di quella funzione lineare che vogliamo minimizzare attraverso la programmazione lineare. I parametri successivi, "A_UB" e "B_UB", sono i parametri opzionali. Entrambi sono le matrici bidimensionali e 1-dimensionali, rispettivamente, in cui A_ub parla della matrice di vincolo di disuguaglianza sulla variabile "X" del sistema di equazione lineare. Mentre B-UB è un vettore di vincolo di disuguaglianza per il valore di A_ub in corrispondenza a x.

Il parametro "sequenza" mostra il limite superiore e il limite inferiore per la massimizzazione o la minimizzazione di ogni elemento nella x. Il parametro finale è il "metodo" che è opzionale, ma questo specifica l'algoritmo standard per risolvere il problema. Il suo valore è "alto" per impostazione predefinita.

Valore di ritorno:

La funzione di programmazione lineare restituisce i valori come array monodimensionale che è il risultato della soluzione particolare per ridurre al minimo la funzione obiettivo dopo aver soddisfatto i possibili vincoli sulla funzione.

Esempio 1:

Risolviamo un sistema lineare di disuguaglianze e utilizziamo la programmazione lineare di Scipy per trovare la soluzione per ridurre al minimo la funzione obiettivo di quel sistema. Prima di passare a scrivere il codice, tieni presente che scriveremo il programma in "Google Collab" che è riconosciuta come una piattaforma Python online open source con tutti i pacchetti Python preinstallati.

Cominciamo creando un nuovo notebook nel programma. Prima di scrivere il programma, dobbiamo definire o prendere il sistema delle equazioni lineari. A tale scopo, prendiamo il seguente sistema lineare e lavoriamo per ridurre al minimo questa funzione con tutti i suoi vincoli usando la programmazione lineare:

Minimizzare y = 5x1 + 10x2 +15x3

tale che:


Dobbiamo ridurre al minimo la "y" con tutti i suoi vincoli. Siamo tenuti a importare le informazioni che sono rilevanti per la programmazione lineare e l'array per il nostro programma. Per questo, importiamo i due pacchetti importanti da T "Numpy" che si occupano della definizione e delle funzioni dell'array. Il secondo è l '"attributo ottimizza" di Scipy da cui importa la funzione "LinProg".

Quando abbiamo finito con queste librerie, dichiariamo e definiamo le equazioni del sistema lineare precedentemente menzionato uno per uno. Innanzitutto, definiamo la "Y" che funge da coefficiente per il vettore obiettivo lineare, "Y". Chiama il "NP. array "e passare tutti i coefficienti di y agli elementi dell'array come" NP. Array ([5, 10, 15]) ".

Ora, definiamo la matrice di vincolo di disuguaglianza per questo sistema lineare. Questo è definito nella forma usando "NP di Numpy. Metodo array ([]) ". Questa matrice ha gli elementi come "NP. array ([-1, -1, -1], [-1, 1, 0], [0, 0, 15], [-1, 0, 0], [0, -1, 0], [0 , 0, -1]) ". Salviamo questo array come "a_ub". Dopo questo, definiamo il "B_UB". I valori di B_UB sono "NP.Array ([-1050, 0, -340, 0, 0, 0]) ". Per trovare la soluzione ottimale per questo esempio, chiamiamo la funzione "Programmazione lineare ()" e passiamo la matrice "A_UB", il vettore "B_UB" e il coefficiente "C" al parametro della funzione come "LinProg (C, C, C, C, C, C, C, C, C, C, C, C, C, C, C, C, C, C, C, C, C, C, C, C, C, C, C, C, C, C, C, C, C, C, C, C, C, C, C, a_ub, b_ub) ". Quindi, visualizziamo i risultati. Il programma per questo esempio è scritto sotto forma di codice Python con il suo output come segue:

Importa Numpy come NP
da Scipy.Ottimizza l'importazione LinProg
c = np.Array ([10, 15, 25])
a_ub = np.array ([[ -1, -1, -1], [-1, 2, 0], [0, 0, -1], [-1, 0, 0], [0, -1, 0], [0, 0, -1]])
b_ub = np.array ([ -1000, 0, -340, 0, 0, 0])
risultato = linprog (c, a_ub, b_ub)
Stampa ('Valore ottimale:', round (risultato.divertimento, ndigits = 2),
'\ nx valori:', risultato.X,
'\ nnumber of iterations:', risultato.nit,
'\ nstatus:', risultato.Messaggio)


Conclusione

In questo editoriale, abbiamo trattato l'argomento della "programmazione lineare di Scipy". Abbiamo discusso di cosa sia la programmazione lineare e perché ne abbiamo bisogno. Quindi, abbiamo parlato della sintassi per questa funzione e applicato questa funzione a un sistema lineare di disuguaglianze per trovare la sua soluzione ottimizzata.