MODEL:
! Target assignment problem in LINGO.
Given a
set of sources
e.g., weapon delivery systems, and
number of units available from each source,
a set of targets,
each with a given value, and
probabilities
Prob(i,j) = probability that one unit from source i
will be NOT be successful at target j,
Decide how many units from each source
to assign to each target
so as to maximize the expected
value of successes;
! Reference: Bracken and McCormick;
! Keywords: Target assignment, Assignment,
Transportation problem, Interdiction;
SETS:
DESTN: VALUE, DEM, LFAILP;
SOURCE: AVAIL;
DXS( DESTN, SOURCE): PROB, VOL;
ENDSETS DATA:
! Units available at each source;
AVAIL= 200 100 300 150 250;
! Min units required at each destination;
DEM=
30 0 0 0 0 100 0 0 0 40
0 0 0 50 70 35 0 0 0 10;
! Value of satisfying destination J;
VALUE=
60 50 50 75 40 60 35 30 25 150
30 45 125 200 200 130 100 100 100 150;
! Probability that a unit from source J will NOT do the job at destination I;
PROB=
1.00 .84 .96 1.00 .92
.95 .83 .95 1.00 .94
1.00 .85 .96 1.00 .92
1.00 .84 .96 1.00 .95
1.00 .85 .96 1.00 .95
.85 .81 .90 1.00 .98
.90 .81 .92 1.00 .98
.85 .82 .91 1.00 1.00
.80 .80 .92 1.00 1.00
1.00 .86 .95 .96 .90
1.00 1.00 .99 .91 .95
1.00 .98 .98 .92 .96
1.00 1.00 .99 .91 .91
1.00 .88 .98 .92 .98
1.00 .87 .97 .98 .99
1.00 .88 .98 .93 .99
1.00 .85 .95 1.00 1.00
.95 .84 .92 1.00 1.00
1.00 .85 .93 1.00 1.00
1.00 .85 .92 1.00 1.00;
ENDDATA
SUBMODEL TARGASSG:
!Max sum over I:(value of destn I)
*Prob{success at I};
! Exploit the facts:
a) Prob{at least one success in n tries} =
1 - Prob{each of n tries fails},
b) p1*p2*...pn = @EXP(@LOG(p1)+...+@LOG(pn));
MAX = OBJ;
OBJ = @SUM( DESTN( I): VALUE( I) *
( 1 - @EXP( LFAILP( I))));
! The supply constraints;
@FOR( SOURCE( J):
@SUM( DESTN( I): VOL( I, J)) <= AVAIL( J));
@FOR( DESTN( I):
!The demand constraints;
@SUM( SOURCE( J): VOL( I, J)) >= DEM( I);
!Compute log of destination I failure probability;
@FREE( LFAILP( I));
LFAILP( I) =
@SUM(SOURCE(J): @LOG(PROB(I,J)) * VOL(I,J));
);
! Can assign only integer quantities;
@FOR( DXS(i,j): @GIN(VOL(i,j)));
ENDSUBMODEL
CALC:
@SET('GLOBAL',0); ! Do not need to use Global solver;
@SOLVE( TARGASSG);
! Write a little solution report;
@WRITE(' Target assignment Solution Report',@NEWLINE(1));
@WRITE(' Total expected value of successes= ',
@FORMAT(OBJ,"10.2f"), @NEWLINE(2));
@WRITE(' #units Success', @NEWLINE(1));
@WRITE(' Target Source assigned Probability', @NEWLINE(1));
@FOR( DESTN(i):
@FOR( DXS(i,j) | VOL(i,j) #GT# 0.5:
@WRITE( @FORMAT(DESTN(i),"7s"),' ', @FORMAT(SOURCE(j),"7s"),
' ', @FORMAT( VOL(i,j),"4.0f"),
' ', @FORMAT(( 1 - @EXP( LFAILP( I))),"4.2f"), @NEWLINE(1));
);
);
ENDCALC
|