Professional Documents
Culture Documents
Copyright , 2001
....................................................
. ..
....................................................
/
....................................................
............................................................................................................................1
1. .......................................................................................5
1.1
................................................................................................................5
1.2
........................................7
1.3
....................................................10
1.4
............................................................11
2. - ......... .15
2.1
.....................................................................................15
2.2
.........................................................................16
2.3
......................................................19
2.4
- ..................................................21
2.5
- ................23
3. ..............25
3.1
......................................................25
3.2
................................27
3.2.1
......................................................................27
3.2.2
.................................................28
3.3
Simplex ..............................................................31
3.4
Manas-Nedoma.........................................................................32
3.5
.....................................................................................34
4. M UTA ......................................................................37
4.1
............................................................................................37
4.2
UTA................................................................................................39
4.3
UTASTAR.................................................................................43
4.4
UTA II .......................................................................................45
4.5
UTA 2 ........................................................................................47
4.6
UTAKMEN ...............................................................................48
4.7
UTA................................................................................................49
4.8
UTADIS.....................................................................................51
4.9
UTA ...............................................54
5. H UTA ................................................57
5.1
...................................................57
5.2
................................................59
5.3
........................................................60
6. MUSA .......................................................................................................65
6.1
............................................................................................66
6.2
...................................................................................................67
6.3
................................................................70
6.4
MUSA ...............................................................73
6.5
....................................................76
7. H MUSA .............................................79
7.1
.......................................80
7.2
........................................................81
7.3
..........................................................................................84
7.3.1
.....................................................................85
7.3.2
.........................................................................85
7.3.3
...................................................................86
7.4
....................................................88
7.5
....................................................................................93
7.6
........................................................................................96
7.6.1
...............................................................................97
7.6.2
..............................................................................101
...........................................................................................................................105
.............................................................................................................107
: C++ ...................................111
master5.cpp ..................................................................................................................112
transformations.h .........................................................................................................161
Frontmip.h....................................................................................................................170
: .......................179
: .....................................................193
.
. ,
. .. . .
.
.
MUSA, .
C++.
.
,
.
(1997)
(2000-2001)
(1994-)
(2/99 6/99)
(10/98-2/99)
&
(10/97-2/98)
(1995-1998)
Project Manager
. INTERFACE ALTEC.
&
(.....) .
407
.,
407
.,
.
(1996-2000)
DIMITRA
FAIR .
(1996-1997)
-
YOUTHSTART
GREENWAYS PROJECT
YOUTHSTART.
(1996-1997)
()
M -
()
()
(-)
().
20 -
.
,
,
.
,
. UTA MUSA, ,
-
.
.
. ,
UTA MUSA
.
UTA MUSA.
.
, MUSA
C++,
.
,
,
.
,
.
.
.
.
,
, .
,
,
.
.
-
,
.
.
.
,
.
,
.
.
, -
,
,
1
.
UTA Jacquet-Lagrze and Siskos (1982).
,
.
,
. ,
,
. UTA,
,
,
,
.
-
MUSA (2000) -
,
.
,
, ,
. ,
.
.
.
. ,
UTA MUSA
.
.
,
.
UTA MUSA.
,
,
.
, MUSA
C++,
,
. C++
. , - (pointers)
C++ ,
.
Microsoft
EXCEL
, EXCEL (
),
EXCEL Microsoft.
(txt) ,
EXCEL
.
( , , )
MUSA
( , ,
, ).
MUSA
,
.
8
,
.
MUSA
.
, 7
:
1 :
.
UTA MUSA.
2o :
UTA MUSA.
3 :
3
UTA MUSA.
4 : UTA .
. , UTA
.
5
:
UTA.
6 : MUSA
.
7 : MUSA.
. 8
.
1.
1.
1.1.
. ,
.
,
,
.
( , , ).
, /
/
- .
, ,
.
(, , ,
...) (
, , ...)
. ,
.
. ,
,
,
,
(marketing concept),
(social marketing concept).
(,1994)
.
.
:
... .
... , ,
,
.
...
,
.
... ,
, , ,
5
1.
. (,1994)
.
,
,
(,1995).
,
.
.
( , 2000).
:
1.
.
.
.
2.
. ,
,
.
, , .
3.
.
.
.
,
(utility function)
.
4.
.
.
5.
.
.
.
(, 1995)
,
6
1.
, ,
, , ...
- ,
. (Kotler, 1994)
(outcome),
(process).
. ,
.
.
,
.
,
. ,
,
. ,
: )
, ) ,
)
. (, 1994)
1.2.
. -
,
:
1.
2.
(product
oriented) (consumer
oriented). ,
,
,
. ,
,
, .
(, 1995).
7
1.
,
.
,
:
1.
2.
3.
4.
5.
6.
(, 1995)
,
. ,
. ,
,
. ,
.
.
.(, 1994)
,
,
,
.
, ,
(, , )
.
,
(, 1995).
,
.
, ,
.
8
1.
,
. ,
.
.(, 1995)
.
,
.
,
. ,
,
.(, 1995)
. (
)
. ( , 2000)
, ,
.
:
1. .
.
2. .
.
3. .
.
4. . ,
.
5. .
,
.
1.
6. .
,
,
.
( , 2000)
, Helson,
, Festinger, .
1.3.
.
. (Morgan and Piercy, 1994)
1.1,
.
,
. ,
,
.
,
.
: (Multiattribute Attitude Models),
Rosenberg, (Basic Multiattribute Model),
Fishbein, (Hybrid Models),
Fishbein . (, 1994)
(attributes),
.
,
.
.(, 1995)
(market segmentation)
,
.
(product positioning) ,
.(, 1994)
10
1.
Hauser and Urban (1978), Von Neumann
Morgenstern (1947), (descriptive models)
.
Von
Neumann Morgenstern (1947).
.
.
.
(utility function),
.
, .
,
, .
(utility function). (, 1995)
,
, (
)
4.
1.4.
,
.
. (, Saurais,
1997)
,
.
,
,
(, , ). ( ,
2000)
,
.
11
1.
,
.
.
,
. (Morgan and Piercy, 1994)
,
,
. (, Saurais, 1997)
,
, 1960-1980,
.
Cardoso, Howard and Sheth Oliver. (
, 2000)
,
.
,
(brand loyalty)
.
.
. (, Saurais, 1997)
,
.
,
(multiple linear regression analysis)
(categorical data analysis),
logit analysis loglinear models
, .
, conjoint
analysis, ,
. (,
Saurais, 1997)
, Saurais (1997)
:
12
1.
1.
,
a priori
, . ,
, , ,
.
2.
.
( )
( ,
).
3.
( , )
.
4. ,
(..
, ).
(2000). MUSA
(Preference Aggregation
Disaggregation Models) .
MUSA
,
. ,
.
6.
13
1.
14
2. -
2. -
2.1.
1972,
...
,
.
/
. ,
. (, 1986)
, ,
, g (
, , )
, a, b A:
a b g(a)>g(b).
.
.
(Roy and
Vincke, 1981).
(multicriteria analysis)
,
. (Siskos and Spyridakos, 1999).
(ill-structured problems),
,
(, 1986,1998).
(Siskos
and Spyridakos, 1999, , 1986):
1. ( )
(multiobjective optimization approach)
,
.
,
15
2. -
- ,
,
.
.
.
-.
. (, 1986)
2. (outranking relation approach),
.
,
.
ELECTRE
Roy (1990).
3. (value system
approach, multiattribute utility theory),
,
.
.
4 6
2.3
.
4. - (aggregation-disaggregation approach)
.
4
6. Jacquet-Lagrze and Siskos (2001) 2.4
.
2.2.
(Roy, 1985, 1986, Jacquet-Lagrze and Siskos 2001).
: ,
.
( ).
.
Roy (1985):
16
2. -
1. :
2. :
3. :
,
4. :
/
.
:
.
,
.
,
.
, ,
.
(, , ), ,
.
,
: g: AR/ag(a), g(a) a A
g.
, a, b A :
g(a)>g(b) a b
g(a) = g(b) a b
: , ,
.
.
(g1, g2, gn).
:
1.
(monotonicity): (a,b)
gi(a)=gi(b) i j gj(a) > gj(b) a b.
2.
(exhaustiveness):
gi(a)=gi(b) i =1, 2, ,n, a b,
n
.
17
2. -
3.
(non redundancy): gi
.
A
n- Rn 2.1:
gi
g(a)
g1
x
x
g2
g2(a)
g1(a)
2.1: (, 1981)
(true-criterion)
- (semi-criterion)
(pseudo-criterion)
2. (ordinal).
A, ( ).
3. .
.
4. (fuzzy).
.
: ,
.
.
18
2. -
V: . ,
, .
,
/ .
2.3.
:
u, A, ,
, .
g1, g2,,gn. .
(Roy and Vincke, 1981).
( ):
u(g)=u(g1, g2, ..., gn) (2.1)
P I
a b.
g(a)=[g1(a), g2(a), ..., gn(a)]
a,
u:
u[g(a)]>u[g(b)]a P b (2.2.)
u[g(a)]=u[g(b)]a I b (2.2.)
R=PI (Jacquet-Lagrze and Siskos,
1984).
u(.), ,
:
1.
2.
( , 2000)
, ,
,
. F={g1, g2,,gn} o
Keeney and Raiffa (1976)
.
1 ( preferential independence):
{g1, g2}
19
2. -
{g3, g4, ,gn} n 3,
g1 g2 .
2 ( mutual preferential independence):
{gi, gj}
F\{gi, gj} i, j,
.
(1998) :
(gi, gj), i=1, 2, ,n ()
.
:
n
u[g(a)]= u i (g i (a ))
(2.3),
i =1
a A, u(a) a gi(a)
gi.
:
n
u[g(a)]= p i g i (a ) (2.4)
i =1
ui(gi(a)) gi
pi.
, .
(Jacquet-Lagrze and Siskos, 1982):
n
u[g(a)]= pi w i (g i (a )) , wi(gi(a))=
i =1
1
u i (g i (a )) i. (2.5)
pi
g*i g i* , i.
:
n
p i =1
i =1
w i ( g i* ) = 0 i
*
w i ( g i ) =1 i
(2.6)
20
2. -
1
0
g i*
g*i
2.2:
(Jacquet-Lagrze and Siskos, 1982)
- ,
, ui wi -
gi. (2.3),
:
n
*
u i ( g i )=1
i =1
u ( g )= 0 i
i i*
(2.7)
pi ( 2.4).
. ,
(trade-offs) . (, 1998)
,
.
.
.
2.4.
,
. ,
: ,
; ,
21
2. -
;
-
,
.
(Jacquet-Lagrze and Siskos, 2001).
,
a priori , .
,
.
2.3:
( , 2000)
,
,
2.4 (Jacquet-Lagrze and Siskos, 2001).
. 2.4: -
(Jacquet-Lagrze and Siskos, 2001)
22
2. -
R.
:
1. (AR past actions)
2. ,
(R A)
3. ,
(R fictitious actions)
/ R,
. :
AR
,
(Jacquet-Lagrze and Siskos, 2001)
-
,
-. ,
, ,
. (, 1981)
(
), (
). (extrapolation)
AR
. ( , 2000)
2.5.
,
.
23
2. -
,
. ,
, ,
.
( ), (
).
. ,
,
. (, 1995)
4 UTA
-
.
.
MUSA (Multicriteria
Satisfaction Analysis) ,
- .
-
.
, , .
, MUSA
.
6.
UTA
MUSA
.
(post optimality analysis)
.
,
5 7
UTA MUSA .
24
3.
3.
3.1.
.
, ,
, ,
.
( )
, , ,
(), .
.
( )
. (, 1998)
,
,
,
.
.
- ,
Simplex, :
1. l
m , m
, :
(l + m) - m = l
. ,
,
.
25
3.
2.
, ,
.
3.
Simplex (j)
.
4. ,
.
cj, bi aij
. ,
, ,
. ,
,
.
(cj), (bi)
(aij) .
:
( ,
, ...)
, ...)
( ,
( ,
, ...).
,
, ,
.(, 1992, , 1991)
, .
.
( )
,
z z*
() .
, -
.
Simplex (Van de Panne, 1975)
26
3.
Manas - Nedoma (1968).
(J. Siskos, 1982)
.
3.2.
,
,
.
3.2.1.
Simplex
Simplex
.
. (Siskos, 1984).
:
[max ]z = c t x
..
..3.1
Ax b
x 0
A, x, b c mn, n1, m1 n1 .
(multiple optimal solutions)
, ,
Simplex .
,
z
( 3.1).
j , z=z*.
... Simplex,
,
.
27
3.
Ax b
ct x = z*
x0
() l=2
() l=3
3.1: 2 3
(, 1998)
() 3.1:
3.1
Ax b
t
*
c x = z
x 0
z=z* (z*
) .
3.1
. , ( )
3.1 (
).
. (Siskos, 1984, , 1991).
3.2.2.
. ,
. ,
. ,
(Van de Panne, 1975).
28
3.
,
,
,
,
.
, , .
.
.
.
.
z* ( ) k.
(near optimal
solutions). k,
,
.(Siskos, 1984, Van de Panne, 1975, , 1992)
-
()3.2
3.2
Ax b
t
*
c x z k
x 0
k (
)
3.2 3.1 z=z*
z z*-k.
.( 2 )
z=z*
z=z*-k
3.2: 2
(, 1998)
29
3.
k=0 z=z*
.
.
z=z*
z=z*
z=z*-
z=z*-k
()
()
3.3:
(, 1998)
,
, .
.
, ,
(, 1992).
3.2..
, .
,
3.2.,
. Klee
, r ,
m l l>m:
2l 12 (m + l)
m + l m
r=
1
2 (m + l 1)
2
l-m
l-m
(3.1)
30
3.
. r
3.3. Simplex
Simplex (Simplex Inverse) Van
de Panne Simplex
(Van de Panne, 1975).
, Simplex xj
xBr, Simplex xBr
xj.
z z
Simplex (Siskos, 1984).
Simplex
()
.
3.2
3.2
Ax b
t
*
c x z k
x 0
k .
k
,
(Van de Panne, 1975).
Simplex .
Simplex
.
Simplex
.
k
z.
31
3.
Simplex
Simplex ,
, Simplex
. ,
Simplex
, Simplex
,
(Van de Panne, 1975).
Simplex
. ,
,
. ,
k.
Simplex ( )
3.2.
Simplex
( ).
(Siskos, 1984).
3.4. Manas-Nedoma
3.2
(graph connected) (V,U) V
U ,
Simplex. ,
Simplex .
, , ,
, Simplex .
3.2 ( 12
) 3.4
(V,U).
:
V ( )
m (
Simplex) u=(i1, i2, ..., im) 1ijm, j=1,2,...,m.
u1=(i1, i2, ..., im) u2=(k1, k2, ..., km)
dm d u2
32
3.
u1. u1 u2
d=1.
(V,U)
.
,
Simplex, (Manas
and Nedoma, 1968).
0
10
12
11
3.4: (V,U)
(J.Siskos, 1984)
Manas Nedoma 1968
(V,U)
:
1) ( )
,
2) Simplex.
33
3.
,
:
- (uo),
,
.
(R1, R2, ..., Rs)
(
).
(W1, W2, ..., Ws)
Rs
Simplex.
,
Ws Ws=,
.
Simplex
Manas-Nedoma r , m
n (l=n+m
m , n
), r
mr, . (Siskos,
1984)
Manas-Nedoma
Simplex rm Rs Ws. (Manas
and Nedoma, 1968)
.
(Mattheis and
Rubin, 1980).
simplex s
Simplex, r s rm r
m (Siskos, 1984).
3.5.
,
. (3.1)
34
3.
.
.
.
(..) :
..3.2
[
]
max
p jx j
j =1
..
Ax b
ct x z * k
x 0
pj, j=1,2,...,n
( k=0)
. pi=1 pj=0 ji
xi. (,
1992)
Simplex (, 1998).
.
:
c t x z * k
(3.2)
, k
. k
z* .
5 7
(3.2)
, / .
.
35
3.
36
3.
4. M UTA
4.1.
UTA1 Jacquet-Lagrze Sisko (1982)
R (
2.4).
,
AR,
.
(multiattribute utility theory, MAUT)
.
, , ,
, (Jacquet-Lagrze and Siskos,
1982).
,
- (aggregation-disaggregation approach)
.
UTA
,
. , ,
,
,
, ,
(Despotis et all, 1990).
UTA
(ordinal regression) .
,
( )
. ,
,
,
1
Utilit Additive
37
3.
,
.
UTA
2.3 2.7 2.3. ,
, ,
2.5 2.6 :
n
u (g ) = u i (g i )
(4.1)
i =1
:
u i (g i* ) = 0 i = 1,2,..., n
n
u (g ) = 1
i =1
*
i
(4.2)
(4.3)
,
,
(Jacquet-Lagrze and Siskos,
2001).
U
: (i)
, (ii)
, (iii)
, (iv)
(Despotis et al., 1990).
,
UTA
. , UTASTAR (Siskos and
Yiannnacopoulos, 1985), UTA II (Siskos et al., 1999), UTA2 (JacquetLagrze and Siskos, 1982), UTAKMEN (Jacquet-Lagrze and Siskos, 1982),
UTA (Jacquet-Lagrze and Siskos, 2001) UTADIS
(Zopounidis and Doumpos, 2001).
UTA
,
MARKEX
UTA.
38
3.
4.2. UTA
UTA (Jacquet-Lagrze and Siskos, 2001)
,
,
.
/ n
. Gi=[g i* , g*i ], i=1,2,...,n
i ,
G= n G .(Jacquet-Lagrze
i =1 i
and Siskos, 1982)
Gi
g ik ,
.
g i* , g*i i
[g i* ,g*i ] (i-1) [ g ij , g ik +1 ]. i
ui. g ik :
g ik = g i* +
j 1 *
(g i g i* ) (4.4)
ai 1
ui( g ik ).
aj . , gi(aj) [ g ij ,
g ij+1 ], :
u i [g i (a j )] = u i (g ) +
k
i
g i (a j ) g ik
g
k +1
i
k
i
[u i (g ik +1 ) u i (g ik )]
(4.5)
Gi , , i
. Gi=[5,6,7,8,9,10], i=6
ui(5), ui(6), ..., ui(10).
R=(P,I) , P I ,
, R={a1,a2,,am}
G. R
a1
am .
R R.
39
3.
,
(aj, aj+1) AR
:
] [
] [
(4.6)
(4.7)
UTA Jacquet-Lagrze and Siskos (2001)
:
1: u[g(aj)] aj
ui(gi) (4.5).
, 2.3
ui(gi) n
:
u i (g ik +1 ) u i (g ik ) s i , k = 1,2,..., a i 1,
i = 1,2,..., n
(4.8)
si0 i.
(
si=0). , gi
,
: u i (g ik +1 ) = u i (g ik )
g ik +1 f g ik . ,
si .
,
(2.7):
n
*
u i ( g i ) = 1
i =1
u ( g ) = 0 i
i i*
(4.9)
u[g(aj)]= u i [g i (a j )] + (aj)
aAR. (4.10)
i =1
(aj) o ( 4.1) :
40
3.
n
u[g(aj)]= u i [g i (a j )]
(4.11)
i =1
T (aj)
u[g(aj)] a
.
1
2
3
(aj)
4.1
, a1,
, am
:
(aj, aj+1)=u[g(aj)]-u[g(aj+1)]
(4.12)
(4.12)
m-1, 1.
(JacquetLagrze and Siskos, 1982)
(4.12) (4.10) (4.11):
(aj, aj+1)= u[g(aj)]+(aj)- u[g(aj+1)]-(aj+1)
(4.13)
3:
(aj):
minimize z = (a j )
m
(4.14)
j=1
41
3.
:
(aj, aj+1) aj aj+1
(aj, aj+1) =0 aj aj+1, j=1,2,,m-1
(4.15)
u i (g ik +1 ) u i (g ik ) si , k = 1,2,..., i 1,
(4.16)
u (g
i =1
*
i
i = 1,2,..., n
) = 1 , u i (g i* ) = 0 i =1,2,,n
(4.17)
u i (g ik ) 0, i=1,2,,n k = 1,2,..., i 1,
(aj) 0, j=1,2,,m
AR sj,
.
(4.15) (weak order)
,
(4.16) (4.17)
.
n
(
i =1
1)
(
i =1
1) (4.16).
1+n (4.17)
.
4: UTA
, ,
,
. z*
3
/ . (. 3)
(4.15)-(4.17)
:
z z*+
(4.18)
z* ,
, z*.
42
3.
5
.
.
.
UTA
.
4.3. UTASTAR
To 1985 Siskos Yannacopoulos UTA,
.
.
UTASTAR
(aj)
UTA. UTA (aj)
u[g(aj)] aj
(x. 4.1).
4.1..
.
1
2
3
-(aj)
+(aj)
0
1
. 4.2:
(Jacquet-Lagrze and Siskos, 2001)
43
3.
UTASTAR -(aj)
u[g(aj)] aj
,
+(aj)
u[g(aj)] aj
(x. 4.2).
:
1: (4.8) :
w ik = u i (g ik +1 ) u i (g ik ) 0, k = 1,2,..., i 1,
i = 1,2,..., n (4.19)
si .
, (4.9) :
n
u (g
i
i =1
*
i
n i 1
) = 1 w ik = 1
(4.20)
i =1 k =1
u[g(aj)] aj
wik. ui(gi)
:
( )
t 1
u i g it = w ik t=2,3,,i
(4.21)
k =1
( )
t=1 : u i g it = 0 .
aj i
gi(aj)[ g ij , g ij+1 ]
:
u i [g i (a j )] = u i (g ) +
t
i
t 1
u i [g i (a j )] = w ik +
k =1
g i (a j ) g it
g
t +1
i
t
i
t 1
g i (a j ) g it t
w
w ik
ik
t +1
t
g i g i k =1
k =1
t 1
g i (a j ) g it
k =1
g it +1 g it
u i [g i (a j )] = w ik +
[u i (g it +1 ) u i (g it )]
(4.21)
[w it ]
2:
(4.10):
n
44
3.
(4.13) :
(aj, aj+1)= u[g(aj)]+ -(aj)- +(aj) - u[g(aj+1)]- -(aj+1)+ +(aj+1)
(4.23)
3:
.
:
minimize z = (a j ) + + (a j )
m
(4.24)
j=1
:
(aj, aj+1) aj aj+1
(aj, aj+1) =0 aj aj+1, j=1,2,,m-1
n i 1
w
i =1 k =1
ik
= 1, k = 1,2,..., i 1,
(4.25)
i = 1,2,..., n
(4.26)
w ik 0, i=1,2,,n k = 1,2,..., i 1,
-(aj) 0, +(aj) 0 j=1,2,,m
n
(
i =1
1) w ik
(
i =1
1) wiksi i=1,2,,n
k = 1,2,..., i 1 .
4.4. UTA II
U UTA II (Siskos et al., 1999, Spyridakos,
2001)
:
45
3.
n
u (g ) = p i u i (g i ),
i =1
u (g i* ) = 0, u (g *i ) = 1,
n
p
i =1
(4.27)
= 1,
p i 0,
i =1,2,,n ,
ui(gi) pi
ith , . (4.1)
ui(gi)
pi.
ui(gi) MIDAS (Siskos et
al., 1999, Spyridakos, 2001).
:
1:
UTA II
.
2: (4.22) (4.23) :
n
(4.29)
3:
.
, UTASTAR,
:
minimize z = (a j ) + + (a j )
m
(4.30)
j=1
:
(aj, aj+1) aj aj+1
(aj, aj+1) =0 aj aj+1, j=1,2,,m-1
(4.31)
46
3.
n
p
i =1
= 1, i=1,2,,n
(4.32)
4.5. UTA 2
U, UTA 2 Beuthe Scannella
(2001), Jacquet-Lagrze and Siskos (1982)
4.2
(4.13)
(aj, aj+1)= u[g(aj)]+(aj)- u[g(aj+1)]-(aj+1)
.
(4.13)
.
zab,
a,b R
.
1 UTA.
:
2: (4.13) :
(4.33)
(4.34)
3:
.
, :
minimize z =
( aPb )
ab
z ab + ab z ab
(4.35)
( aIb)
47
3.
(a, b) a b
(a, b) =0 a b, (a,b) AR
( )
(4.36)
( )
u i g ik +1 u i g ik s i , k = 1,2,..., i 1,
n
u (g
i =1
*
i
i = 1,2,..., n
) = 1 , u i (g i* ) = 0 i =1,2,,n
(4.37)
(4.38)
( )
u i g ik 0, i=1,2,,n k = 1,2,..., i 1,
zab 0, (a,b) AR
n
( i 1)
i =1
( )
k
i
1))/2] (4.36)
(
i =1
1) (4.38).
1+n (4.37)
.
4.6. UTAKMEN
U Jacquet-Lagrze and Siskos (1982),
UTA Beuthe Scannella (2001),
,
u[g].
() Kendal
:
(R, R ) = 1
2a
[-1,1]
m
2
(4.39)
a
(, 1986).
1 UTA.
:
2: (4.13) :
(4.40)
48
3.
AR.
3:
.
(ab) 0/1 1
0 .
, :
minimize z = ab
(4.41)
:
(a, b)+* a b
(a, b) +*0
a b
(a, b) +*0
u i (g ik +1 ) u i (g ik ) s i , k = 1,2,..., i 1,
n
u (g
i =1
*
i
(4.42)
i = 1,2,..., n
) = 1 , u i (g i* ) = 0 i =1,2,,n
(4.43)
(4.44)
u i (g ik ) 0, i=1,2,,n k = 1,2,..., i 1,
= 0 1, (a,b) AR M
(a, b)
0 ,
ab=0 1.
.
n
( i 1)
u i (g
k
i
i =1
(4.42)
(
i =1
1) (4.43).
1+n (4.44)
.
4.7. UTA
.
.
49
3.
UTA
(Siskos,1983), Jacquet-Lagrze and Siskos (2001).
:
( ) = (g )u (g
ai
i =1 k =1
a
i
k
i
k
i
(4.45)
(4.9)
:
ia : a
i,
ia (g ik ): a i
g ik ,
u i (g ik ) : g ik ,
a :
a ,
u ( a ) : a.
, (4.45) (4.6)
(4.7):
u ( a ) > u ( b ) a b (),
(4.46)
u ( a ) = u ( b ) a b ().
(4.47)
:
1:
a
u j
k +1
k
w ik = u i g i u i g i 0 (4.48)
( )
( )
( )
2: :
( )+ (a )-
(aj, aj+1)= u
aj
( )- (a
(aj) - u
a +1 j
j+1)+
(aj+1)
(4.49)
50
3.
3:
.
:
minimize z = (a j ) + + (a j )
m
(4.50)
j=1
:
(aj, aj+1) aj aj+1
(aj, aj+1) =0 aj aj+1, j=1,2,,m-1
n a i 1
w
i =1 k =1
ik
= 1, k = 1,2,..., i 1,
(4.51)
i = 1,2,..., n
(4.52)
w ik 0, i=1,2,,n k = 1,2,..., i 1,
-(aj) 0, +(aj) 0 j=1,2,,m
(
i =1
1) w ik
(
i =1
1) wiksi i=1,2,,n
k = 1,2,..., i 1 .
4.8. UTADIS
UTA
, .
UTADIS (Zopounidis and Doumpos, 2001)
,
.
, UTADIS m
AR q
C1,C2,,Cq ( Ch Ch+1, h=1,2,..,q-1).
UTADIS
,
, , ,
.
51
3.
,
, ,
.
1: u[g(a)] a
uh
wik UTASTAR.
(4.19) (4.20) :
n i 1
w
i =1 k =1
ik
= 1 (4.53)
uh-1 uh
. ,
uh Ch uh-1
, a Ch
u[g(a)] a,
uh-1 uh.
:
Uh-1 uh s, h=2,3,,q-1
(4.54),
s
.
2: (a)
+(a). UTA
.
(4.23) :
u[g(a)] - +(a) uh-1-
(4.55),
.
a Ch
a uh-1,
Ch(. 4.3).
u[g(a)] + -(a) uh
(4.56)
a
Ch a
uh, Ch(. 4.3).
52
3.
1
2
3
-(a)
+(a)
Ch
uh-
uh
. 4.3:
3:
.
:
minimize z =
q 1
(a ) + (a ) + + (a ) +
aC1
k = 2 aC h
(a ) (4.57)
aC q
:
u[g(a )] u 1 + (a ) 0 a C1 ,
u[g(a )] u h 1 + (a )
a C h , h = 2,3,..., q - 1
u[g(a )] u h + (a ) 0
u[g(a )] u h 1 + (a ) a C q ,
n i 1
w
i =1 k =1
ik
= 1, k = 1,2,..., i 1,
uh-1 uh s, h=2,3,,q-1
i = 1,2,..., n
(4.58)
(4.59)
(4.60),
w ik 0, i=1,2,,n k = 1,2,..., i 1,
-(a) 0, +(a) 0 a AR
(
i =1
1) w ik
3.
(4.59) q-2 (4.60).
.
UTADIS,
, UTADIS I, UTADIS II UTADIS III Zopounidis
and Doumpos (2001).
4.9. UTA
UTA
. 1
UTA
.
.
,
,
(,1995).
.
() ()
,
. ,
,
,
.
:
3
4
2
2
1
123
113
99
125
102
12
11
11
9
13
. i
[g i* , g*i ]
(ai-1) [ g ij , g ik +1 ]. ai
ui. ui UTA
. , a priori
54
3.
,
.
, R.
.
, ui i.
,
,
.
(Siskos et al., 2001, , 1995)
, ,
,
,
. ,
(, 1995)
(1995)
MARKEX,
UTASTAR
, :
55
3.
MARKEX UTASTAR
(Baourakis, 1994) (Siskos et al., 2001)
.
, UTASTAR
,
,
, ,
.
56
5. UTA
5. H UTA
5.1.
UTA,
,
,
.
, ,
.
.
,
,
,
.
,
(ill-structured),
(, 1998)
UTA
.
. 3 3.1,
.
UTA
,
,
,
.
UTA
n
u * (g ) = u i [g i (a )]
i =1
57
5. UTA
R .
.
, z*
(a) (4.14) ,
ui(gi)
R (Jaquet-Lagrze and Siskos, 1982).
z*
z, z*,
Speerman Kendal (
Kendal).
Speerman,
(R R).
Speerman, m
:
Ps = 1
6 i2
m3 m
(5.1)
i i R
R.
Kendal :
(R, R ) = 1
2a
[-1,1]
m
2
(5.2)
a R
R (, 1986).
z*=0 R
R, (R, R)=1.
z*>0 ( 3.2.2)
(Rj, R)> (R0, R), Rj
j , R0
.
Kendal
UTAKMEN ( 4.6).
,
.
58
5. UTA
, , .
UTA
u (g) , z >z *,
R, R (
Speerman Kendal)
n
u * (g ) = u i [g i (a )] .
i =1
,
,
, .
.
5.2.
UTA
Jacquet-Lagrze and Siskos (2001)
. 4 .
UTA
, 4
,
. z*
3
/ . (. 3)
:
z z*+
(5.3)
z*
z*, , z*.
z
. UTASTAR (5.3) :
z = (a j ) + + (a j ) z*+ (z*)
m
(5.4)
j=1
z*.
( 5.1)
:
59
5. UTA
[ (a ) + (a )]
m
j =1
z*+ (z*)
w
i =1 k =1
ik
= 1, k = 1,2,..., a i 1,
i = 1,2,..., n
(5.5)
(5.6)
w ik 0, i=1,2,,n k = 1,2,..., a i 1,
-(aj) 0, +(aj) 0 j=1,2,,m
(5.7)
z*=0
=0.
,
n
u * (g) = u i [g i (a )] .
i =1
,
.
UTA .
.
.
5.3.
UTA
Jaquet-Lagrze and Siskos (1982), MAXMIN
.
i ui( g*i )
:
60
5. UTA
[min] ui(g*i ) [max] ui(g*i ),
i=1,2,,n
2*n, n ,
:
a i 1
n
[min] p i w ik
5.1
i =1
k =1
5.1
a i 1
n
[max] p i w ik
5.2
i =1
k =1
5.1
a i 1
w
k =1
ik
= u i (g *i )
g*i j.
u i [g i (a )] ,
n
u * (g ) = u i [g i (a )] ,
i =1
2*n
.
n
5.1
. ,
ui( g*i ) n
. (Siskos and
Yannacopoulos, 1985, Jaquet_Lagrze and Siskos, 2001)
MARKEX (, 1995).
Despotis, Yannacopoulos and
Zopounidis (1990), z*>0,
(a)
.
MIME Beuthe and Scannela, (1996).
(R, R)
(Despotis et al, 1990).
d
. (a)
(a) :
61
5. UTA
[min] d
5.3 5.1
d - + (a ) 0
j
d (a ) 0, j = 1,2,..., m, d 0
j
UTA
, si, i
. .
, R, .
, aj aj+1 :
u[g(aj)]- u[g(aj+1)]
(5.8)
si
. , g ik
g ik +1 i :
( )
( )
u i g ik +1 u i g ik s i , k = 1,2,..., a i 1,
i = 1,2,..., n
(5.9)
si
.
, MP1 Beuthe and Scannela
(1996), ,
.
:
[max]
5.4 5.1
0
5. UTA
UTA
:
z* = * (a j ) + + * (a j ) = y j * + s x k * + r* = 0 (5.10)
m
j=1
yi
(5.5), xi (5.9) r
n
u (g ) = 1 .
i =1
*
i
(z*=0) s z*. ,
z*>0,
s z*.
:
[max] ( + s)
5.5 5.1
0, s 0
,
,
:
MAXMIN
2*n
UTAMIME
1+m
UTASTARMIME
1+2*m
UTA2MIME
1+ |P|+2*|I|
MP1
MP2
MIME
UTA.
MAXMIN, MP1 MP2
.
Beuthe and Scannella (2001)
UTA
63
5. UTA
.
, z*=0 UTAMAXMIN
Jaquet-Lagrze and Siskos (1984)
. UTAMP2.
z*=0, UTASTARMAXMIN .
, , s
.
, s
z*>0.
, z*=0, s
. MP1 MP2
.
Y 5.1
.
,
MIME,
. ( , 1990)
3
, ,
,
. R
R.
.
64
6. MUSA
6. MUSA
6.1.
1
,
.
.
, , ,
.
,
(Grigoroudis and Siskos, 2001).
(2000)
.
.
, Saurais
(1997)
1.4.
MUSA (Multicriteria Satisfaction Analysis)
:
1. ,
.
2.
.
3. ,
.
MUSA -
.
,
-
(2 ).
65
6. MUSA
(2000) :
(rational) .
,
.
(
2.2).
(additive
value function)( 2.3)
MUSA
. Mihelis et al. (2001)
,
, :
1. :
,
( ).
2. :
,
,
( ,
, ) .
3. :
. :
i.
:
0-100% .
.
ii.
:
(0-100)
.
iii.
: (%)
,
66
6. MUSA
.
.
iv.
/:
(0-100%)
/,
.
v.
/:
.
MUSA .
4. : ,
.
.
6.2.
(2000),
MUSA
-. ,
, -
(. 6.1).
n-
6.1:
(, Saurais, 1997)
. 6.1:
67
6. MUSA
( , 2000, Mihelis et al.,
2001, , Saurais, 1997)
.
, .
(.
6.2). MUSA
.
- .
.
6.1
.
6.1: MUSA
Y:
:
y m : m (m=1,2,,)
n:
X i : i (i=1,2,,n)
i : i
x ik : k i (k=1,2,,i)
Y * : Y ( )
y *m : y m
X *i : X ( )
x *ik : x ik
68
6. MUSA
6.2:
,
n :
X=(X1,X2,,Xi,Xn)
Xi gi.
( , 2000).
MUSA
Y * X *i , X i .
,
(Jaquet-Lagrze and Siskos, 1982, Siskos and
Yannacopoulos, 1985).
:
n
*
=
Y
bi X*i
i =1
n
b =1
i
i =1
(6.1)
bi i-th Y * X *i
[0,100], y *1 = x *i1 = 0 (6.1.)
y * = x *i = 100 (6.1.) i=1,2,,n.
, Y * X *i :
(6.2)
69
6. MUSA
6.3.
(2000), MUSA
(additive collective value function) Y *
X *i
,
Y * Y.
, (6.1)
:
n
~
Y* = bi X*i + +
(6.3)
i =1
~
Y* Y * , + -
, .
(6.3)
,
, . 6.3.
Y*
100
...
j+
y*m
...
j-
y*2
Y
0
y1
y2
...
ym
...
6.3: j
(Grigoroudis and Siskos, 2001)
70
6. MUSA
(6.3)
MUSA
(goal programming),
(ordinal regression analysis)
UTA (Jaquet-Lagrze and
Siskos, 1982, Siskos and Yannacopoulos, 1985, Despotis et al., 1990).
,
: (i)
(6.3) , (ii)
Y * X *i [0,100], (iii)
Y * X *i .
, .
,
Y * X *i (Siskos and Yannacopoulos, 1985)
(.6.4):
z m = y *m +1 y *m m = 1,2,..., - 1
(6.4)
Xi *
Y*
100
100
wi i 1
...
...
z-1
bi
xi*k
y*m
...
...
z2
y*2
z1
0
y1
y2
Y
...
ym
...
xi*2
0
wi1
bi
xi1
xi2
wi 2
bi
Xi
...
xik
xii
...
6.4: zm wik
(Grigoroudis and Siskos, 2001)
71
6. MUSA
, (6.3)
( Y * X *i , bi
).
(6.4)
:
*m m 1
m = 2,3,...,
y = z t
t =1
k 1
b x *k = w
k = 2,3,..., i i = 1,2,..., n
it
i i
t =1
(6.5)
M :
M
[min ]F = +j + j
j=1
n t ij 1
w
i =1 k =1
z
m =1
t j 1
ik
m =1
= 100
n i 1
w
i =1 k =1
z m +j + j = 0 j = 1,2,..., M
ik
(6.6)
= 100
z m 0, w ik 0 m, i, k
+j 0, j 0
j = 1,2,..., M
tj tij j-th
t
t
t
t
y j Y = y1 , y 2 ,..., y j ,..., y
x i ji X i = x1i , x i2 ,..., x i ji ,..., x i i
i=1,2,,n.
.. M+2 2*+(-1) + i =1 ( i 1) ,
n
. ,
(),
7 ( Grigoroudis and Siskos, 2001).
, :
72
6. MUSA
m 1
y*m = z m = 2,3,...,
t =1
i 1
b i = w it i = 1,2,..., n
t =1
k 1
w it
x *k = 100 t =1
i = 1,2,..., n k = 2,3,..., i
i 1
i
w it
t =1
(6.7)
y *1 , x *i1
(6.1.).
6.4. MUSA
MUSA (6.6)
,
(6.2).
:
y *m = y *m +1 x *ik = x *ik +1 (Jaquet-Lagrze and Siskos, 1982).
(
, 2000, Grigoroudis and Siskos, 2001):
(6.8)
p .
(6.8) zm wik
:
y*m +1 y*m
z m
z m 0
* k +1
x i x *ik i
w ik i
w ik i 0
(6.9)
zm 0 m = 1,2,... - 1
w ik 0 k = 1,2,..., i 1 i = 1,2,..., n
i Y * X *i
, i>0, z m = z m , w ik = w ik i
...
73
6. MUSA
Y*
100
...
z'-1
y*m
...
y*2
z'2
>0
z'i 0
z'1
y1
y2
Y
...
ym
...
6.5: Y*
(Grigoroudis and Siskos, 2001)
6.5
, :
Y* .
ym
ym+1 .
i
X *i .
,
X *i i(i-1).
, MUSA
:
74
6. MUSA
M
[min]F = +j + j
j =1
n t ij 1
t j 1
m j + j = (t j - 1) - i (t ji 1) j = 1,2,..., M
n
w z
i =1 k =1
z
m =1
ik
m =1
i =1
= 100 ( 1)
n i 1
(6.10)
w ik = 100 i (i 1)
i =1 k =1
i =1
zm 0, w ik 0 m, i, k
+j 0, j 0
j = 1,2,..., M
tj tij j-th
t
t
t
t
y j Y = y1 , y 2 ,..., y j ,..., y
x i ji X i = x1i , x i2 ,..., x i ji ,..., x i i
i=1,2,,n.
i
n
(-1)100 i =1 i ( i 1) 100 ,
.. (6.10).
=i i, :
100
100
min
, n
(6.11)
1 i =1 ( i 1)
MUSA,
(6.6) =i=0, i.
i
.
MUSA,
,
( , 2000, Grigoroudis and Siskos, 2001).
MUSA
. ,
,
, :
(.. ).
()
(.. , ,
)
75
6. MUSA
,
.
6.5.
MUSA, ,
[0,100],
.
.
6.6 3 ( )
(
, 2000, Grigoroudis and Siskos, 2001):
Y* or X i*
Y or X i
Y* orX i*
Y* or X i*
Y or X i
Y or X i
6.6:
(Grigoroudis and Siskos, 2001)
: ,
,
.
: ,
.
76
6. MUSA
- : ,
.
Y * X *i ,
(additive value/utility function)
- (marginal value/utility functions), .
, Y * ,
. MUSA
Y * X *i ( ),
.
n
b
i =1
= 1 .
, ,
.
,
, (tradeoffs) .
.
:
S = p m y* m
m =1
si = pik x *ik
k =1
S , pm ym
, si i pik
x ik (,
Saurais, 1997).
MUSA
( , 2000, Grigoroudis and Siskos, 2001).
,
(action diagrams)
,
.
,
.
77
6. MUSA
,
( , 2000, Grigoroudis and Siskos, 2001).
78
7. H MUSA
7. H MUSA
7.1.
3 5
, .
MUSA,
.
MUSA
.
.
, , ..
, ,
. ,
a posteriori
(Grigoroudis and Siskos, 2001).
(Siskos, 1984, , 1998)
3.5.
.
,
MUSA.
7.1 ( 7.1)
:
F F* +
(7.1)
F* (
) .
:
79
7. H MUSA
F F * +
n t ij 1
t j 1
n
w ik zm +j + j = (t j - 1) - i (t ji 1) j = 1,2,..., M
i =1 k =1
m =1
i =1
1
z = 100 ( 1)
m
7.1 m =1
n i 1
n
w ik = 100 i ( i 1)
i =1 k =1
i =1
z 0, w 0 m, i, k
ik
m
+
j 0, j 0 j = 1,2,..., M
7.1
F=F * +
F=F *
7.1:
(Grigoroudis and Siskos, 2001)
MUSA
. O
.
.
5
, ..
. ( , 2000,
Grigoroudis and Siskos, 2001).
80
7. H MUSA
7.2.
(2000) MUSA.
n (
) , bi
i.
:
i 1
[max]
F
w ik i = 1,2,..., n
=
k
=
1
7.1
7.1
n o , i
i w (6.4).
MUSA
7.1. ,
,
.
, n
bi i.
MUSA I 2*n
:
i 1
[max]
F
w ik i = 1,2,..., n
=
k
=
1
7.2
7.1
i 1
[min]
F
w ik i = 1,2,..., n
=
k
=
1
7.1
MUSA II.
,
i
6.4.
,
,
.
n+1 :
81
7. H MUSA
7.3
[max] F =
7.1
[max] F = i i = 1,2,..., n
7.1
MUSA III
Y* X*
MUSA wik zm.
n
( 1) + ( i + 1) :
i =1
[max] F = z m m = 1,2,..., - 1
7.4
7.1
[max] F = w ik i = 1,2,..., n
k = 1,2,..., i 1
7.1
UTA, MP1 MP2, Beuthe and Scannella (1996)
5.3.
MUSA , MUSA
II MUSA III
7.2, 7.3 7.4, .
MUSA IV
Despotis et al. (1990) ( MIME 5.3),
+j j F*>0. ,
. ,
:
[min] F = m e
7.5 m e - +j 0 j = 1,2,...., M
m e - j 0 j = 1,2,...., M
7.1
M .
.
82
7. H MUSA
7.1:
..
MUSA
[max]F = bi
M+3
2 * M + ( 1) + ( i + 1)
MUSA I
[max]F = bi
[min]F = bi
2*n
M+3
2 * M + ( 1) + ( i + 1)
MUSA II
[max]F =
[max]F = i
n+1
M+3
2 * M + + i
MUSA III
[max]F = z m
[max]F = w ik
( 1) + ( i + 1)
M+3
2 * M + ( 1) + ( i + 1)
MUSA IV
[min]F = m e
3*M+3
2 * M + + ( i + 1)
i =1
i =1
i =1
i =1
i =1
i =1
(Grigoroudis and Siskos, 2001, ,
2000):
1.
. ,
MUSA MUSA I .
2. MUSA III MUSA II
:
min {z m }
{w ik }
i min
k
(7.2)
3. MUSA IV
.
83
7. H MUSA
,
.
6 MUSA
(collective
model). (
)
. MUSA IV
,
. ,
.
7.3.
MUSA (Grigoroudis and
Siskos, 2001, , 2000):
( ),
(
, )
7.3.1.
( , ) ,
. ,
.
,
,
. , (Average Fitting Index)
MUSA :
AFI = 1
F*
100 M
(7.3)
F*
MUSA M .
1 F*=0,
. , 0
F*=100*, +j j
84
7. H MUSA
. +j j =0 j,
,
(Charnes and Cooper, 1977).
(i)
(ii) (Grigoroudis and
Siskos, 2001, , 2000).
7.3.2.
MUSA.
,
.
, ns
, ns .
.
( , 1990).
:
Si =
1 ns j
bi
ns 1 j=1
ns j
bi
2
j=1
ns
( )
i = 1,2,..., n
(7.4)
Si i, b ij i
j
, n ns
.
.
, (Average Stability Index)
85
7. H MUSA
bi
:
ASI = 1
1 n Si
n i =1 100
ns
(7.5)
Si (7.4)
100
ns
.
[0,1] :
1.
(, 1986):
ASI = 1 b ij = b i i, j
b i =
1 ns j
bi
ns j=1
(7.6)
bi
b ij .
2. :
100 i = j
i, j
ASI = 0 bij =
i j
0
(7.7)
, 7.4,
(7.6) (7.7) :
MUSA, MUSA I, MUSA II MUSA III. MUSA IV
7.2.
7.3.3.
ASI
, bi :
bi =
i 1
w
t =1
it
i = 1,2,..., n
(7.8)
,
wik,
(7.8).
wik.
wik :
86
7. H MUSA
Sik =
1 ns
w ikj
ns 1 j=1
ns j
w ik
j=1
ns
( )
i = 1,2,..., n k = 1,2,3,..., i
(7.9)
S
CSI(i) = 1 max ik
k
100
ns
(7.10)
Sik
100
i (7.9)
ns
.
(Criterion Stability
Index). Sik
, ,
,
-.
[0,1].
:
1. :
CSI(i) = 1 w ikj = w ik j, k
w ik =
(7.11)
1 ns j
w ik , wik
ns j=1
w ikj .
2. :
87
7. H MUSA
100 k = j
CSI(i) = 0 w ikj =
j, k
k j
0
(7.12)
, (7.11)
(7.12) : MUSA, MUSA I, MUSA II MUSA
III.
CSI(i)
i, CSI.
7.4.
7.2
MUSA, 7.3
.
,
.
.
C++,
Visual Studio 6 Microsoft. C++
.
,
. C++ ,
, .
,
, .
() C++ (pointers).
,
. C++
.
.
. ,
,
.
/
MUSA ,
Large-Scale Solver DLL (Dynamic Link Library) Frontline
Systems.
88
7. H MUSA
16,384 16,384
,
. C++ Large-Scale
Solver DLL Frontline Systems .
5
master5.cpp
transformation.h Frontmip.h. ( )
1 :
Microsoft EXCEL.
.
EXCEL (
,
, , ).
MUSA.
.
EXCEL
.
EXCEL
.
7.1: EXCEL
89
7. H MUSA
,
.
3 :
1 :
2 :
1 :
3 EXCEL
.
EXCEL
,
. EXCEL
txt .
,
.
2 :
transformation.h MUSA,
6.1.
3 :
MUSA (6.10).
DLL
.
, transformation.h
Frontmip.h DLL.
,
MUSA, txt
Microsoft
EXCEL.
3
.
90
7. H MUSA
4 :
,
,
EXCEL.
: MUSA, MUSA I, MUSA II, MUSA III
MUSA IV, 7.2.
. MUSA,
,
txt .
4
.
5 :
3 4
AFI, ASI, CSI(i) CSI.
,
3 4 .
/ ,
txt,
AFI
ASI CSI .
91
7. H MUSA
EXCEL
1 :
2 :
MUSA
3 :
..
..
txt
..
4 :
..
..
txt
5 :
AFI, ASI,
CSI(i) CSI
OX
txt
92
7. H MUSA
,
,
.
7.5.
MUSA
:
3 : ,
:
1 :
2 :
1 :
7.2
20 .
7.2:
93
7. H MUSA
: (=0, =10) (=2, =2) : MUSA, MUSA I,
MUSA II MUSA III. MUSA IV
7.2.
1 : =0, =10
(6.10)
AFI 7.3:
7.3:
w11
w12
25
w21
25
w22
25
w31
25
w32
z1
50
z2
50
F*
AFI
100
100
90
80
80
70
70
60
60
50
50
50
40
40
30
30
20
20
10
0
10
100
100
90
94
7. H MUSA
100
100
90
80
80
70
70
60
50
40
40
30
30
20
20
10
10
100
60
50
50
100
100
90
7.2:
.
MUSA
. ,
.
7.4: ( USA)
w11
w12
w21
w22
w31
w32
z1
z2
max b1
10.00
22.50
22.50
22.50
22.50
0.00
55.00
45.00
max b2
0.00
23.75
23.75
28.75
23.75
0.00
47.50
52.50
max b3
0.00
20.00
20.00
30.00
30.00
0.00
50.00
50.00
3.33
22.08
22.08
27.08
25.42
0.00
50.83
49.17
5.77
1.91
1.91
4.02
4.02
0.00
ASI, CSI(i) CSI.
7.5: ( USA)
b1
b2
b3
max b1
32.50
45.00
22.50
max b1
23.75
52.50
23.75
max b1
20.00
50.00
30.00
25.42
49.17
25.42
6.41
3.82
4.02
0.900
0.930
0.930
CSI(i)
ASI= 0.918
CSI=0.920
95
7. H MUSA
:
100
100
90
80
80
70
70
60
60
50.8333
50
50
40
40
30
30
20
20
10
10
100
100
90
13.1148
0
100
90
80
80
70
70
60
100
100
90
100
60
50
44.9153
40
50
40
30
30
20
20
100
10
10
7.3:
.
-
.
=2, =2 .
7.6.
MUSA
, i
( , 2000).
, ,
(AFI) (ASI, CSI) .
8 ,
( ,
96
7. H MUSA
, ). 4 (1., 1., 1., 1.)
4 (2.1, 2., 2., 2.)
. 8
7.6 ( , 2000):
7.6:
FI2
ASI
1.
100%
100%
1.
100%
100%
1.
100%
100%
1.
100%
100%
2.
85%
33%
2.
90%
50%
2.
85%
15%
2.
85%
37%
7.6.1.
i
AFI, ASI CSI. ( =i i)
[0, max], max
(6.11).
max:
max
1.
16.67
1.
12.50
1.
5.00
1.
3.57
2.
16.67
2.
12.50
2.
5.00
2.
3.57
AFI ASI
, = = i = 0.
97
7. H MUSA
AFI, ASI CSI
: MUSA.
2.
1.
1.
100%
100%
75%
75%
CSI
ASI
AFI
50%
CSI
ASI
AFI
50%
25%
25%
0%
0
10
15
0%
20
1.
10
15
1.
100%
100%
75%
75%
CSI
ASI
AFI
50%
CSI
ASI
AFI
50%
25%
25%
0%
0
0%
6
98
7. H MUSA
).
1.
:
MUSA
MUSA I
100%
100%
75%
75%
CSI
ASI
AFI
50%
CSI
ASI
AFI
50%
25%
25%
0%
0
0%
6
MUSA III
100%
75%
CSI
ASI
AFI
50%
25%
0%
0
99
7. H MUSA
2.
2.
100%
100%
75%
75%
CSI
ASI
AFI
50%
CSI
ASI
AFI
50%
25%
25%
0%
0
10
15
0%
20
2.
10
15
2.
100%
100%
75%
75%
CSI
ASI
AFI
50%
CSI
ASI
AFI
50%
25%
25%
0%
0
0%
6
100
7. H MUSA
MUSA
MUSA I
100%
100%
75%
75%
CSI
ASI
AFI
50%
CSI
ASI
AFI
50%
25%
25%
0%
0
0%
6
MUSA III
100%
75%
CSI
ASI
AFI
50%
25%
0%
0
7.6.2.
,
j(a) ,
MUSA.
.
, ,
F*
. ,
,
101
7. H MUSA
,
.
(2000)
ASI
.
1.
ASI CSI ,
=i,
[0. max] .
CSI
100%
80%
=0
60%
=6.25
40%
=12.5
20%
(% F*)
0%
0%
5%
10%
15%
20%
25%
ASI
100%
80%
=0
60%
=6.25
40%
=12.5
20%
(% F*)
0%
0%
5%
10%
15%
20%
25%
102
7. H MUSA
CSI
100%
80%
=0
60%
=6.25
40%
=12.5
20%
(% F*)
0%
0%
5%
10%
15%
20%
25%
ASI
100%
80%
=0
60%
=6.25
40%
=12.5
20%
(% F*)
0%
0%
5%
10%
15%
20%
25%
100%
80%
=0
60%
=6.25
40%
=12.5
20%
(% F*)
0%
0%
5%
10%
15%
20%
25%
ASI
100%
80%
=0
60%
=6.25
40%
=12.5
20%
(% F*)
0%
0%
5%
10%
15%
20%
25%
7. H MUSA
7.8, 7.9 7.10
ASI CSI,
.
, =max
, =max/2 MUSA
, =0
MUSA
.
MUSA II
:
ASI & CSI
100%
80%
60%
CSI
40%
ASI
20%
(% F*)
0%
0%
5%
10%
15%
20%
25%
7.11
ASI CSI
.
MUSA II
.
104
, MUSA.
, i .
.
i. MUSA II
.
,
,
.
8
, 7,
ASI CSI.
. ,
ASI CSI.
MUSA
.
M.
,
.
,
DLL
,
Visual Basic FORTRAN. ,
.
105
106
, ., , ., 2000.
, .
, ., , ., Saurais, O., 1997.
. 11
, .., 1995.
: ,
, .
, , , 1991.
, ., 1986. , 1: ,
.
, ., , ., 1990. , .
, ., 1986.
, .
, ., 1981. marketing: . ,
, , , 361-385
, ., 1986. .
, 84-92, , .
, ., 1992.
, .
, ., 1998. ,
, ., 1994. marketing,
, -
107
Baourakis, G., 1994. Agricultural product design methodology: The case of olive oil.
Ph.D. Thesis, Technical University of Crete, Chania.
Berry, M., 1997. Data Mining Techniques: Marketing and Customer Support
Beuthe, M., Scannella, G., 1996. Applications compares des mthodes danalyse
multicritre UTA. R.A.I.R.O., Operations Research 30, (3), 293-315
Beuthe, M., Scannella, G., 2001. Comparative analysis of UTA multicriteria methods.
European Journal of Operational Research, 130, (2), 246-262
Charnes, A., 1952. Optimality and Degeneracy in Linear Programming.
Econometrica, vol. 20, 160-170.
Charnes, A., and Cooper, W.W., 1961.Management Models and Industrial
Applications of Linear Programming, John Wiley and Sons, vol. 1, New York.
Despotis, D.K., Siskos, J., 1992. Agricultural management using the ADELAIS
multiobjective linear programming software: A case application. Theory and
Decision, 32, 113-131.
Despotis, D., Yannacopoulos, D., Zopounidis, C., 1990. A Review of theUTA
Multicriteria Method and Some Improvements. Foundation of computing and
Decision Science, 15, (2), 63-76
Grigoroudis, E., Siskos, Y., 2001. Preference disaggregation for measuring and
analyzing customer satisfaction: The MUSA method (under publication)
Grigoroudis, E., Malandrakis, J., Politis, J., Siskos, Y., 1999. Customer satisfaction
measurement to the Greek shipping sector. Proceedings of the 5th Decision Sciences
Institutes International Conference on Integrating Technology & Human Decisions:
Global bridges into the 21st Century, Athens, Greece, 2, 1363-1365.
Hauser, J.R., Urban, G.L., 1978. Consumer preference axioms: Behavioral postulates
for describing and predicting stachastic choice. Management Science, 24,(13), p.
1331-1341.
Jacquet-Lagrze, E., Siskos, Y., 1982. Assessing a Set of Additive Utility Functions
for Multicriteria Decision-Making, the UTA Method. European Journal of
Operational Research, 10, no 2, 151-164
Jacquet-Lagrze, E., Siskos, Y., 2001. Preference disaggregation: 20 years of MCDA
experience. European Journal of Operational Research, 130, (2), 233-245
Keeney, R. , Raiffa, H., 1976. Decisions with multiple objectives: Preferences and
value trade-offs, Wiley, New York.
Klee, V., 1964. On the Number of Vertices of a Convex Polytope. Canadian Journal
108
of Mathematics, vol. 16, 701-720.
Kotler, P., 1994. Marketing Management: Analysis, planning, implementation and
control, 8th ed., Prentice-Hall, London
Matsatsinis, N.F., Siskos, Y., 1999. MARKEX: An intelligent decision support
system for product development decisions. European Journal of Operational
Research, 113, (2), 336-354.
Mihelis, G., Grigoroudis, E., Siskos, Y., Politis, Y., Malandrakis, Y., 2001. Customer
satisfaction measurement in the private bank sector. European Journal of Operational
Research, 113, (2), 347-360.
Manas, M., Nedoma, J., 1968. Finding all Vertices of a Convex Polyhedron.
Numerische Mathematik, vol. 14, 226-229
Morgan, N., Piercy, N., 1994. Towards an Understanding of Quality Strategy.
Marketing Theory and Applications, 5.
Roy, B., 1985. Mthodologie d aide la decision mutlicritre. Economica, Paris.
Roy, B., 1990. The outranking approach and the foundations of ELECTRE methods.
Readings in Multiple Criteria Decision Aid, Carlos Bana e Costa(ed.), SpringerVerlag, Berlin.
Roy, B,. Vincke, P., 1981. Multicriteria analysis: Survey and new directions.
European Journal of Operational Research, 8, 207-218
Siskos, Y., 1982. A way to deal with fuzzy preferences in multicriteria decision
problems. European Journal of Operation Research 10, 314-324.
Siskos, J., 1983. Analyse de systmes de dcision multicritre en univers alatoire.
Foundations of Control Engineering 8, 193-212.
Siskos, J., 1984. Le Traitement des Solutions Quasi Optimales en Programmation
Linaire Continue: Une Synthse. R.A.I.R.O., Recherche Oprationnelle vol. 18 (4),
381-401
Siskos, Y., Assimakopoulos, 1989. Multicriteria highway planning: A case study.
Math. Comput. Modelling, 12, 1401-1410.
Siskos, J., Despotis, D., 1989. A DSS Oriented Method for Multiobjective Linear
Programming Problems. Decision Support Systems, 5, 47-55
Siskos, Y., Spyridakos, A., 1999. Intelligent multicriteria decision support: Overview
and perspectives. European Journal of Operation Research, 113, p.236-246.
Siskos, Y., Yannacopoulos, D., 1985. UTASTAR: An Ordinal Regression Method for
Building Additive Value Functions. Investigacao Operacional, 5, no 1, 39-53
Siskos, Y., Spiridakos, A., Yannacopoulos, D., 1993. MINORA: A multicriteria
decision aiding system for discrete alternatives. Journal of Information Science and
Technology, in: Siskos, Y. and Zopounidis, C. (Eds), Special Issue on Multicriteria
109
Decision Support Systems, 2, (2), 136-149
Siskos, Y., Spiridakos, A., Yannacopoulos , D., 1999. Using artificial intelligence and
visual techniques into preference disaggregation analysis: The MIIDAS system.
European Journal of Operational Research 113, 236-246.
Siskos, Y., Matsatsinis, N.F., Baourakis, G., 2001. Multicriteria analysis in
agricultural marketing: The case of French olive oil market. European Journal of
Operational Research, 130, (2), 315-331.
Siskos, Y., Spiridakos, A., Yannacopoulos, D., 1999. Using artificial intelligence and
visual techniques into preference disagregation analysis: The MIIDAS system.
European Journal of Operational Research 113, 236-246.
Spyridakos, A., Siskos, Y., Yannakopoulos, D., Skouris, A., 2001. Mutlicriteria job
evaluation for large organization. European Journal of Operational Research, 130, (2),
375-387
T. H. Mattheiss and D. S. Rubin, A Survey and Comparison of Methods for Finding
all Vertices of Convex Polyhedral Sets, Mathematics of Operations Research, vol. 5,
1980, p. 167-185.
Van de Panne, C., 1975. Methods for Linear and Quadratic Programming, NorthHolland Publishing Company, Amsterdam.
Von Neumann, J., Morgenstern, O., 1947. Theory of games and economic behavior.
Princeton University Press, Princeton, N.J.
Zopounidis, C., Doumpos, M., 2001. A preference disaggregation decision support
system for financial classification problems. European Journal of Operational
Research, 130, (2), 402-413
110
. C++
:
C++
1-111
. C++
master5.cpp
//Fifth effort....at last ....
#include "frontmip.h"
#include <cstdio>
#include <iostream>
#include <iomanip>
#include <fstream>
#include <string.h>
#include <cmath>
using namespace std;
//*************From trasformations ***********
#include "transformation.h"
//********************************************
int no_var=0;
int no_con=0;
int no_sol=0;
long _CC lpcallback (HPROBLEM lpinfo, long wherefrom)
{
long iters; double obj;
getcallbackinfo (lpinfo, wherefrom, CBINFO_ITCOUNT, (void*)&iters);
getcallbackinfo (lpinfo, wherefrom, CBINFO_PRIMAL_OBJ, (void*)&obj);
cout<<endl<<"Iteration "<<iters<<": Obj =" << obj;
return PSTAT_CONTINUE;
}
//****Prototyping*************************************************
void RunLPSolver (long* pstat, double* pobjval, double* px,
double* ppiout, double* pslack, double* pdj,
double* pobj, double* pvarlow, double* pvarupp,
double* prhs, double* pconlow, double* pconupp,
double* pmatval, unsigned char* psense,
char* p_min_or_max, int no_con, int no_var);
void w_output(double* x, double gamma_criteria[n_max], double gamma, int
no_sol);
void w_output_MUSAII(double* x, int no_sol);
void w_output_MUSAIV(double* x, double gamma_criteria[n_max], double gamma,
int no_sol);
112
. C++
void mid_values(double w[n_max][a_i_max][max_of_sol], double
z[a_total_max][max_of_sol], int no_sol);
void init_var_first(double w[n_max][a_i_max][max_of_sol], double
z[a_total_max][max_of_sol], int no_sol);
void init_var(double w_mid[n_max][a_i_max], double z_mid[a_total_max]);
void AFI_(double F_star, double m_d, int m_i);
void ASI_(double b_weight[n_max][max_of_sol], int no_sol,
double m_d, int m_i,double k_d, int k_i );
void ASI_(double w[n_max][a_i_max][max_of_sol], int no_sol,
double m_d, int m_i,double k_d, int k_i );
//*****************************************************************
int main(void)
{
//************The main part for transformations - input from
EXCEL!!!**********
char key_input_1='Y';
char key_input_2='N';
//M=20;
//n=3;
cfin.open("C:\\Tsotsolas\\Master\\cplusplus\\input.txt");
cfin>>nothing;
//pelates
cfin>>M;
cfin>>nothing;
//hyperlink
cfin>>nothing;
cfin>>n;
//criteria
cfin>>nothing;
cfin>>times_gamma;
cfin>>nothing;
cfin>>step_gamma;
//times_gamma
//step_gamma
cfin>>nothing;// initial
cfin>>e;
cfin>>nothing;
cfin>>times_e;
cfin>>nothing;
cfin>>step_e;
cfin>>nothing;
cfin>>model_MUSA;
//times_e
//step_e
//MUSA's model
. C++
cfin>>nothing;
cfin>>a_total;
for (i=0;i<n;i++)
cfin>>a[i];
//tmimata
cfin>>nothing;
//gamma for total and criteria
cfin>>gamma;
for (i=0;i<n;i++)
cfin>>gamma_criteria[i];
times_gamma=(times_gamma<=1?1:times_gamma);
step_gamma=(step_gamma<=0.1?0.1:step_gamma);
times_e=(times_e<=1?1:times_e);
step_e=(step_e<=0.00001?0.00001:step_e);
cfin>>nothing;
//no pelati
for(j=0;j<M;j++)
{
cfin>>nothing; //no of customer
cfin>>T[j];
for(i=0;i<n;i++)
cfin>>t[j][i];
}
//***************Check for errors*********************************
while ((key_input_1=='Y') || (key_input_1=='y'))
{
key_input_1='N';
tji_table(M,n,t,T);
cout<<"Do you want to make any changes on the criteria values?
(Y/N) ";
cin>>key_input_2;
cout<<endl;
while ((key_input_2=='Y') || (key_input_2=='y'))
{
cout<<"Enter the number of the customer you want to change:
";
cin>>j;
cout<<endl
<<"Enter the number of the criterion you want to change: ";
cin>>i;
cout<<endl
<<"Enter the new value for the "<<j
<<" customer on the "<<i<<" criterion:";
cin>>t[j-1][i-1];
cout<<endl
<<"Would you like to make another change? (Y/N) ";
cin>>key_input_2;
114
. C++
key_input_1='Y';
}
}
//********************The number of variables***********************
for (i=0;i<n;i++)
//set no_of_w'
no_of_w+=a[i]-1;
no_of_z=a_total-1;
//set no_of_z'
no_total=no_of_w+no_of_z+(2*M); //the total of the variables
//for the
initial problem
LPs **********************
gamma_initial=gamma;
cfout.open("C:\\Tsotsolas\\Master\\cplusplus\\Excel\\w.txt");
cfout<<" "<<endl;
cfout<<":"<<model_MUSA_ch[model_MUSA]<<endl;
cfout.close();
cfout.open("C:\\Tsotsolas\\Master\\cplusplus\\Excel\\w_post.txt");
cfout<<" "<<endl;
cfout<<":"<<model_MUSA_ch[model_MUSA]<<endl;
cfout.close();
cfout.open("C:\\Tsotsolas\\Master\\cplusplus\\Excel\\x_y.txt");
cfout<<" X"<<endl;
cfout<<":"<<model_MUSA_ch[model_MUSA]<<endl;
cfout.close();
cfout.open("C:\\Tsotsolas\\Master\\cplusplus\\Excel\\gamma.txt");
cfout<<" MUSAII"<<endl;
cfout<<":"<<model_MUSA_ch[model_MUSA]<<endl;
cfout.close();
cfout.open("C:\\Tsotsolas\\Master\\cplusplus\\Excel\\mid_x_y.txt");
cfout<<" y x"<<endl;
cfout<<":"<<model_MUSA_ch[model_MUSA]<<endl;
cfout.close();
cfout.open("C:\\Tsotsolas\\Master\\cplusplus\\Excel\\AFI.txt");
cfout<<" AFI"<<endl;
cfout<<":"<<model_MUSA_ch[model_MUSA]<<endl;
cfout.close();
cfout.open("C:\\Tsotsolas\\Master\\cplusplus\\Excel\\ASI.txt");
cfout<<" ASI"<<endl;
cfout<<":"<<model_MUSA_ch[model_MUSA]<<endl;
cfout.close();
cfout.open("C:\\Tsotsolas\\Master\\cplusplus\\Excel\\ASI_cr.txt");
cfout<<" ASI_cr"<<endl;
cfout<<":"<<model_MUSA_ch[model_MUSA]<<endl;
115
. C++
cfout.close();
if((times_gamma>1)||(times_e>1))
{
cfout.open("C:\\Tsotsolas\\Master\\cplusplus\\Excel\\AFI.txt",ios_base::in|ios_
base::out|ios::app);
cfout<<""<<endl;
cfout.close();
cfout.open("C:\\Tsotsolas\\Master\\cplusplus\\Excel\\ASI.txt",ios_base::in|ios_
base::out|ios::app);
cfout<<" \\ ;";
cfout.close();
cfout.open("C:\\Tsotsolas\\Master\\cplusplus\\Excel\\ASI_cr.txt",ios_base::in|i
os_base::out|ios::app);
cfout<<" \\ ;";
cfout.close();
}
//*****Begining of loop for different gamma*************
for
(m_d=gamma_initial;m_d<gamma_initial+times_gamma*step_gamma;m_d=m_d+st
ep_gamma,m_i++)
{
test=0;
gamma=m_d;
for (i=0;i<n;i++)
gamma_criteria[i]=m_d;
//********************Initialize everything ****************************
/*
for (i=0;i<max_no_con;i++)
b[i]=0;
for (i=0;i<max_no_var;i++)
c[i]=0;
*/
//********************Call function for b ******
//*
b_part(gamma, gamma_criteria,t,T);
//*
//*
//*************************************************************
//**********The initial problem**************************
no_sol=0;
//0 is the initial solution
no_var=no_of_w+no_of_z+2*M;
no_con=M+2;
116
. C++
for (i=0;i<max_no_var;i++)
c[i]=0;
c_of_F();
obj=c;
rhs=b;
l=0;
for (i=0;i<max_no_con*max_no_var;i++)//initialize
matval[i]=0;
for (i=0;i<no_var;i++)
{
for (j=0;j<no_con;j++,l++)
{
matval[l]=A[j][i];
}
}
for (j=0;j<no_con;j++)
sense[j]='E';
/* we call RunLPSolver() on */
RunLPSolver (&stat, &objval, x, piout, slack, dj, //I call the function
obj, varlow, varupp, rhs, conlow, conupp, matval,
sense, min_or_max, no_con, no_var);
F_star=objval;
//set F*
if((times_gamma<=1)&&(times_e<=1))
{
cfout.open("C:\\Tsotsolas\\Master\\cplusplus\\Excel\\w.txt",ios_base::in|ios_ba
se::out|ios::app);
cfout<<"z*;"<<objval;
}
w_output(x, gamma_criteria, gamma, no_sol);
if((times_gamma<=1)&&(times_e<=1))
cfout.close();
init_var_first(w, z, no_sol);
117
. C++
//***********The AFI**************************************
AFI_(F_star, m_d, m_i);
//****************************************************************
e_initial=e;
k_i=0;
//*****Begining of loop for different *************
for (k_d=e_initial;k_d<e_initial+times_e*step_e;k_d=k_d+step_e,k_i++)
{
e=k_d;
//*************The MUSA's post optimality
models**********************************
if((times_gamma<=1)&&(times_e<=1))
{
cfout.open("C:\\Tsotsolas\\Master\\cplusplus\\Excel\\w_post.txt",ios_base::in|i
os_base::out|ios::app);
cfout<<";";
for (i=0;i<n;i++)
{
for(j=0;j<a[i]-1;j++)
cfout<<"w["<<i+1<<"]["<<j+1<<"];";
}
for (i=0;i<a_total-1;i++)
cfout<<"z["<<i+1<<"];";
for (i=0;i<n;i++)
cfout<<"b["<<i+1<<"];";
}
switch (model_MUSA)
{
case 1:
//********MUSA I ***********************************
for (i=0;i<max_no_var;i++)
//initialize c of ojective function
c[i]=0;
c_of_F();
//c of objective function
for (i=0;i<no_of_w+no_of_z+2*M;i++) //set F as constraint
A[M+2][i]=c[i];
b[M+2]=F_star+e;
//set b=F*+
no_var=no_of_w+no_of_z+2*M;
no_con=M+3;
no_sol=0;
//initilize , 0 is for the initial solution
for (i_n=0;i_n<n;i_n++)
{
118
. C++
for (j=0;j<max_no_var;j++)
//initialize c of objective F
c[j]=0;
pointer_for_c=0;
for (j=0;j<=i_n;j++)
pointer_for_c+=a[j]-1;
for (m=pointer_for_c-(a[i_n]-1);m<pointer_for_c;m++)
{
c[m]=1;
//[max]F'=b[i]
}
obj=NULL;
obj=c;
rhs=b;
l=0;
for (i=0;i<max_no_con*max_no_var;i++)//initialize
matval[i]=0;
for (i=0;i<no_var;i++)
{
for (j=0;j<no_con;j++,l++)
{
matval[l]=A[j][i];
}
}
for (j=0;j<no_con-1;j++) // L's for <=, E's for =, G's for >=
sense[j]='E';
sense[no_con-1]='L';
stat = 0;
//
//******************
no_sol++;//[max]F'=b(i).0 is the initial solution
min_or_max ="MAX"; //max=-1, min=1
RunLPSolver (&stat, &objval, x, piout, slack, dj, //I
call the function
obj, varlow, varupp, rhs, conlow, conupp,
matval,
sense, min_or_max, no_con, no_var);
w_output(x, gamma_criteria, gamma, no_sol);
init_var_first(w, z, no_sol);
//************************************
no_sol++;
//[min]F'=b(i).0 is the initial solution
min_or_max ="MIN"; //max=-1, min=1
119
. C++
//set b=F*+
for (j=0;j<M;j++)
{
b[j]=0;
A[j][no_total]=-(T[j]-1);
for (i=0;i<n;i++)
A[j][no_total+i+1]=t[j][i]-1;
}
b[M]=100;
A[M][no_total]=a_total-1;
b[M+1]=100;
for (i=0;i<n;i++)
A[M+1][no_total+i+1]=a[i]-1;
no_var=no_of_w+no_of_z+2*M+1+n;
no_con=M+3;
no_sol=0;
//0 is the initial solution
no_sol++;
//for [max]F'=
for (j=0;j<max_no_var;j++)
//initialize c of objective F
120
. C++
c[j]=0;
c[no_total]=1;
//[max]F'=
obj=NULL;
obj=c;
rhs=b;
l=0;
for (i=0;i<max_no_con*max_no_var;i++)//initialize
matval[i]=0;
for (i=0;i<no_var;i++)
{
for (j=0;j<no_con;j++,l++)
{
matval[l]=A[j][i];
}
}
for (j=0;j<no_con-1;j++) // L's for <=, E's for =, G's for >=
sense[j]='E';
sense[no_con-1]='L';
min_or_max ="MAX"; //max=-1, min=1
stat = 0;
// we call RunLPSolver() on
RunLPSolver (&stat, &objval, x, piout, slack, dj, //I call the
function
obj, varlow, varupp, rhs, conlow, conupp, matval,
sense, min_or_max, no_con, no_var);
w_output_MUSAII(x, no_sol);
init_var_first(w, z, no_sol);
for (i_n=0;i_n<n;i_n++)
{
no_sol++;
for (j=0;j<max_no_var;j++)
c[j]=0;
c[no_total+i_n+1]=1;
//for [max]F'=[i]
//initialize c of objective F
//[max]F'=[i]
obj=NULL;
obj=c;
121
. C++
rhs=b;
l=0;
for (i=0;i<max_no_con*max_no_var;i++)//initialize
matval[i]=0;
for (i=0;i<no_var;i++)
{
for (j=0;j<no_con;j++,l++)
{
matval[l]=A[j][i];
}
}
for (j=0;j<no_con-1;j++) // L's for <=, E's for =, G's for >=
sense[j]='E';
sense[no_con-1]='L';
min_or_max ="MAX"; //max=-1, min=1
stat = 0;
// we call RunLPSolver() on
RunLPSolver (&stat, &objval, x, piout, slack, dj, //I
//set b=F*+
no_var=no_of_w+no_of_z+2*M;
no_con=M+3;
no_sol=0;
122
. C++
for(i_a=0;i_a<a_total-1;i_a++)
//for [max]F'=z[m],
m=1,...,a_total
{
no_sol++;
for (j=0;j<max_no_var;j++)
c[j]=0;
//initialize c of objective F
c[no_of_w+i_a]=1;
obj=NULL;
obj=c;
rhs=b;
l=0;
for (i=0;i<max_no_con*max_no_var;i++)//initialize
matval[i]=0;
for (i=0;i<no_var;i++)
{
for (j=0;j<no_con;j++,l++)
{
matval[l]=A[j][i];
}
}
for (j=0;j<no_con-1;j++) // L's for <=, E's for =, G's for >=
sense[j]='E';
sense[no_con-1]='L';
min_or_max ="MAX"; //max=-1, min=1
stat = 0;
// we call RunLPSolver() on
RunLPSolver (&stat, &objval, x, piout, slack, dj, //I
. C++
for(i_n=0;i_n<n;i_n++) //for [max]F'=w[i][k], i=1,..,n k=1,..,a[i]-1
{
for (k_i_n=0;k_i_n<a[i_n]-1;k_i_n++)
{
l_k++;
no_sol++;
//0 is the initial
solution
for (j=0;j<max_no_var;j++)
c[j]=0;
//initialize c of objective F
c[l_k-1]=1;
obj=NULL;
obj=c;
rhs=b;
l=0;
for (i=0;i<max_no_con*max_no_var;i++)//initialize
matval[i]=0;
for (i=0;i<no_var;i++)
{
for (j=0;j<no_con;j++,l++)
{
matval[l]=A[j][i];
}
}
for (j=0;j<no_con-1;j++) // L's for <=, E's for =, G's for >=
sense[j]='E';
sense[no_con-1]='L';
min_or_max ="MAX"; //max=-1, min=1
stat = 0;
// we call RunLPSolver() on
RunLPSolver (&stat, &objval, x, piout, slack,
. C++
break;
case 4:
//********The MUSA IV***********************************
for (i=0;i<max_no_var;i++)
//initialize c of ojective function
c[i]=0;
c_of_F();
//c of objective function
for (i=0;i<no_of_w+no_of_z+2*M;i++) //set F as constraint
A[M+2][i]=c[i];
b[M+2]=F_star+e;
//set b=F*+
for (j=0;j<M;j++)
//m_e-s_plus_j>=0,m_e-s_minus_j>=0
{
A[M+3+2*j][no_of_w+no_of_z+2*j]=-1;
A[M+3+2*j][no_total]=1;
A[M+3+2*j+1][no_of_w+no_of_z+2*j+1]=-1;
A[M+3+2*j+1][no_total]=1;
}
no_var=no_of_w+no_of_z+2*M+1;
no_con=3*M+3;
no_sol=0;
no_sol++;
for (j=0;j<max_no_var;j++)
c[j]=0;
c[no_total]=1;
obj=NULL;
obj=c;
rhs=b;
l=0;
for (i=0;i<max_no_con*max_no_var;i++)//initialize
matval[i]=0;
for (i=0;i<no_var;i++)
{
125
. C++
for (j=0;j<no_con;j++,l++)
{
matval[l]=A[j][i];
}
}
for (j=0;j<M+2;j++) // L's for <=, E's for =, G's for >=
sense[j]='E';
sense[M+3-1]='L';
for (j=M+3;j<3*M+3;j++)//G for m_e
sense[j]='G';
// we call RunLPSolver() on
RunLPSolver (&stat, &objval, x, piout, slack, dj, //I
//set b=F*+
126
. C++
for (j=0;j<max_no_var;j++)
//initialize c of objective F
c[j]=0;
pointer_for_c=0;
for (j=0;j<=i_n;j++)
pointer_for_c+=a[j]-1;
for (m=pointer_for_c-(a[i_n]-1);m<pointer_for_c;m++)
{
c[m]=1;
//[max]F'=b[i]
}
obj=NULL;
obj=c;
rhs=b;
l=0;
for (i=0;i<max_no_con*max_no_var;i++)//initialize
matval[i]=0;
for (i=0;i<no_var;i++)
{
for (j=0;j<no_con;j++,l++)
{
matval[l]=A[j][i];
}
}
for (j=0;j<no_con-1;j++) // L's for <=, E's for =, G's for >=
sense[j]='E';
sense[no_con-1]='L';
min_or_max ="MAX"; //max=-1, min=1
stat = 0;
// we call RunLPSolver() on
RunLPSolver (&stat, &objval, x, piout, slack, dj, //I
127
. C++
//*************Mid values**************************************
mid_values(w,z,no_sol);
if((times_gamma<=1)&&(times_e<=1))
cfout.close();
//************The y*, b, x*, for the mid values****************
init_var(w_mid, z_mid);
if((times_gamma<=1)&&(times_e<=1))
{
cfout.open("C:\\Tsotsolas\\Master\\cplusplus\\Excel\\w.txt",ios_base::in|ios_ba
se::out|ios::app);
cfout<<"Bingo";
cfout.close();
}
//**********The ASI**************************************
ASI_(w, no_sol, m_d, m_i, k_d, k_i);//ASI per criterion
ASI_(b_weight, no_sol, m_d, m_i, k_d, k_i);
}//Finihs of loop for specific
e=e_initial; //initialize for the next gamma
//*************************************
} // Finish of loop for specific gamma
//
if((times_gamma>1)||(times_e>1))
//
cfout.close();
//***Output the ASI
***************************************************************
********
if((times_gamma>1)||(times_e>1))
{
k_i=0;
m_i=0;
for (k_d=e_initial;k_d<e_initial+times_e*step_e;k_d=k_d+step_e,k_i++)
{
128
. C++
cfout.open("C:\\Tsotsolas\\Master\\cplusplus\\Excel\\ASI.txt",ios_base::in|ios_
base::out|ios::app);
cfout<<k_d<<";";
cfout.close();
cfout.open("C:\\Tsotsolas\\Master\\cplusplus\\Excel\\ASI_cr.txt",ios_base::in|i
os_base::out|ios::app);
cfout<<k_d<<";";
cfout.close();
}
m_i=0;
for
(m_d=gamma_initial;m_d<gamma_initial+times_gamma*step_gamma;m_d=m_d+st
ep_gamma,m_i++)
{
k_i=0;
for
(k_d=e_initial;k_d<e_initial+times_e*step_e;k_d=k_d+step_e,k_i++)
{
cfout.open("C:\\Tsotsolas\\Master\\cplusplus\\Excel\\ASI.txt",ios_base::in|ios_
base::out|ios::app);
if(k_i==0)
cfout<<endl<<m_d<<";";
cfout<<ASI[m_i][k_i]<<";";
cfout.close();
//
cout<<endl<<m_d<<"ASI["<<m_d<<"]["<<k_d<<"]=
"<<ASI[m_i][k_i]<<endl;
//
cout<<endl<<"m_i= "<<m_i<<" k_i= "<<k_i;
cfout.open("C:\\Tsotsolas\\Master\\cplusplus\\Excel\\ASI_cr.txt",ios_base::in|i
os_base::out|ios::app);
if(k_i==0)
cfout<<endl<<m_d<<";";
cfout<<ASI_cr_AVG[m_i][k_i]<<";";
cfout.close();
//
cout<<endl<<m_d<<"ASI_cr_MIN["<<m_d<<"]["<<k_d<<"]=
"<<ASI_cr_MIN[m_i][k_i]<<endl;
//
cout<<endl<<"m_i= "<<m_i<<" k_i= "<<k_i;
}
}
}
return 0;
}
129
. C++
//************Main LP function***********************
void RunLPSolver (long* pstat, double* pobjval, double* px,
double* ppiout, double* pslack, double* pdj,
double* pobj, double* pvarlow, double* pvarupp,
double* prhs, double* pconlow, double* pconupp,
double* pmatval, unsigned char* psense,
char* p_min_or_max, int no_con, int no_var) //instead
of pointers I could pass tables
{
char probname[] = "Solution";
double lb[max_no_var] = { 0.0 };
for (i=0;i<no_var;i++)
lb[i]=0.0;
double ub[max_no_var];
for (i=0;i<no_var;i++)
ub[i]=INFBOUND;
HPROBLEM lp;
lp = loadlp (probname, no_var, no_con, (p_min_or_max =="MAX"?-1:1),
pobj, prhs, psense, NULL, NULL, NULL, pmatval, lb, ub, NULL,
no_var, no_con, no_var*no_con);
// #ifdef WIN32
// setlpcallbackfunc (lpcallback); /* set up the callback */
// #endif
optimize (lp);
solution (lp, pstat, pobjval, px, ppiout, pslack, pdj);
// #ifdef WIN32
//
setlpcallbackfunc (NULL); /* remove the callback function */
//
#endif
unloadprob(&lp);
return;
}
//**************************************************************
//*************The result's output function********************
void w_output(double* x, double gamma_criteria[n_max], double gamma, int no_sol)
130
. C++
{
if ((times_gamma<=1)&&(times_e<=1))
{
cfout<<endl;
if (no_sol!=0)cfout<<no_sol<<";";
}
l=0;
//Initialize the x[i]
for(i=0;i<n;i++)
//The output of w
{
for (j=0;j<a[i]-1;j++,l++)
{
w[i][j][no_sol]=x[l]+gamma_criteria[i];
if ((no_sol==0)&&(times_gamma<=1)&&(times_e<=1))
{
cfout<<"w["<<i+1<<"]["<<j+1<<"];"<<w[i][j][no_sol]<<";";
cfout<<endl;
}
else
{
if ((times_gamma<=1)&&(times_e<=1))
cfout<<w[i][j][no_sol]<<";";
}
}
}
for(i=0;i<a_total-1;i++,l++) //The output of z
{
z[i][no_sol]=x[l]+gamma;
//
if (no_sol==0)
//
{
if ((no_sol==0)&&(times_gamma<=1)&&(times_e<=1))
cfout<<"z["<<i+1<<"];"<<z[i][no_sol]<<endl;
else
if ((times_gamma<=1)&&(times_e<=1))
cfout<<z[i][no_sol]<<";";
//
}
}
//cout<<endl;
return;
}
//*************The result's output function for MUSA II********************
void w_output_MUSAII(double* x, int no_sol)
{
if ((times_gamma<=1)&&(times_e<=1))
131
. C++
{
cfout<<endl;
if (no_sol!=0)cfout<<no_sol<<";";
}
if ((times_gamma<=1)&&(times_e<=1))
{
cfout.close();
cfout.open("C:\\Tsotsolas\\Master\\cplusplus\\Excel\\gamma.txt",ios_base::in|i
os_base::out|ios::app);
}
gamma=x[no_total];
if ((times_gamma<=1)&&(times_e<=1))
cfout<<endl<<endl<<";"<<gamma;
for (i=0;i<n;i++)
{
gamma_criteria[i]=x[no_total+i+1];
if ((times_gamma<=1)&&(times_e<=1))
cfout<<endl
<<"["<<i+1<<"];"<<gamma_criteria[i];
}
if ((times_gamma<=1)&&(times_e<=1))
{
cfout.close();
cfout.open("C:\\Tsotsolas\\Master\\cplusplus\\Excel\\w_post.txt",ios_base::in|i
os_base::out|ios::app);
}
l=0;
//Initialize the x[i]
for(i=0;i<n;i++)
//The output of w
{
for (j=0;j<a[j]-1;j++,l++)
{
w[i][j][no_sol]=x[l]+gamma_criteria[i];
if ((no_sol==0)&&(times_gamma<=1)&&(times_e<=1))
{
cfout<<"w["<<i+1<<"]["<<j+1<<"];"<<w[i][j][no_sol]<<";";
cfout<<endl;
}
else
{
if ((times_gamma<=1)&&(times_e<=1))
cfout<<w[i][j][no_sol]<<";";
132
. C++
}
}
}
for(i=0;i<a_total-1;i++,l++) //The output of z
{
z[i][no_sol]=x[l]+gamma;
//
if (no_sol==0)
//
{
if ((no_sol==0)&&(times_gamma<=1)&&(times_e<=1))
cfout<<"z["<<i+1<<"];"<<z[i][no_sol]<<endl;
else
if ((times_gamma<=1)&&(times_e<=1))
cfout<<z[i][no_sol]<<";";
//
}
//cout<<endl;
return;
}
//*************The result's output function for MUSA IV********************
void w_output_MUSAIV(double* x, double gamma_criteria[n_max], double gamma,
int no_sol)
{
if ((times_gamma<=1)&&(times_e<=1))
{
cfout<<endl;
if (no_sol!=0)cfout<<no_sol<<";";
}
m_e=x[no_total];
l=0;
//Initialize the x[i]
for(i=0;i<n;i++)
//The output of w
{
for (j=0;j<a[j]-1;j++,l++)
{
w[i][j][no_sol]=x[l]+gamma_criteria[i];
if ((no_sol==0)&&(times_gamma<=1)&&(times_e<=1))
{
cfout<<"w["<<i+1<<"]["<<j+1<<"];"<<w[i][j][no_sol]<<";";
cfout<<endl;
}
133
. C++
else
{
if ((times_gamma<=1)&&(times_e<=1))
cfout<<w[i][j][no_sol]<<";";
}
}
}
for(i=0;i<a_total-1;i++,l++) //The output of z
{
z[i][no_sol]=x[l]+gamma;
//
if (no_sol==0)
//
{
if ((no_sol==0)&&(times_gamma<=1)&&(times_e<=1))
cfout<<"z["<<i+1<<"];"<<z[i][no_sol]<<endl;
else
if ((times_gamma<=1)&&(times_e<=1))
cfout<<z[i][no_sol]<<";";
//
}
//cout<<endl;
return;
}
//*************The result's mid values output function********************
void mid_values(double w[n_max][a_i_max][max_of_sol], double
z[a_total_max][max_of_sol], int no_sol)
{
//***we start from no_sol=1 because no_sol=0 stands for the initial solution
if((times_gamma<=1)&&(times_e<=1))
cfout<<endl<<" ;";
if (no_sol>=1)
{
for (i=0;i<n;i++)
{
for
(j=0;j<a[i]-1;j++)
//The output of w
{
w_mid[i][j]=0;
for (m=1;m<=no_sol;m++)
{
w_mid[i][j]+=w[i][j][m];
//sum
}
w_mid[i][j]/=no_sol;
//sum/no_sol
if((times_gamma<=1)&&(times_e<=1))
134
. C++
cfout<<w_mid[i][j]<<";";
}
}
for(i=0;i<a_total-1;i++)
//The output of z
{
z_mid[i]=0;
for (m=1;m<=no_sol;m++)
{
z_mid[i]+=z[i][m];
//sum
}
z_mid[i]/=no_sol;
if((times_gamma<=1)&&(times_e<=1))
cfout<<z_mid[i]<<";";
//sum/no_sol
}
}
return;
}
//**The result's y* b,x* values output function for no_sol
problem********************
void init_var_first(double w[n_max][a_i_max][max_of_sol], double
z[a_total_max][max_of_sol], int no_sol)
{
if((no_sol==0)&&(times_gamma<=1)&&(times_e<=1))
{
cfout.open("C:\\Tsotsolas\\Master\\cplusplus\\Excel\\x_y.txt",ios_base::in|ios_
base::out|ios::app);
cfout<<" ;0;";
}
for (m=1;m<a_total;m++)
{
y_star[m][no_sol]=0;
//initialize
for(l=0;l<=m-1;l++)
{
y_star[m][no_sol]+=z[l][no_sol];
}
if((no_sol==0)&&(times_gamma<=1)&&(times_e<=1))
cfout<<y_star[m][no_sol]<<";";
}
if((no_sol==0)&&(times_gamma<=1)&&(times_e<=1))
135
. C++
cfout.close();
//
for (i=0;i<n;i++)
{
b_weight[i][no_sol]=0;
//initialize
for (l=0;l<a[i];l++)
{
b_weight[i][no_sol]+=w[i][l][no_sol];
}
b_weight[i][no_sol]/=100;
if((no_sol==0)&&(times_gamma<=1)&&(times_e<=1))
{
cfout.open("C:\\Tsotsolas\\Master\\cplusplus\\Excel\\w.txt",ios_base::in|ios_ba
se::out|ios::app);
cfout<<"b["<<i+1<<"]=;"<<b_weight[i][no_sol]<<endl;
cfout.close();
}
else
{
if((times_gamma<=1)&&(times_e<=1))
cfout<<b_weight[i][no_sol]<<";";
}
}
if((no_sol==0)&&(times_gamma<=1)&&(times_e<=1))
cfout.open("C:\\Tsotsolas\\Master\\cplusplus\\Excel\\x_y.txt",ios_base::in|ios_
base::out|ios::app);
for (i=0;i<n;i++)
{
if((no_sol==0)&&(times_gamma<=1)&&(times_e<=1))
{
cfout<<endl;
cfout<<""<<i+1<<";0;";
}
for (k=1;k<a[i];k++)
{
x_star[i][k][no_sol]=0;
//initialize
for (l=0;l<=k-1;l++)
{
x_star[i][k][no_sol]+=w[i][l][no_sol];
}
x_star[i][k][no_sol]/=b_weight[i][no_sol];
x_star[i][k][no_sol]*=100;
if((no_sol==0)&&(times_gamma<=1)&&(times_e<=1))
cfout<<x_star[i][k][no_sol]<<";";
136
. C++
}
}
if((no_sol==0)&&(times_gamma<=1)&&(times_e<=1))
cfout.close();
return;
}
//***********The result's y* b,x* values output function********************
void init_var(double w_mid[n_max][a_i_max], double z_mid[a_total_max])
{
if((times_gamma<=1)&&(times_e<=1))
{
cfout.open("C:\\Tsotsolas\\Master\\cplusplus\\Excel\\mid_x_y.txt",ios_base::in
|ios_base::out|ios::app);
cfout<<endl
<<";0;";
}
for (m=1;m<a_total;m++)
{
y_star_mid[m]=0;
//initialize
for(l=0;l<=m-1;l++)
{
y_star_mid[m]+=z_mid[l];
}
if((times_gamma<=1)&&(times_e<=1))
{
cfout<<y_star_mid[m]<<";";
}
}
if((times_gamma<=1)&&(times_e<=1))
cfout.close();
//
for (i=0;i<n;i++)
{
b_weight_mid[i]=0;
//initialize
for (l=0;l<a[i];l++)
{
b_weight_mid[i]+=w_mid[i][l];
}
b_weight_mid[i]/=100;
if((times_gamma<=1)&&(times_e<=1))
{
137
. C++
cfout.open("C:\\Tsotsolas\\Master\\cplusplus\\Excel\\w_post.txt",ios_base::in|i
os_base::out|ios::app);
cfout<<b_weight_mid[i]<<";";
cfout.close();
}
}
if((times_gamma<=1)&&(times_e<=1))
cfout.open("C:\\Tsotsolas\\Master\\cplusplus\\Excel\\mid_x_y.txt",ios_base::in
|ios_base::out|ios::app);
for (i=0;i<n;i++)
{
if((times_gamma<=1)&&(times_e<=1))
cfout<<endl<<""<<i+1<<";0;";
for (k=1;k<a[i];k++)
{
x_star_mid[i][k]=0;
//initialize
for (l=0;l<=k-1;l++)
{
x_star_mid[i][k]+=w_mid[i][l];
}
x_star_mid[i][k]/=b_weight_mid[i];
x_star_mid[i][k]*=100;
if((times_gamma<=1)&&(times_e<=1))
cfout<<x_star_mid[i][k]<<";";
}
}
if((times_gamma<=1)&&(times_e<=1))
cfout.close();
return;
}
//***********The AFI********************
void AFI_(double F_star, double m_d, int m_i)
{
AFI[m_i]=1-(F_star/(100*M));
if((no_sol==0)&&(times_gamma<=1)&&(times_e<=1))
{
cfout.open("C:\\Tsotsolas\\Master\\cplusplus\\Excel\\w.txt",ios_base::in|ios_ba
se::out|ios::app);
cfout<<"AFI["<<m_d<<"]=;"<<AFI[m_i]<<endl;
cfout.close();
}
138
. C++
if((times_gamma>1)||(times_e>1))
{
cfout.open("C:\\Tsotsolas\\Master\\cplusplus\\Excel\\AFI.txt",ios_base::in|ios_
base::out|ios::app);
cfout<<m_d<<";"<<AFI[m_i]<<endl;
cfout.close();
}
return;
}
//***********The ASI per criterion********************
void ASI_(double w[n_max][a_i_max][max_of_sol], int no_sol,
double m_d, int m_i,double k_d, int k_i )
{
if((times_gamma<=1)&&(times_e<=1))
{
cfout.open("C:\\Tsotsolas\\Master\\cplusplus\\Excel\\w_post.txt",ios_base::in|i
os_base::out|ios::app);
cfout<<endl<<endl
<<".;";
}
ASI[m_i][k_i]=0;
for (i=0;i<n;i++)
{
ASI_cr[i][m_i][k_i]=0;
S[i]=0;
for (a_i=0;a_i<a[i]-1;a_i++)
{
ASI_1_cr[i][a_i]=0;
ASI_2_cr[i][a_i]=0;
S_cr[i][a_i]=0;
//***test the worst case**********
/*
for (j=1;j<=no_sol;j++)
{
if (j==(i+1))
w[i][a_i][j]=100;
else
w[i][a_i][j]=1;
139
. C++
}
*/
//********************************
for (j=1;j<=no_sol;j++)
{
//cout<<endl
//
<<"b*["<<i+1<<"]["<<j<<"]= "<<b_weight[i][j];
ASI_1_b_cr[i][a_i][j]=pow(w[i][a_i][j],2.0);
ASI_1_cr[i][a_i]+=ASI_1_b_cr[i][a_i][j];
ASI_2_b_cr[i][a_i][j]=w[i][a_i][j];
ASI_2_cr[i][a_i]+=ASI_2_b_cr[i][a_i][j];
}
//
ASI_1[i]*=no_sol;
//kata vagelli
ASI_2_cr[i][a_i]=pow(ASI_2_cr[i][a_i],2.0)/no_sol;
S_cr[i][a_i]=sqrt((ASI_1_cr[i][a_i]-ASI_2_cr[i][a_i])/(no_sol-1)); //or
(no_sol-1)!!!!!
if((times_gamma<=1)&&(times_e<=1))
cfout<<S_cr[i][a_i]<<";";
}
//******The average of S[i]********************************************
/*
for (a_i=0;a_i<a[i]-1;a_i++)
{
ASI_cr[i][m_i][k_i]+=S_cr[i][a_i]/(100/sqrt(no_sol));
}
ASI_cr[i][m_i][k_i]=(ASI_cr[i][m_i][k_i])/(a[i]-1);*/
//********************************************************************
*
//**************The maximum of S[i]************************************
ASI_cr[i][m_i][k_i]=0;
//initialize
for (a_i=0;a_i<a[i]-1;a_i++)
{
if (ASI_cr[i][m_i][k_i]<S_cr[i][a_i]/(100/sqrt(no_sol)))
ASI_cr[i][m_i][k_i]=S_cr[i][a_i]/(100/sqrt(no_sol));
}
//********************************************************************
**
ASI_cr[i][m_i][k_i]=1-ASI_cr[i][m_i][k_i]+1-1;
140
. C++
}
//*********The MIN of ASI[i]****************************
/*
ASI_cr_MIN[m_i][k_i]=1;
//initialize
for (i=0;i<n;i++)
{
if (ASI_cr_MIN[m_i][k_i]>ASI_cr[i][m_i][k_i])
ASI_cr_MIN[m_i][k_i]=ASI_cr[i][m_i][k_i];
}*/
//*********The AVG of ASI[i]****************************
ASI_cr_AVG[m_i][k_i]=0;
for (i=0;i<n;i++)
{
ASI_cr_AVG[m_i][k_i]+=ASI_cr[i][m_i][k_i];
}//for (i=0;i<n;i++)
ASI_cr_AVG[m_i][k_i]=ASI_cr_AVG[m_i][k_i]/n;
return;
}
//***********The ASI********************
void ASI_(double b_weight[n_max][max_of_sol], int no_sol,
double m_d, int m_i,double k_d, int k_i )
{
if((times_gamma<=1)&&(times_e<=1))
{
for(i=0;i<a_total-1;i++)
cfout<<";";
}
ASI[m_i][k_i]=0;
for (i=0;i<n;i++)
{
ASI_1[i]=0;
ASI_2[i]=0;
S[i]=0;
//***test the worst case**********
/*
for (j=1;j<=no_sol;j++)
{
if (j==(i+1))
b_weight[i][j]=100;
else
b_weight[i][j]=0;
}
141
. C++
*/
//********************************
for (j=1;j<=no_sol;j++)
{
//cout<<endl
//
<<"b*["<<i+1<<"]["<<j<<"]= "<<b_weight[i][j];
ASI_1_b[i][j]=pow(b_weight[i][j],2.0);
ASI_1[i]+=ASI_1_b[i][j];
ASI_2_b[i][j]=b_weight[i][j];
ASI_2[i]+=ASI_2_b[i][j];
}
//
ASI_1[i]*=no_sol;
//kata vagelli
ASI_2[i]=pow(ASI_2[i],2.0)/no_sol;
S[i]=sqrt((ASI_1[i]-ASI_2[i])/(no_sol-1)); //or (no_sol-1)!!!!!
if((times_gamma<=1)&&(times_e<=1))
cfout<<S[i]<<";";
}
for (i=0;i<n;i++)
{
ASI[m_i][k_i]+=S[i]/(100/sqrt(no_sol));
}
ASI[m_i][k_i]=(ASI[m_i][k_i])/n;
ASI[m_i][k_i]=1-ASI[m_i][k_i]+1-1;
if((times_gamma<=1)&&(times_e<=1))
{
cfout<<endl<<endl;
cfout<<"ASI["<<m_d<<"]["<<k_d<<"]=;;"<<ASI[m_i][k_i];
for(i=0;i<n;i++)
{
cfout<<endl
<<"ASI_cr["<<i+1<<"]["<<m_d<<"]["<<k_d<<"]=;;"<<ASI_cr[i][m_i][k_i];
}
cfout<<endl
<<"ASI_cr_AVG["<<m_d<<"]["<<k_d<<"]=;;"<<ASI_cr_AVG[m_i][k_i];
cfout.close();
142
. C++
}
return;
}
143
. C++
transformations.h
//*************From trasformations ***********
#ifndef TRANS_H
#define TRANS_H
int M=0, n=0;
//M customres, n criteria
const int M_max=100, n_max=16;
//M_max, n_max tables dimensions
int a_total=0;
// a_total=a
const int a_total_max=13;
int a[n_max]={0};
//a[n]=a(i)
const a_i_max=13;
const int max_of_sol=a_total_max+a_i_max*n_max+1;//The maximum number of
solutions
int T[M_max];
int t[M_max][n_max];
double gamma=0;
double gamma_initial=0;
double gamma_criteria[n_max]={0};
double e=0;
double e_initial=0;
double m_e=0;
//for MUSA IV
const int max_no_var=n_max*(a_i_max-1)+(a_total_max-1)+2*M_max+n_max+1;
//The 48 is to change for each problem
const int max_no_con=3*M_max+3;
void tji_table(int M, int n, int t[M_max][n_max], int T[M_max]);
void coeff(int M, int n, int t[M_max][n_max], int T[M_max]);
void b_part(double gamma, double gamma_criteria[n_max], int t[M_max][n_max],
int T[M_max]);
void c_of_F(void);
int i=0,j=0,l=0,k=0,m=0,i_n=0, m_i=0, k_i=0,
pointer_for_c=0, i_a=0, l_k=0, k_i_n=0, a_i=0, test=0;
double k_d=0.0, m_d=0.0;
//double pointers
int no_of_w=0, no_of_z=0, no_total;
double A[max_no_con][max_no_var]={0};
//****to see what if int **** A
//we take for
dimensions the maximum
//of the numbers
of variables and
//constraints
(p.127)
144
. C++
double b[max_no_con]={0};
double c[max_no_var]={0};
double gamma_criteria_sum[M_max]={0};
double gamma_criteria_sum_w=0;
double F_star=0;
//F*
// b
//c
double w[n_max][a_i_max][max_of_sol]={0};
max a[i]<=a_i_max
double w_mid[n_max][a_i_max]={0};
values of w
double z[a_total_max][max_of_sol]={0};
double z_mid[a_total_max]={0};
values of z
//mid
double s_plus[M_max][max_of_sol]={0};
double s_minus[M_max][max_of_sol]={0};
double y_star[a_total_max][max_of_sol]={0};
double b_weight[n_max][max_of_sol]={0};
double x_star[n_max][a_i_max][max_of_sol]={0}; //xi*
//y*
//bi the weights of criteria
double y_star_mid[a_total_max]={0};
//y*_mid
double b_weight_mid[n_max]={0};
//bi_mid the weights of criteria
double x_star_mid[n_max][a_i_max]={0}; //xi*_mid
double AFI[200]={0};
//AFI[gamma_pointer]
int times_gamma=1;
double step_gamma=1.0;
int times_e=1;
double step_e=0.1;
int model_MUSA=0;
char* model_MUSA_ch[]={" MUSA",
"MUSA I", "MUSA II","MUSA III","MUSA
IV"};
;
double ASI[200][500]={0};
//ASI[gamma_pointer][e_pointer]
double ASI_w[n_max][200][500]={0}; //ASI[i][gamma_pointer][e_pointer] on w for
the i criterion
double ASI_1[n_max]={0};// for the 1st part of sqrt for the i criterion or the k part
double ASI_2[n_max]={0};// for the 2nd part of sqrt for the i criterion or the k part
double ASI_1_b[n_max][max_of_sol]={0};//for indermediate assesments
double ASI_2_b[n_max][max_of_sol]={0};//for indermediate assesments
double S[n_max]={0};//tipiki apoklisi
double ASI_cr[n_max][200][500]={0};
//ASI[gamma_pointer][e_pointer]
145
. C++
double ASI_w_cr[n_max][a_i_max][200][500]={0};
//ASI[i][gamma_pointer][e_pointer] on w for the i criterion
double ASI_1_cr[n_max][a_i_max]={0};// for the 1st part of sqrt for the i criterion or
the k part
double ASI_2_cr[n_max][a_i_max]={0};// for the 2nd part of sqrt for the i criterion or
the k part
double ASI_1_b_cr[n_max][a_i_max][max_of_sol]={0};//for indermediate
assesments
double ASI_2_b_cr[n_max][a_i_max][max_of_sol]={0};//for indermediate
assesments
double S_cr[n_max][a_i_max]={0};//tipiki apoklisi
double ASI_cr_AVG[200][500]={0}; //The MAXimum of ASI[i]s
char nothing[50]="";
ifstream cfin;
ofstream cfout;
double* obj=NULL;
//I put the pointer instead of the table
double* rhs=NULL;
//I put the pointer instead of the table
double matval[max_no_con*max_no_var] = {0.0};
unsigned char sense[max_no_con]= "" ;
char* min_or_max=NULL;
long stat = 0;
double objval, x[max_no_var];
//long i;
double piout[max_no_con], slack[max_no_con], dj[max_no_var];
double varlow[max_no_var], varupp[max_no_var], conlow[max_no_con],
conupp[max_no_con];
char any_key=NULL;
//**********The functions for trasformatios********************
//******
void tji_table(int M, int n, int t[M_max][n_max], int T[M_max])
{
cout<<endl<<"The opinion of "<<M<<" cudtomers on "<<n<<" ctriteria.";
cout<<endl<<" |";
cout<<setw(3)<<"Total";
for (i=0;i<n;i++)
cout<<setw(3)<<i+1<<" ";
cout<<endl;
for (i=0;i<=n+1;i++)
cout<<"_____";
//The underline
for (j=0;j<M;j++)
{
cout<<endl
146
. C++
<<setw(3)<<j+1<<" |";
//The row
headings
cout<<setw(3)<<T[j]<<" ";
for (i=0;i<n;i++)
cout<<setw(3)<<t[j][i]<<" ";
}
cout<<endl;
return;
}
//*******
void coeff(int M, int n, int t[M_max][n_max], int T[M_max]) //A[i][j]
{
for (j=0;j<M;j++)
{
l=0;
//set l=0, the first column
for (i=0;i<n;i++)
{
for(k=0;k<t[j][i]-1;k++)
{
A[j][l++]=1;
//l++;
}
l+=a[i]-t[j][i]; //set l= to the next w'
}
l=no_of_w;
for (m=0;m<T[j]-1;m++)
{
A[j][l++]=-1;
//l++;
}
l=no_of_w + no_of_z; //set l= with total number of w'+z'
A[j][l+2*j]=-1;
A[j][l+2*j+1]=1;
}
l=no_of_w;
for (m=0;m<a_total-1;m++)
{
A[M][l++]=1;
//l++;
}
l=0;
. C++
for (i=0;i<n;i++)
{
for(k=0;k<a[i]-1;k++)//set the sum of w'
{
A[M+1][l++]=1;
//l++;
}
}
return;
}
//******
void b_part(double gamma, double gamma_criteria[n_max], int t[M_max][n_max],
int T[M_max])
{
for (j=0;j<M;j++)
//b, second part for each customer
{
gamma_criteria_sum[j]=0;
for (i=0;i<n;i++)
{
gamma_criteria_sum[j]+=gamma_criteria[i]*(t[j][i]-1);
}
b[j]=(gamma*(T[j]-1))-(gamma_criteria_sum[j]);
}
b[M]=100-gamma*(a_total-1);//b, second part for z
gamma_criteria_sum_w=0;
for (i=0;i<n;i++)
{
gamma_criteria_sum_w+=gamma_criteria[i]*(a[i]-1);
}
b[M+1]=100-gamma_criteria_sum_w;//b, second part for w
return;
}
//*****
void c_of_F(void)
{
for (l=no_of_w+no_of_z;l<no_of_w+no_of_z+2*M;l++)
{
c[l]=1;
}
return;
}
//*************************************************************
//********The function for input from file********************
148
. C++
int getname(char TN[])
{
int position;
char c1;
char c2;
if(cfin>>c1)
{
cfin>>c2;
position=0;
while ((c1!=' ')||(c2!=' '))
{
TN[position]=c1;
position++;
c1=c2;
c2=cfin.get();
}
TN[position]='\0';
return(1);
}
else{return(0);}
}
#endif//TRANS_H
149
. C++
Frontmip.h
/********************************************************************
**/
/* Frontline Systems LP/QP/MIP Callable Dynamic Link Library
*/
/* Copyright 1995-97 Frontline Systems, Inc. All Rights Reserved. */
/* Include this header file in your C or C++ program for MS Windows. */
/********************************************************************
**/
//#ifdef cplusplus
extern "C" {
//#endif
#ifdef WIN32
#define _FAR_
#define _HUGE_
#else /* WIN16 */
#define _FAR_ _far
#define _HUGE_ _huge
#endif
typedef long INTARG; /* same in Win16 and Win32 */
typedef double REALARG; /* same on all platforms...*/
typedef unsigned char _FAR_ * LPBYTEARG;
typedef INTARG _FAR_ * LPINTARG;
typedef REALARG _FAR_ * LPREALARG;
/* Define huge pointers for int and REALARG types. HPREALARG
is used for matval[], and HPINTARG is used for matind[] to allow
for more than 32768 nonzero coefficients, in 16-bit Windows. */
typedef INTARG _HUGE_ * HPINTARG;
typedef REALARG _HUGE_ * HPREALARG;
#ifndef LPSTR
#define LPSTR char _FAR_ *
#endif
#ifndef NULL
#define NULL 0
#endif
/* Define the value which represents "plus infinity" for bounds */
#define INFBOUND 1E30
/* Define return codes for the callback functions */
typedef enum {
PSTAT_CONTINUE
= 0, /* Used in callback to continue solving
*/
150
. C++
PSTAT_OPTIMAL
= 1, /* An optimal solution has been found
*/
PSTAT_INFEASIBLE = 2, /* No feasible solution could be found */
PSTAT_UNBOUNDED
= 3, /* The objective value is unbounded
*/
PSTAT_IT_LIM_FEAS = 5, /* Iteration limit exceeded, feasible sol */
PSTAT_IT_LIM_INFEAS = 6, /* Iteration limit exceeded, no feasible sol*/
PSTAT_TIME_LIM_FEAS = 7, /* Time limit exceeded, feasible solution */
PSTAT_TIME_LIM_INFEAS = 8, /* Time limit exceeded, no feasible solution*/
PSTAT_ABORT_FEAS = 12, /* User aborted solve, feasible solution */
PSTAT_ABORT_INFEAS = 13, /* User aborted solve, no feasible solution */
PSTAT_MIP_OPTIMAL
= 101,/* Optimal integer solution found
*/
PSTAT_MIP_OPTIMAL_TOL = 102,/* Integer solution found within epgap */
PSTAT_MIP_INFEASIBLE
= 103,/* No feasible integer solution
*/
PSTAT_MIP_SOL_LIM
= 104,/* Limit of integer solutions exceeded */
PSTAT_MIP_NODE_LIM_FEAS = 105,/* Node limit exceeded, integer
solution*/
PSTAT_MIP_NODE_LIM_INFEAS = 106,/* Node limit exceeded, no int solution
*/
PSTAT_MIP_TIME_LIM_FEAS = 107,/* Time limit exceeded, integer solution*/
PSTAT_MIP_TIME_LIM_INFEAS = 108 /* Time limit exceeded, no int solution
*/
} PSTAT;
#define PSTAT_USER_ABORT PSTAT_ABORT_FEAS /* may be returned by
callback */
/* Define symbolic names for optimization parameters */
typedef enum {
PARAM_ARGCK = 990, /* on argument errors: 1-MsgBox, 0-retval only*/
PARAM_ITLIM = 1020, /* limit on LP iterations - per (sub)problem */
PARAM_NDLIM = 2017, /* limit on Branch & Bound nodes explored */
PARAM_MIPLIM = 2015, /* limit on Branch & Bound IP solutions found */
PARAM_SCAIND = 1033, /* scaling: -1-none, 0-normal, 1-aggressive */
PARAM_CRAIND = 1007, /* crashing: 0-none, 1-crash initial basis */
PARAM_TILIM = 1038, /* global solution time limit */
PARAM_EPOPT
= 1014, /* LP optimality tolerance */
PARAM_EPPIV = 1091, /* LP pivot tolerance
*/
PARAM_EPSOL
= 1092, /* LSLP solution tolerance */
PARAM_EPRHS
= 1016, /* LP feasibility tolerance */
PARAM_EPGAP
= 2009, /* integer tolerance/MIP gap */
PARAM_CUTLO = 2006, /* known incumbent for max MIP */
PARAM_CUTHI
= 2007 /* known incumbent for min MIP */
} PARAM;
/* Define "wherefrom" codes for callback functions */
typedef enum {
CALLBACK_PRIMAL = 1, /* callback on LP pivot */
CALLBACK_MIP = 101 /* callback on MIP branch */
} CALLBACK_CODE;
151
. C++
/* Define info request codes for callback functions */
typedef enum {
CBINFO_PRIMAL_OBJ = 1, /* callback: objective
*/
CBINFO_PRIMAL_INFMEAS = 3, /* callback: infeasibility */
CBINFO_PRIMAL_FEAS = 5, /* callback: whether feasible*/
CBINFO_ITCOUNT
= 7, /* callback: iteration count */
CBINFO_BEST_INTEGER = 8, /* callback: MIP incumbent */
CBINFO_NODE_COUNT = 10,/* callback: nodes explored */
CBINFO_MIP_ITERATIONS = 12 /* callback: MIP iterations */
} CBINFO;
/* The problem structure: loadlp() loads its arguments into a PROBLEM
structure and returns an HPROBLEM pointer to this data structure.
loadctype(), if called, allocates and copies the ctype member. The
structure itself is statically allocated, since at present the LSLP
Solver can work with only one problem at a time. unloadprob() just
clears addresses in the structure members.
*/
typedef struct PROBLEM
{
struct PROBLEM _FAR_ * lp; /* points to itself, for compatibility */
LPSTR probname;
INTARG numcols, numrows, objsen;
LPREALARG objx, rhsx;
LPBYTEARG sense;
LPINTARG matbeg, matcnt;
HPINTARG matind;
HPREALARG matval;
LPREALARG lb, ub, rngval;
INTARG colspace, rowspace, nzspace;
LPINTARG qmatbeg, qmatcnt;
HPINTARG qmatind;
HPREALARG qmatval;
INTARG qnzspace;
LPBYTEARG ctype;
REALARG objective, sum_of_infeas, best_integer;
INTARG iterations, branches, total_iters, integer_soln;
INTARG stat;
REALARG objval;
LPREALARG x, piout, slack, dj;
struct {
INTARG begin, end;
LPREALARG lower, upper;
} obj;
struct {
INTARG begin, end;
LPREALARG lower, upper;
} rhs;
}
152
. C++
PROBLEM;
typedef struct PROBLEM _FAR_ * HPROBLEM;
/* Define the (compiler-specific) keywords for DLL entry points */
#ifdef WIN32
#define _CC __stdcall
#else /* WIN16 */
#define _CC __export __far __pascal
#endif
/* Define the procedure pointer type for callback functions */
typedef INTARG (_CC * _CCPROC) (HPROBLEM lpinfo, INTARG wherefrom);
/* Prototypes for the DLL's callable entry points... */
HPROBLEM _CC loadlp (LPSTR probname,
INTARG numcols, INTARG numrows, INTARG objsen,
LPREALARG obj, LPREALARG rhs, LPBYTEARG sense,
LPINTARG matbeg, LPINTARG matcnt, HPINTARG matind, HPREALARG
matval,
LPREALARG lb, LPREALARG ub, LPREALARG rngval,
INTARG colspace, INTARG rowspace, INTARG nzspace);
INTARG _CC loadquad (HPROBLEM lp, LPINTARG qmatbeg, LPINTARG
qmatcnt,
HPINTARG qmatind, HPREALARG qmatval, INTARG qnzspace);
INTARG _CC loadctype (HPROBLEM lp, LPBYTEARG ctype);
INTARG _CC optimize (HPROBLEM lp);
INTARG _CC mipoptimize (HPROBLEM lp);
INTARG _CC solution (HPROBLEM lp, LPINTARG pstat, LPREALARG pobj,
LPREALARG x, LPREALARG piout, LPREALARG slack, LPREALARG dj);
INTARG _CC objsa (HPROBLEM lp, INTARG begidx, INTARG endidx,
LPREALARG lower, LPREALARG upper);
INTARG _CC rhssa (HPROBLEM lp, INTARG begidx, INTARG endidx,
LPREALARG lower, LPREALARG upper);
/* unloadprob MUST be called to free memory...NOTE argument type change! */
INTARG _CC unloadprob (HPROBLEM _FAR_ *lp_p);
/* routines to set and get parameter values...new versions */
INTARG _CC infointparam (INTARG whichparam,
LPINTARG defvalue_p, LPINTARG minvalue_p, LPINTARG maxvalue_p);
153
. C++
INTARG _CC setintparam (INTARG whichparam, INTARG newvalue);
INTARG _CC getintparam (INTARG whichparam, LPINTARG value_p);
INTARG _CC infodblparam (INTARG whichparam,
LPREALARG defvalue_p, LPREALARG minvalue_p, LPREALARG
maxvalue_p);
INTARG _CC setdblparam (INTARG whichparam, REALARG newvalue);
INTARG _CC getdblparam (INTARG whichparam, LPREALARG value_p);
INTARG _CC setdefaults (void);
/* compatibility routines for integer tolerance ("mip gap") */
INTARG _CC setepgap (REALARG newvalue,
REALARG _FAR_ *ptoosmall, REALARG _FAR_ *ptoobig);
void _CC getepgap (REALARG _FAR_ *pepgap);
/* compatibility routines for reduced cost or "optimality" tolerance */
INTARG _CC setepopt (REALARG newvalue,
REALARG _FAR_ *ptoosmall, REALARG _FAR_ *ptoobig);
void _CC getepopt (REALARG _FAR_ *pepopt);
/* routines to define and use the LP and MIP callback functions */
INTARG _CC setlpcallbackfunc (_CCPROC callback);
void _CC getlpcallbackfunc (_CCPROC *callback_p);
INTARG _CC setmipcallbackfunc (_CCPROC callback);
void _CC getmipcallbackfunc (_CCPROC *callback_p);
INTARG _CC getcallbackinfo (HPROBLEM lpinfo, INTARG wherefrom,
INTARG infonumber, void _FAR_ *result_p);
/* routine to write a file summarizing problem in algebraic form */
INTARG _CC lprewrite (HPROBLEM lp, LPSTR filename);
//#ifdef cplusplus
}
//#endif
154
155
1 : =0, =10
MUSA I
II.1: (USA I)
w11
w12
w21
w22
w31
w32
z1
z2
max b1
10.00
22.50
22.50
22.50
22.50
0.00
55.00
45.00
min b1
0.00
20.00
20.00
30.00
30.00
0.00
50.00
50.00
max b2
0.00
23.75
23.75
28.75
23.75
0.00
47.50
52.50
min b2
10.00
22.50
22.50
22.50
22.50
0.00
55.00
45.00
max b3
0.00
20.00
20.00
30.00
30.00
0.00
50.00
50.00
min b3
0.00
30.00
30.00
20.00
20.00
0.00
50.00
50.00
3.33
23.13
23.13
25.63
24.79
0.00
51.25
48.75
5.16
3.69
3.69
4.45
4.21
0.00
II.2: (USA I)
b1
b2
b3
max b1
32.50
45.00
22.50
min b1
20.00
50.00
30.00
max b2
23.75
52.50
23.75
min b2
32.50
45.00
22.50
max b3
20.00
50.00
30.00
min b3
30.00
50.00
20.00
26.46
48.75
24.79
5.94
3.06
4.21
0.874
0.891
0.897
CSI(i)
ASI= 0.892
CSI=0.887
156
100
100
90
80
80
70
70
60
60
51.25
50
50
40
40
30
30
20
20
10
12.5984
10
100
100
90
100
100
90
80
80
70
70
60
100
100
90
100
60
47.4359
50
40
50
40
30
30
20
20
10
10
II.1:
MUSA II
w12
w21
w22
w31
w32
z1
z2
max b1
2.50
25.00
25.00
25.00
22.50
0.00
50.00
50.00
min b1
10.00
22.50
22.50
22.50
22.50
0.00
55.00
45.00
max b2
0.00
24.00
26.00
26.00
24.00
0.00
50.00
50.00
min b2
0.00
23.33
26.67
23.33
23.33
3.33
50.00
50.00
3.13
23.71
25.04
24.21
23.08
0.83
51.25
48.75
4.73
1.06
1.83
1.58
0.73
1.67
157
b2
b3
max b1
27.50
50.00
22.50
min b1
32.50
45.00
22.50
max b2
24.00
52.00
24.00
min b3
23.33
50.00
26.67
26.83
49.25
23.92
4.20
2.99
1.96
0.905
0.963
0.967
CSI(i)
ASI= 0.939
CSI=0.945
100
100
90
80
80
70
70
60
60
51.25
50
50
40
40
30
30
20
20
10
10
100
100
90
11.646
0
100
90
80
80
70
70
50.846
50
40
30
30
20
20
10
100
60
40
10
96.5157
100
90
50
100
60
II.2:
158
.
MUSA III
w12
w21
w22
w31
w32
z1
z2
max w11
10.00
22.50
22.50
22.50
22.50
0.00
55.00
45.00
max w12
0.00
23.75
23.75
28.75
23.75
0.00
47.50
52.50
max w21
10.00
22.50
22.50
22.50
22.50
0.00
55.00
45.00
max w22
0.00
30.00
30.00
20.00
20.00
0.00
50.00
50.00
max w31
0.00
30.00
30.00
20.00
20.00
0.00
50.00
50.00
max w32
0.00
20.00
20.00
30.00
30.00
0.00
50.00
50.00
max z1
0.00
20.00
20.00
30.00
30.00
0.00
50.00
50.00
min z2
0.00
23.33
26.67
23.33
23.33
3.33
50.00
50.00
2.50
24.01
24.43
24.64
24.01
0.42
50.94
49.06
4.63
3.95
4.04
4.28
3.95
1.18
b2
b3
max w11
32.50
45.00
22.50
max w12
23.75
52.50
23.75
max w21
32.50
45.00
22.50
max w22
30.00
50.00
20.00
max w31
30.00
50.00
20.00
max w32
20.00
50.00
30.00
max z1
20.00
50.00
30.00
min z2
23.33
50.00
26.67
26.51
49.06
24.43
5.33
2.65
4.04
0.879
0.888
0.879
CSI(i)
ASI= 0.887
CSI=0.879
159
100
100
90
80
80
70
70
60
60
50.9375
50
50
40
40
30
30
20
20
10
10
100
100
90
100
90
80
80
70
70
49.7877
50
40
30
30
20
20
10
100
60
40
10
98.2942
100
90
50
100
60
9.43026
II.3:
2 : =2, =2
II.7:
w11
w12
23.5
w21
25.5
w22
23.5
w31
23.5
w32
z1
51
z2
49
F*
AFI
0.996
160
100
100
90
80
80
70
70
60
60
51
50
50
40
40
30
30
20
20
10
10
100
100
90
7.84314
100
100
100
90
90
80
80
70
92.1569
100
70
60
60
52.0408
50
50
40
40
30
30
20
20
10
10
II.4:
MUSA
II.8: ( USA)
w11
w12
w21
w22
w31
w32
z1
z2
max b1
4.00
23.00
25.00
23.00
23.00
2.00
52.00
48.00
max b2
2.00
23.25
25.25
24.25
23.25
2.00
50.50
49.50
max b3
2.00
22.50
24.50
24.50
24.50
2.00
51.00
49.00
2.67
22.92
24.92
23.92
23.58
2.00
51.17
48.83
1.15
0.38
0.38
0.80
0.80
0.00
161
II.9: ( USA)
b1
b2
b3
max b1
27.00
48.00
25.00
max b1
25.25
49.50
25.25
max b1
24.50
49.00
26.50
25.58
48.83
25.58
1.28
0.76
0.80
0.980
0.986
0.986
CSI(i)
ASI= 0.984
CSI=0.984
100
100
90
80
80
70
70
60
60
51.1667
50
50
40
40
30
30
20
20
10
10
100
100
90
100
100
90
90
80
80
70
70
51.0239
50
40
30
20
20
10
92.1824
100
50
30
60
40
10
100
60
10.4235
II.5:
162
MUSA I
II.10: (USA I)
w11
w12
w21
w22
w31
w32
z1
z2
max b1
4.00
23.00
25.00
23.00
23.00
2.00
52.00
48.00
min b1
2.00
22.50
24.50
24.50
24.50
2.00
51.00
49.00
max b2
2.00
23.25
25.25
24.25
23.25
2.00
50.50
49.50
min b2
4.00
23.00
25.00
23.00
23.00
2.00
52.00
48.00
max b3
2.00
22.50
24.50
24.50
24.50
2.00
51.00
49.00
min b3
2.00
24.50
26.50
22.50
22.50
2.00
51.00
49.00
2.67
23.13
25.13
23.63
23.46
2.00
51.25
48.75
1.03
0.74
0.74
0.89
0.84
0.00
II.11: (USA I)
b1
b2
b3
max b1
27.00
48.00
25.00
min b1
24.50
49.00
26.50
max b2
25.25
49.50
25.25
min b2
27.00
48.00
25.00
max b3
24.50
49.00
26.50
min b3
26.50
49.00
24.50
25.79
48.75
25.46
1.19
0.61
0.84
0.975
0.978
0.979
CSI(i)
ASI= 0.978
CSI=0.977
163
100
100
90
80
80
70
70
60
60
51.25
50
50
40
40
30
30
20
20
10
10
100
100
90
10.3393
100
100
100
90
90
80
80
70
92.144
100
70
60
60
51.5385
50
50
40
40
30
30
20
20
10
10
II.6:
MUSA II
w12
w21
w22
w31
w32
z1
z2
max b1
2.50
25.00
25.00
25.00
22.50
0.00
50.00
50.00
min b1
10.00
22.50
22.50
22.50
22.50
0.00
55.00
45.00
max b2
0.00
24.00
26.00
26.00
24.00
0.00
50.00
50.00
min b2
0.00
23.33
26.67
23.33
23.33
3.33
50.00
50.00
3.13
23.71
25.04
24.21
23.08
0.83
51.25
48.75
4.73
1.06
1.83
1.58
0.73
1.67
164
b2
b3
max b1
27.50
50.00
22.50
min b1
32.50
45.00
22.50
max b2
24.00
52.00
24.00
min b3
23.33
50.00
26.67
26.83
49.25
23.92
4.20
2.99
1.96
0.905
0.963
0.967
CSI(i)
ASI= 0.939
CSI=0.945
100
100
90
80
80
70
70
60
60
51.25
50
50
40
40
30
30
20
20
10
10
100
100
90
11.646
0
100
90
80
80
70
70
50.846
50
40
30
30
20
20
10
100
60
40
10
96.5157
100
90
50
100
60
II.7:
165
.
MUSA III
w12
w21
w22
w31
w32
z1
z2
max w11
4.00
23.00
25.00
23.00
23.00
2.00
52.00
48.00
max w12
2.00
24.00
24.00
24.00
24.00
2.00
50.00
50.00
max w21
4.00
23.00
25.00
23.00
23.00
2.00
52.00
48.00
max w22
2.00
24.50
26.50
22.50
22.50
2.00
51.00
49.00
max w31
2.00
24.50
26.50
22.50
22.50
2.00
51.00
49.00
max w32
2.00
22.50
24.50
24.50
24.50
2.00
51.00
49.00
max z1
2.00
22.50
24.50
24.50
24.50
2.00
51.00
49.00
min z2
2.00
23.17
25.83
23.17
23.17
2.67
51.00
49.00
2.50
23.40
25.23
23.40
23.40
2.08
51.13
48.88
0.93
0.83
0.95
0.83
0.83
0.24
b2
b3
max w11
27.00
48.00
25.00
max w12
26.00
48.00
26.00
max w21
27.00
48.00
25.00
max w22
26.50
49.00
24.50
max w31
26.50
49.00
24.50
max w32
24.50
49.00
26.50
max z1
24.50
49.00
26.50
min z2
25.17
49.00
25.83
25.90
48.63
25.48
1.04
0.52
0.83
0.974
0.973
0.977
CSI(i)
ASI= 0.977
CSI=0.975
166
100
100
90
80
80
70
70
60
60
51.125
50
50
40
40
30
30
20
20
10
10
100
100
90
100
100
90
90
80
80
70
91.8234
100
70
60
51.8852
50
60
50
40
40
30
30
20
20
100
10
9.65406
10
II.8:
167
168
1 :
169
.
8 ,
7.6
MUSA.
1.
170
.
1.
171
.
1.
172
.
1.
173
.
1.1.1.1.1
2.
174
.
2.
175
2.
176
.
2.
177
178