|
Wiki
UniCrema
Materie per semestre
Materie per anno
Materie per laurea
Help
|
|
Uni.ROMuseo History
Hide minor edits - Show changes to output
Changed lines 43-44 from:
! Occorre quindi una variabile ausiliaria, massimizzarla, e imporre che sia <= a tutti e ! tre gli angoli;
to:
! Occorre quindi una variabile ausiliaria, massimizzarla, e imporre ! che sia <= a tutti e tre gli angoli;
Added lines 1-70:
(:title Ricerca Operativa - Museo:) %titolo%''':: Ricerca Operativa - Museo ::'''
!!Testo del problema C'è una stanza in un museo, con 3 quadri appesi alle pareti secondo certe coordinate. Si vuole mettere un sensore d'allarme sul soffitto, in modo che esso "veda" i quadri sotto un certo angolo. La stanza è quadrata, con un lato di 16 metri; sul soffitto il sensore deve essere almeno a 1 metro da ogni parete.
L'ingegner Tizio vuole mettere il sensore in modo tale da massimizzare la somma complessiva degli angoli sotto i quali il sensore vede i quadri.
L'ingegner Caio vuole mettere invece il sensore in modo da massimizzare la minima ampiezza tra tutti e tre gli angoli.
Immaginando di vedere la stanza dal di sopra, ogni quadro ha due coordinate, perché è rappresentato da un segmento: # p'_1_' = (0,0), q'_1_' = (0,4) # p'_2_' = (0,10), q'_2_' = (6,16) # p'_3_' = (10,0), q'_1_' = (15,0)
!!!Risoluzione Dato un triangolo di lati ABC, abbiamo che: '''c'^2^' = a'^2^' + b'^2^' - 2abcos(alfa)''', con '''alfa''' l'angolo opposto al lato '''c'''.
Consideriamo i quadri, con le coordinate viste sopra, come il lato '''c''' di un triangolo con vertice il sensore.
!!!Codice LINGO [@ model:
SETS: quadri /1..3/: xp, yp, xq, yq, alfa, a, b, c; ENDSETS
DATA: ! Le coordinate di ciascun quadro sono messe in colonna; xp = 0 0 10; yp = 0 10 0; xq = 0 6 15; yq = 4 16 0; ENDDATA
!Funzione obiettivo: ci sono Tizio e Caio; ! Tizio vuole massimizzare la somma dei tre angoli, esce 3.58 etc. in radianti; !max = @sum(quadri(i): alfa(i));
!Caio invece vuole massimizzare il minimo angolo; ! Occorre quindi una variabile ausiliaria, massimizzarla, e imporre che sia <= a tutti e ! tre gli angoli; max = aux; @for (quadri(i): aux <= alfa(i));
! Calcolo la lunghezza dei lati; @for(quadri(i): a(i) = ((xp(i) - X)^2 + (yp(i)- Y)^2)^1/2); @for(quadri(i): b(i) = ((xq(i) - X)^2 + (yq(i)- Y)^2)^1/2); @for(quadri(i): c(i) = ((xp(i) - xq(i))^2 + (yp(i)- yq(i))^2)^1/2);
! Calcolo l'angolo alfa per ogni triangolo; @for(quadri(i): (c)^2 = a(i)^2 + b(i)^2 - 2*a(i)*b(i) * @cos(alfa(i)));
!Vincolo sull'ampiezza dell'angolo; @for(quadri(i): alfa(i) <= 3.14);
!Vincoli sulla posizione del sensore: deve essere almeno ad un metro dalle pareti; X >= 1; X <= 15; Y >= 1; Y <= 15; end @]
Come si vede, le funzioni obiettivo sono 2, perché 2 sono le proposte. Comunque alla fine salta fuori che i risultati sono molto simili.
---- [[Torna alla pagina di Ricerca Operativa -> Ricerca Operativa]]
|
|