Problema di settaggio di variabile binaria

Messaggioda raimond » 30/07/2018, 18:14

Buongiorno devo risolvere il seguente modello:
Smistamento vetture
Un’azienda produttrice di automobili deve pianificare lo smistamento delle vetture in un paese
straniero. Le vetture raggiungono il paese via mare e le navi possono attraccare in 3 diversi porti,
P1, P2 e P3. Per ciascun porto si deve pagare una tassa per ciascuna automobile del carico: nel
porto P1 la tassa ammonta a 150 euro per vettura, nel porto P2 a 250 euro per vettura, mentre
nel porto P3 la tassa è di 200 euro a vettura. Inoltre è prevista una tassa per l’utilizzo di ciascun
porto, pari rispettivamente a 1500, 1500 e 2000 euro. Le automobili devono essere inviate ai 4
centri di smistamento presenti nel paese, S1, S2, S3 e S4. L’invio di un’automobile dal porto P1
costa 0.2 euro/Km, l’invio di un’automobile dal porto P2 costa 0.1 euro/Km, mentre dal porto
P3 costa 1 euro/Km. Le distanze, in chilometri, tra porti e centri di smistamento sono riportate
nella tabella.
S1 S2 S3 S4
P1 250 150 100 200
P2 400 300 300 600
P3 40 15 30 10
La richiesta del centro di smistamento S1 è di almeno 170 vetture, quella del centro S2 è di
130 vetture, quella del centro S3 è di 100 vetture mentre la domanda di S4 è di 200 vetture.
Per motivi strategici, il centro S3 deve essere fornito da un solo porto. Inoltre se il porto P2
serve il centro di smistamento S2 deve servire anche S4. Sapendo che il porto P1 gestisce al
piu 350 automobili, il porto P2 gestisce al piu 200 vetture mentre il terzo porto gestisce al piu
300 vetture, scrivere il modello in programmazione lineare che pianifichi la distribuzione delle
vetture minimizzando i costi.


Io ho cercato di risolverlo in questo modo, riporto il codice di AMPL:

file SmistamentoVetture.mod

set P; #porti
set S; #centri di smistamento;

param T{P};# tassa per ogni automobile per ogni porto
param Tp{P};#tassa per ogni porto
param C{P};#costo del trasporto al kilometro per ogni porto
param A{P,S};#distanza da porto i a centro di smistamento j
param R{S};#richiesta di auto da ciascun centro di smistamento
param G{P};# max quantita di auto gestibili da ciascun porto

var x{P,S}, integer >=0; #quantita di auto dal porto i al centro di smistamento j
var y{P,S}, binary;# =1 se auto vengono spedite dal porto i al centro di smist j, 0 altrimenti



minimize costi:
sum{i in P,j in S}(x[i,j]*T[i]+y[i,j]*Tp[i]+y[i,j]*A[i,j]*C[i]);

subject to richiesta{j in S}:
sum{i in P}x[i,j]>=R[j];

subject to capacita{i in P}:
sum{j in S}x[i,j]<=G[i];

subject to condizione{i in P,j in S}:
y[i,j]=ceil(x[i,j]/(1+x[i,j]));

subject to condizione3{j in S:j=3}:
sum{i in P}y[i,j]<=1;

subject to condizione4 {i in P, j in S: i=2}:
y[i,2]<=y[i,4];


Sostanzialmente, ho creato due variabili, x e y.
X[i,j] è una variabile intera = quante vetture vengono spedite verso il centro "j" partendo dal porto "i".

La variabile y[i,j] è una variabile binaria =1 se le vetture vengono spedite dal porto "i" al centro "j".


Di seguito riporto anche il file dei dati(.dat) e il file.run.

Il problema è che, NON RIESCO AD ABBINARE la variabile y alla variabile x. questo mi è indispensabile per tener conto nella soluzione delle tasse per l'utilizzo di un porto.


Qualcuno puo darmi una mano?


Grazie




file SmistamentoVetture.dat

set P:=p1 p2 p3; #porti
set S:=s1 s2 s3 s4; #centri di smistamento;



param: T Tp C G:=
p1 150 1500 0.2 350
p2 250 1500 0.1 200
p3 200 2000 1 300;

param: R:= s1 170 s2 130 s3 100 s4 200;

param A: s1 s2 s3 s4:=
p1 250 150 100 200
p2 400 300 300 600
p3 40 15 30 10;

file SmistamentoVetture.run

reset;
model SmistamentoVetture.mod
data SmistamentoVetture.dat
option solver cplex;
option show_stats 3;
#option cplex_options 'sensitivity presolve=0';
suffix up OUT;
suffix down OUT;
solve;
display x;
display y;

display costi;


Grazie ancora
Ultima modifica di raimond il 30/07/2018, 22:34, modificato 1 volta in totale.
raimond
Junior Member
Junior Member
 
Messaggio: 149 di 278
Iscritto il: 03/04/2010, 12:15

Re: Problema di settaggio di variabile binaria

Messaggioda gugo82 » 30/07/2018, 21:32

Moderatore: gugo82

Scrivi con caratteri di dimensioni ordinarie.
Sono sempre stato, e mi ritengo ancora un dilettante. Cioè una persona che si diletta, che cerca sempre di provare piacere e di regalare il piacere agli altri, che scopre ogni volta quello che fa come se fosse la prima volta. (Freak Antoni)
Avatar utente
gugo82
Cannot live without
Cannot live without
 
Messaggio: 19296 di 44961
Iscritto il: 12/10/2007, 23:58
Località: Napoli

Re: Problema di settaggio di variabile binaria

Messaggioda raimond » 31/07/2018, 07:15

Ciao

penso che cosi vada bene.
raimond
Junior Member
Junior Member
 
Messaggio: 151 di 278
Iscritto il: 03/04/2010, 12:15

Re: Problema di settaggio di variabile binaria

Messaggioda raimond » 31/07/2018, 18:23

Ciao

proprio nessuno puo aiutarmi?
raimond
Junior Member
Junior Member
 
Messaggio: 152 di 278
Iscritto il: 03/04/2010, 12:15


Torna a Analisi Numerica e Ricerca Operativa

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite