You are on page 1of 186

,2001

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)

Jacquet-Lagrze and Siskos (2001)


4 :
1. .
.
:

(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)

[0,1] (Jacquet-Lagrze and Siskos,


1982). 2.2
i:

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

() (weak order relation) 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

: (m=3, l=7), r =14 (m=10, l=16), r =352 (m=10, l=17), r =572


(Klee, 1964).

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.

(u1, u2) U u1 u2 . MV,


()
.
, ui (ui).

(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
:

] [

] [

u g (a j ) > u g (a j+1 ) aj aj+1 (),


u g (a j ) = u g (a j+1 ) aj aj+1 ().

(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)

2: (4.6), (4.7) (2.3)


:
n

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)

u i (g ik ) |R|=m (aj). , m-1 (4.15)


n

(
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

u[g(aj)]= u i [g i (a j )] + -(aj)- +(aj) aAR. (4.22)


i =1

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

2*m -(aj) +(aj). , m-1


(4.25) (4.26).
. si >0
n

(
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

u[g(aj)]= pi u i [g i (a j )] + -(aj)- +(aj) aAR. (4.28)


i =1

(aj, aj+1)=piu[g(aj)]+ -(aj)- +(aj) - piu[g(aj+1)]- -(aj+1)+ +(aj+1)

(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)

pi 0, i=1,2,,n, -(aj) 0, +(aj) 0 j=1,2,,m

2*m -(aj) +(aj), n


pi. , m-1 (4.31)
(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) :

(a, b)= u[g(a)]- u[g(aj+1)]+zab, a b

(4.33)

(a, b)= u[g(a)]- u[g(aj+1)]+zab -zba a b

(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

u i g |P|+2*|| zab, |P|


(4.33) || (4.34). , [(m*(mn

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) :

(a, b)= u[g(a)]- u[g(b)]

(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

|P|+2*|| ab. , |P|+2*||

(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

2*m -(aj) +(aj). , m-1


(4.25) (4.26).
. si >0

(
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

|C1|+|Cq|+2*(m-|C1|-|Cq|)=2*m-|C1|-|Cq| -(aj) +(aj), |C1|, |Cq|



. , 2*m-|C1|-|Cq| (4.58),
53

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*)

(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,..., 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

(aj, aj+1)= u[g(aj)]+ -(aj)- +(aj) - u[g(aj+1)]- -(aj+1)+ +(aj+1)

(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

j j=1,2,...,n pi=1 i=j pi=0 ij.


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

Beuthe and Scannela (1996)


MP1.
MP2
(+s), ,
.
s=si i =1,2,,n. , ,

.
z*=0,

62

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 :

y*m y*m +1 y m p y m +1 m = 1,2,..., 1


*k
x i x *ik +1 x ik p y m +1 k = 1,2,..., i 1 i = 1,2,..., n

(6.2)

p . (Grigoroudis and Siskos, 2001)

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

w ik = b i x *ik +1 b i x *ik k = 1,2,..., i 1 i = 1,2,..., n

(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):

y*m < y*m +1 y m p y m +1 m = 1,2,..., 1


*k
x i < x *ik +1 x ik p y m +1 k = 1,2,..., i 1 i = 1,2,..., n

(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)

Sik wik, w ikj


i
j , k
i, i i
, ns
.
wik
.
i
:

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

AFI, ASI, CSI

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

7.4: AFI, ASI CSI


( MUSA, =2)

ASI CSI.
.
AFI .
wik zm
MUSA. , ,

i(i-1). .
ASI CSI ,
, , [0,
max]. ,
.
MUSA I
MUSA III ( MUSA II

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

7.5: AFI, ASI CSI


( 1.)
7.5 MUSA
MUSA I ASI CSI.
MUSA II
CSI. AFI

.
,


MUSA
MUSA I.
(2.1, 2., 2., 2.)
MUSA =2.
AFI, ASI CSI :

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

7.6: AFI, ASI CSI


( MUSA, =2)

ASI
CSI. , AFI
: i
ASI CSI,
AFI.
. ,

,
(
, 2000).
,
MUSA I MUSA III (
MUSA II
).
2.
:

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.7: AFI, ASI CSI


( 2.)

7.7 MUSA III


MUSA I
MUSA .
.

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%

7.8: ASI CSI


( MUSA)

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%

7.9: ASI CSI


(MUSA I)
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%

7.10: ASI CSI


(MUSA III)
103

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

for (i=0;i<n+1;i++)// n*criteria's titles+oliki


cfin>>nothing;
113

. 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

//***********The main part for


coeff(M,n,t,T);

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;

//initialize c of ojective function


//c of objective function

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';

// L's for <=, E's for =, G's for >=

min_or_max ="MIN"; //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);
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++

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);
} //for (i_n=0;i_n<n;i_n++)
break;
case 2:
//********MUSA II ***********************************
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++)
{
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

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++)
break;
case 3:
//********MUSA III ***********************************
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;
122

. C++
for(i_a=0;i_a<a_total-1;i_a++)

//for [max]F'=z[m],

m=1,...,a_total
{
no_sol++;

//0 is the initial solution

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

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);
} //for(i=0;i<a_total-1;i++)
//*******************************
l_k=0;
123

. 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,

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);
} //for (k=0;k<a[i]-1;k++)
} //for(i=0;i<n;i++)
124

. 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;

//0 is the initial solution


//initialize c of objective F

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';

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_MUSAIV(x, gamma_criteria, gamma, no_sol);
init_var_first(w, z, no_sol);
break;
default:
//********The General Model***********************************
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;
no_var=no_of_w+no_of_z+2*M;
no_con=M+3;
no_sol=0;
for (i_n=0;i_n<n;i_n++)
{
no_sol++;

//set b=F*+

//0 is the initial solution

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

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);
} //for (i_n=0;i_n<n;i_n++)
} //the end of switch

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

//we asume that


//mid

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;

//for the cfin

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<<" ";

//The column headings

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;

//set l= with the total number 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;

//set = -1 the s_plus coefficient


//set = 1 the s_minus coefficient

}
l=no_of_w;

//set l= with the total number of w'

for (m=0;m<a_total-1;m++)
{
A[M][l++]=1;
//l++;
}

//set the sum of z'

l=0;

//set l=0, the first column


147

. 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

II.3: (USA II)


w11

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

II.4: (USA II)


b1

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

II.5: (USA III)


w11

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

II.6: (USA III)


b1

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

II.12: (USA II)


w11

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

II.13: (USA II)


b1

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

II.14: (USA III)


w11

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

II.15: (USA III)


b1

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

You might also like