Come passare da un problema if-else a un vincolo lineare

Messaggioda Giulydm » 01/11/2022, 21:57

Buonasera a tutti, avrei bisogno di un aiuto: Sto facendo la tesi di laurea magistrale su un problema di ottimizzazione tramite la programmazione lineare.
Nello specifico, per la risoluzione con il metodo MIX INTEGER LINEAR PROGRAMMING, mi hanno detto che non è possibile avere un problema if-else.
Ho appunto questa funzione if-else e dovrei trovare il modo di trascriverla attraverso una funzione matematica in cui β dipenda dalle grandezze x1 e x2 (mettendo tutto in un'unica funzione).

β = 1 se k1x1 - k2x2 >= C
β = 0 altrimenti

k1,k2,C sono costanti, x1,x2 sono le variabili.
Tale termine β compare nella funzione obiettivo (da minimizzare) sotto forma di β*C

La mia relatrice mi ha detto che l'idea deve essere quella di avere un parametro che si comporta come in questo modo, ovvero che verifica alternativamente queste due disequazioni

x3 > C*y
x4 <= C(1-y)

Con y binario [0;1]

Non riesco proprio a capire come si può impostare il problema.
Ringrazio tutti quelli che proveranno ad aiutarmi.
Giulydm
Starting Member
Starting Member
 
Messaggio: 2 di 2
Iscritto il: 01/11/2022, 19:28

Re: Come passare da un problema if-else a un vincolo lineare

Messaggioda ingres » 14/11/2022, 15:40

Credo che una buona soluzione possa essere l'uso della funzione SIGN (segno) che fornisce +1 se l'argomento è >0 e -1 se l'argomento è <0 e zero per argomento zero. Quindi potresti scrivere:

$beta =(1+SIGN(K1*X1 -K2*X2))/2$

L'unico difetto è che per K1*X1 -K2*X2 =0 otterresti 1/2, ma a questo si rimedia facilmente aggiungendo all'argomento un piccolissimo valore positivo (tipo 1E-10 o simile).

In ultimo, se per caso la funzione a gradino così ottenuta fosse "indigesta" per l'algoritmo di ottimizzazione (ovviamente potrebbe dare problemi ad uno Jacobiano), potresti anche usare una qualche funzione sigmoide molto pendente.
Chi non vorrà attingere ad altra intelligenza che alla sua, si troverà ben presto ridotto alla più miserabile di tutte le imitazioni: a quella delle sue stesse opere (Ingres)
ingres
Senior Member
Senior Member
 
Messaggio: 20 di 1718
Iscritto il: 30/10/2022, 11:45


Torna a Pensare un po' di più

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite