ÊµÀý1£ºÉú²ú¼Æ»®ÎÊÌâ
¼ÙÉèÄ³³§¼Æ»®Éú²ú¼×¡¢ÒÒÁ½ÖÖ²úÆ·£¬ÏÖ¿â´æÖ÷Òª²ÄÁÏÓÐAÀà3600¹«½ï£¬BÀà2000¹«½ï£¬CÀà3000¹«½ï¡£Ã¿¼þ¼×²úÆ·ÐèÓÃ²ÄÁÏAÀà9¹«½ï£¬BÀà4¹«½ï£¬CÀà3¹«½ï¡£Ã¿¼þÒÒ²úÆ·£¬ÐèÓÃ²ÄÁÏAÀà4¹«½ï£¬BÀà5¹«½ï£¬CÀà10¹«½ï¡£¼×µ¥Î»²úÆ·µÄÀûÈó70Ôª£¬ÒÒµ¥Î»²úÆ·µÄÀûÈó120Ôª¡£ÎÊÈçºÎ°²ÅÅÉú²ú£¬²ÅÄÜÊ¹¸Ã³§Ëù»ñµÄÀûÈó×î´ó¡£
½¨Á¢ÊýÑ§Ä£ÐÍ£º
Éèx_{1}¡¢x_{2}·Ö±ðÎªÉú²ú¼×¡¢ÒÒ²úÆ·µÄ¼þÊý¡£fÎª¸Ã³§Ëù»ñ×ÜÈó¡£
max f=70x_{1}+120x_{2}
s.t 9x_{1}+4x_{2}¡Ü3600
4x_{1}+5x_{2}¡Ü2000
3x_{1}+10x_{2}¡Ü3000
x_{1},x_{2}¡Ý0
ÊµÀý2£ºÍ¶×ÊÎÊÌâ
Ä³¹«Ë¾ÓÐÒ»Åú×Ê½ðÓÃÓÚ4¸ö¹¤³ÌÏîÄ¿µÄÍ¶×Ê£¬ÆäÍ¶×Ê¸÷ÏîÄ¿Ê±ËùµÃµÄ¾»ÊÕÒæ(Í¶Èë×Ê½ðïÁ°Ù·Ö±È)ÈçÏÂ±í£º
¹¤³ÌÏîÄ¿ÊÕÒæ±í
¹¤³ÌÏîÄ¿ 
A 
B 
C 
D 
ÊÕÒæ(%) 
15 
10 
8 
12 
ÓÉÓÚÄ³ÖÖÔÒò£¬¾ö¶¨ÓÃÓÚÏîÄ¿AµÄÍ¶×Ê²»´óÓÚÆäËû¸÷ÏîÍ¶×ÊÖ®ºÍ¶øÓÃÓÚÏîÄ¿BºÍCµÄÍ¶×ÊÒª´óÓÚÏîÄ¿DµÄÍ¶×Ê¡£ÊÔÈ·¶¨È«ÎÄ¸Ã¹«Ë¾ÊÕÒæ×î´óµÄÍ¶×Ê·ÖÅä·½°¸¡£
½¨Á¢ÊýÑ§Ä£ÐÍ£º
Éèx_{1}_{¡¢ }x_{2 }_{¡¢}x_{3 }_{¡¢}x_{4}·Ö±ð´ú±íÓÃÓÚÏîÄ¿A¡¢B¡¢C¡¢DµÄÍ¶×Ê°Ù·ÖÊý¡£
max f=0.15x_{1}+0.1x_{2}+0.08 x_{3}+0.12 x_{4}
s.t x_{1}x_{2} x_{3}
x_{4}¡Ü0
x_{2}+ x_{3} x_{4}¡Ý0
x_{1}+x_{2}+x_{3}+ x_{4}=1
x_{j}¡Ý0 j=1,2,3,4
ÊµÀý3£ºÔËÊäÎÊÌâ
ÓÐA¡¢B¡¢CÈý¸öÊ³Æ·¼Ó¹¤³§£¬¸ºÔð¹©¸ø¼×¡¢ÒÒ¡¢±û¡¢¶¡ËÄ¸öÊÐ³¡¡£Èý¸ö³§Ã¿ÌìÉú²úÊ³Æ·ÏäÊýÉÏÏÞÈçÏÂ±í£º
¹¤³§ 
A 
B 
C 
Éú²úÊý 
60 
40 
50 
ËÄ¸öÊÐ³¡Ã¿ÌìµÄÐèÇóÁ¿ÈçÏÂ±í£º
ÊÐ³¡ 
¼× 
ÒÒ 
±û 
¶¡ 
ÐèÇóÁ¿ 
20 
35 
33 
34 
´Ó¸÷³§ÔËµ½¸÷ÊÐ³¡µÄÔËÊä·Ñ(Ôª/Ã¿Ïä)ÓÉÏÂ±í¸ø³ö£º

ÊÐ ³¡ 

¼× 
ÒÒ 
±û 
¶¡ 

¹¤ ³§ 
A 
2 
1 
3 
2 
B 
1 
3 
2 
1 

C 
3 
4 
1 
1 
ÇóÔÚ»ù±¾Âú×ã¹©ÐèÆ½ºâµÄÔ¼ÊøÌõ¼þÏÂÊ¹×ÜÔËÊä·ÑÓÃ×îÐ¡¡£
½¨Á¢ÊýÑ§Ä£ÐÍ£º
Éèa_{i j}ÎªÓÉ¹¤³§iÔËµ½ÊÐ³¡jµÄ·ÑÓÃ£¬x_{i j }ÊÇÓÉ¹¤³§iÔËµ½ÊÐ³¡jµÄÏäÊý¡£b_{i}ÊÇ¹¤³§iµÄ²úÁ¿£¬d_{j}ÊÇÊÐ³¡jµÄÐèÇóÁ¿¡£
_{} _{}
b= ( 60 40 50 ) d= ( 20 35 33 34 )
_{}
s.t _{}
_{}
x_{ i j}¡Ý0
µ±ÎÒÃÇÓÃMATLABÈí¼þ×÷ÓÅ»¯ÎÊÌâÊ±£¬ËùÓÐÇómaxf µÄÎÊÌâ»¯ÎªÇómin(f )À´×÷¡£Ô¼Êøg _{i }(x)¡Ý0£¬»¯Îª ¨Cg _{i}¡Ü0À´×÷¡£
ÉÏÊöÊµÀýÈ¥µôÊµ¼Ê±³¾°£¬¹é½á³ö¹æ»®ÎÊÌâ£ºÄ¿±êº¯ÊýºÍÔ¼ÊøÌõ¼þ¶¼ÊÇ±äÁ¿xµÄÏßÐÔº¯Êý¡£
ÐÎÈç£º (1) min f^{ T} X
s.t A X¡Üb
Aeq X =beq
lb¡ÜX¡Üub
ÆäÖÐXÎªnÎ¬Î´ÖªÏòÁ¿£¬f^{ T}=[f_{1},f_{2},¡f_{n}]ÎªÄ¿±êº¯ÊýÏµÊýÏòÁ¿£¬Ð¡ÓÚµÈÓÚÔ¼ÊøÏµÊý¾ØÕóAÎªm¡Án¾ØÕó£¬bÎªÆäÓÒ¶ËmÎ¬ÁÐÏòÁ¿£¬AeqÎªµÈÊ½Ô¼ÊøÏµÊý¾ØÕó£¬beqÎªµÈÊ½Ô¼ÊøÓÒ¶Ë³£ÊýÁÐÏòÁ¿¡£lb,ubÎª×Ô±äÁ¿È¡ÖµÉÏ½çÓëÏÂ½çÔ¼ÊøµÄnÎ¬³£ÊýÏòÁ¿¡£
µ÷ÓÃ¸ñÊ½£º x=linprog(f,A,b)
x=linprog(f,A,b,Aeq,beq)
x=linprog(f,A,b,Aeq,beq,lb,ub)
x=linprog(f,A,b,Aeq,beq,lb,ub,x0)
x=linprog(f,A,b,Aeq,beq,lb,ub,x0,options)
[x,fval]=linprog(¡)
[x,
fval, exitflag]=linprog(¡)
[x,
fval, exitflag, output]=linprog(¡)
[x,
fval, exitflag, output, lambda]=linprog(¡)
ËµÃ÷£ºx=linprog(f,A,b)·µ»ØÖµxÎª×îÓÅ½âÏòÁ¿¡£
x=linprog(f,A,b,Aeq,beq) ×÷ÓÐµÈÊ½Ô¼ÊøµÄÎÊÌâ¡£ÈôÃ»ÓÐ²»µÈÊ½Ô¼Êø£¬ÔòÁîA=[ ]¡¢b=[ ] ¡£
x=linprog(f,A,b,Aeq,beq,lb,ub,x0,options) ÖÐlb ,ubÎª±äÁ¿xµÄÏÂ½çºÍÉÏ½ç£¬x0Îª³õÖµµã£¬optionsÎªÖ¸¶¨ÓÅ»¯²ÎÊý½øÐÐ×îÐ¡»¯¡£
OptionsµÄ²ÎÊýÃèÊö£º
Display ÏÔÊ¾Ë®Æ½¡£ Ñ¡Ôñ¡¯off¡¯ ²»ÏÔÊ¾Êä³ö£»Ñ¡Ôñ¡¯iter¡¯ÏÔÊ¾Ã¿Ò» ²½µü´ú¹ý³ÌµÄÊä³ö£»Ñ¡Ôñ¡¯final¡¯ ÏÔÊ¾×îÖÕ½á¹û¡£
MaxFunEvals º¯ÊýÆÀ¼ÛµÄ×î´óÔÊÐí´ÎÊý
Maxiter ×î´óÔÊÐíµü´ú´ÎÊý
TolX x´¦µÄÖÕÖ¹ÈÝÏÞ
[x,fval]=linprog(¡) ×ó¶Ë fval ·µ»Ø½âx´¦µÄÄ¿±êº¯ÊýÖµ¡£
[x,fval,exitflag,output,lambda]=linprog(f,A,b,
Aeq,beq,lb,ub,x0) µÄÊä³ö²¿·Ö£º
exitflag ÃèÊöº¯Êý¼ÆËãµÄÍË³öÌõ¼þ£ºÈôÎªÕýÖµ£¬±íÊ¾Ä¿±êº¯ÊýÊÕÁ²ÓÚ½âx´¦£»ÈôÎª¸ºÖµ£¬±íÊ¾Ä¿±êº¯Êý²»ÊÕÁ²£»ÈôÎªÁãÖµ£¬±íÊ¾ÒÑ¾´ïµ½º¯ÊýÆÀ¼Û»òµü´úµÄ×î´ó´ÎÊý¡£
output ·µ»ØÓÅ»¯ÐÅÏ¢£ºoutput.iterations±íÊ¾µü´ú´ÎÊý£»output.algorithm±íÊ¾Ëù²ÉÓÃµÄËã·¨£»outprt.funcCount±íÊ¾º¯ÊýÆÀ¼Û´ÎÊý¡£
lambda ·µ»Øx´¦µÄÀ¸ñÀÊÈÕ³Ë×Ó¡£ËüÓÐÒÔÏÂÊôÐÔ£º
lambda.lowerlambdaµÄÏÂ½ç£»
lambda.upperlambdaµÄÉÏ½ç£»
lambda.ineqlinlambdaµÄÏßÐÔ²»µÈÊ½£»
lambda.eqlinlambdaµÄÏßÐÔµÈÊ½¡£
Àý1£ºÇó½âÏßÐÔ¹æ»®ÎÊÌâ£º
max f=2x_{1}+5x_{2}
s.t _{}
ÏÈ½«Ä¿±êº¯Êý×ª»¯³É×îÐ¡ÖµÎÊÌâ£ºmin(f)= 2x_{1}5x_{2}
³ÌÐò£º
f=[2 5];
A=[1 0;0 1;1 2];
b=[4;3;8];
[x,fval]=linprog(f,A,b)
f=fval*(1)
½á¹û£º x = 2
3
fval = 19.0000
maxf = 19
Àý2£ºminf=5x_{1}x_{2}+2x_{3}+3x_{4}8x_{5}
s.t ¨C2x_{1}+x_{2}x_{3}+x_{4}3x_{5}¡Ü6
2x_{1}+x_{2}x_{3}+4x_{4}+x_{5}¡Ü7
0¡Üx_{j}¡Ü15 j=1,2,3,4,5
³ÌÐò£º
f=[5 1 2 3 8];
A=[2 1 1 1 3;2 1 1 4
1];
b=[6;7];
lb=[0 0 0 0 0];
ub=[15 15 15 15 15];
[x,fval]=linprog(f,A,b,[],[],lb,ub)
½á¹û£ºx =
0.0000
0.0000
8.0000
0.0000
15.0000
minf =
104
Àý3£ºÇó½âÏßÐÔ¹æ»®ÎÊÌâ£º
minf=5x_{1}+x_{2}+2x_{3}+3x_{4}+x_{5}
s.t ¨C2x_{1}+x_{2}x_{3}+x_{4}3x_{5}¡Ü1
2x_{1}+3x_{2}x_{3}+2x_{4}+x_{5}¡Ü2
0¡Üx_{j}¡Ü1 j=1,2,3,4,5
³ÌÐò£º
f=[5 1 2 3
1];
A=[2 1 1
1 3;2 3 1 2 1];
b=[1;2];
lb=[0 0 0 0
0];
ub=[1 1 1 1
1];
[x,fval,exitflag,output,lambda]=linprog(f,A,b,[],[],lb,ub) ÔËÐÐ½á¹û£º
Exiting: One or more of the residuals, duality gap, or total relative error
has grown 100000 times greater than its minimum value so far:
the primal appears to be infeasible (and the dual unbounded).
(The dual residual < TolFun=1.00e008.)
x = 0.0000
0.0000
1.1987
0.0000
0.0000
fval =
2.3975
exitflag =
1
output =
iterations: 7
cgiterations: 0
algorithm: 'lipsol'
lambda =
ineqlin: [2x1 double]
eqlin: [0x1 double]
upper: [5x1 double]
lower: [5x1 double]
ÏÔÊ¾µÄÐÅÏ¢±íÃ÷¸ÃÎÊÌâÎÞ¿ÉÐÐ½â¡£Ëù¸ø³öµÄÊÇ¶ÔÔ¼ÊøÆÆ»µ×îÐ¡µÄ½â¡£
Àý4£ºÇó½âÊµÀý1µÄÉú²ú¼Æ»®ÎÊÌâ
½¨Á¢ÊýÑ§Ä£ÐÍ£º
Éèx_{1}¡¢x_{2}·Ö±ðÎªÉú²ú¼×¡¢ÒÒ²úÆ·µÄ¼þÊý¡£fÎª¸Ã³§Ëù»ñ×ÜÈó¡£
max f=70x_{1}+120x_{2}
s.t 9x_{1}+4x_{2}¡Ü3600
4x_{1}+5x_{2}¡Ü2000
3x_{1}+10x_{2}¡Ü3000
x_{1},x_{2}¡Ý0
½«Æä×ª»»Îª±ê×¼ÐÎÊ½£º
min f=70x_{1}120x_{2}
s.t 9x_{1}+4x_{2}¡Ü3600
4x_{1}+5x_{2}¡Ü2000
3x_{1}+10x_{2}¡Ü3000
x_{1},x_{2}¡Ý0
³ÌÐò£º f=[70
120];
A=[9
4 ;4 5;3 10 ];
b=[3600;2000;3000];
lb=[0
0];
ub=[];
[x,fval,exitflag]=linprog(f,A,b,[],[],lb,ub)
maxf=fval
½á¹û£º x =
200.0000
240.0000
fval =
4.2800e+004
exitflag =
1
maxf =
4.2800e+004
Àý5£ºÇó½âÊµÀý2
½¨Á¢ÊýÑ§Ä£ÐÍ£º
max f=0.15x_{1}+0.1x_{2}+0.08 x_{3}+0.12 x_{4}
s.t x_{1}x_{2} x_{3}
x_{4}¡Ü0
x_{2}+ x_{3} x_{4}¡Ý0
x_{1}+x_{2}+x_{3}+ x_{4}=1
x_{j}¡Ý0 j=1,2,3,4
½«Æä×ª»»Îª±ê×¼ÐÎÊ½£º
min z=0.15x_{1}0.1x_{2}0.08 x_{3}0.12 x_{4}
s.t x_{1}x_{2} x_{3}
x_{4}¡Ü0
x_{2} x_{3}+ x_{4}¡Ü0
x_{1}+x_{2}+x_{3}+ x_{4}=1
x_{j}¡Ý0 j=1,2,3,4
³ÌÐò£º f
= [0.15;0.1;0.08;0.12];
A = [1 1 1 1
0 1 1 1];
b = [0; 0];
Aeq=[1 1 1 1];
beq=[1];
lb = zeros(4,1);
[x,fval,exitflag]
= linprog(f,A,b,Aeq,beq,lb)
f=fval
½á¹û£ºx =
0.5000
0.2500
0.0000
0.2500
fval =
0.1300
exitflag =
1
f =
0.1300
¼´4¸öÏîÄ¿µÄÍ¶×Ê°Ù·ÖÊý·Ö±ðÎª50%£¬25%£¬0, 25%Ê±¿ÉÊ¹¸Ã¹«Ë¾»ñµÃ×î´óµÄÊÕÒæ£¬Æä×î´óÊÕÒæ¿Éµ½´ï13%¡£¹ý³ÌÕý³£ÊÕÁ²¡£
Àý6£ºÇó½âÊµÀý3
½¨Á¢ÊýÑ§Ä£ÐÍ£º
Éèa_{i j}ÎªÓÉ¹¤³§iÔËµ½ÊÐ³¡jµÄ·ÑÓÃ£¬x_{i j }ÊÇÓÉ¹¤³§iÔËµ½ÊÐ³¡jµÄÏäÊý¡£b_{i}ÊÇ¹¤³§iµÄ²úÁ¿£¬d_{j}ÊÇÊÐ³¡jµÄÐèÇóÁ¿¡£
_{} _{}
b= ( 60 40 50 )^{T} d= ( 20 35 33 34 )^{T}
_{}
s.t _{}
_{}
x_{ i j}¡Ý0
³ÌÐò£º A=[2
1 3 2;1 3 2 1;3 4 1 1];
f=A(:);
B=[
1 0 0 1 0 0 1 0 0 1 0 0
0
1 0 0 1 0 0 1 0 0 1 0
0
0 1 0 0 1 0 0 1 0 0 1];
D=[1
1 1 0 0 0 0 0 0 0 0 0
0
0 0 1 1 1 0 0 0 0 0 0
0
0 0 0 0 0 1 1 1 0 0 0
0
0 0 0 0 0 0 0 0 1 1 1];
b=[60;40;50];
d=[20;35;33;34];
lb=zeros(12,1);
[x,fval,exitflag]=linprog(f,B,b,D,d,lb)
½á¹û£º x =
0.0000
20.0000
0.0000
35.0000
0.0000
0.0000
0.0000
0.0000
33.0000
0.0000
18.4682
15.5318
fval =
122.0000
exitflag =
1
¼´ÔËÊä·½°¸Îª£º¼×ÊÐ³¡µÄ»õÓÉB³§ËÍ20Ïä£»ÒÒÊÐ³¡µÄ»õÓÉA³§ËÍ35Ïä£»±ûÉÌ³¡µÄ»õÓÉC³§ËÍ33Ïä£»¶¡ÊÐ³¡µÄ»õÓÉB³§ËÍ18Ïä£¬ÔÙÓÉC³§ËÍ16Ïä¡£
×îµÍ×ÜÔË·ÑÎª£º122Ôª¡£
ÊµÀý1 ±íÃæ»ýÎª36Æ½·½Ã×µÄ×î´ó³¤·½ÌåÌå»ý¡£
½¨Á¢ÊýÑ§Ä£ÐÍ£º
³ÌÐò£ºÊ×ÏÈ½¨Á¢Ä¿±êº¯ÊýÎÄ¼þff8.mÎÄ¼þ£º
function f=ff8(x)
f=exp(x(1))*(6*x(1)^2+3*x(2)^2+2*x(1)*x(2)+4*x(2)+1);
ÔÙ½¨Á¢·ÇÏßÐÔµÄÔ¼ÊøÌõ¼þÎÄ¼þ£ºff8g.m
function
[c,g]=ff8g(x)
c(1)=x(1)*x(2)x(1)x(2)+1£»
c(2)=2*x(1)*x(2)5£»
g=[];
È»ºóÔÚ¹¤×÷¿Õ¼ä¼üÈë³ÌÐò£º
x0=[1,1];
nonlcon=@ff8g
[x, fval] =fmincon(@ff8,x0,[],[],[],[],[],[], nonlcon)
½á¹û£º x
=
2.5000 1.0000
fval =
3.3244
exitflag =
1
µ±ÓÐµÈÊ½Ô¼ÊøÊ±£¬Òª·ÅÔÚ¾ØÕógµÄÎ»ÖÃ£¬ÈçÉÏÀýÖÐ¼ÓµÈÊ½Ô¼Êø£º
x(1)+2*x(1)=0
³ÌÐò£ºÊ×ÏÈ½¨Á¢ fun1.mÎÄ¼þ£º
function[c,g]=ff8g1(x)
c(1)=x(1)*x(2)x(1)x(2)+1£»
c(2)=2*x(1)*x(2)5£»
g(1)=x(1)+2*x(2);
È»ºóÔÚ¹¤×÷¿Õ¼ä¼üÈë³ÌÐò£º
x0=[1,1];
nonlcon=@ff8g1;
[x, fval,exitflag] =fmincon(@ff8,x0,[],[],[],[],[],[], nonlcon)
½á¹û£º x
=
2.2361 1.1180
fval =
3.6576
exitflag =
1
ÊýÑ§Ä£ÐÍ£º
_{}
ÆäÖÐHÎª¶þ´ÎÐÍ¾ØÕó£¬A¡¢Aeq·Ö±ðÎª²»µÈÊ½Ô¼ÊøÓëµÈÊ½Ô¼ÊøÏµÊý¾ØÕó£¬f,b,beq,lb,ub,xÎªÏòÁ¿¡£
Çó½â¶þ´Î¹æ»®ÎÊÌâº¯ÊýÎªquadprog( )
µ÷ÓÃ¸ñÊ½£º X=
quadprog(H,f,A,b)
X=
quadprog(H,f,A,b,Aeq,beq)
X=
quadprog(H,f,A,b,Aeq,beq,lb,ub)
X=
quadprog(H,f,A,b,Aeq,beq,lb,ub,x0)
X=
quadprog(H,f,A,b,Aeq,beq,lb,ub,x0,options)
[x,fval]=
quadprog(¡)
[x,fval,exitflag]=
quadprog(¡)
[x,fval,exitflag,output]=
quadprog(¡)
[x,fval,exitflag,output,lambda]=
quadprog(¡)
ËµÃ÷£ºÊäÈë²ÎÊýÖÐ£¬x0Îª³õÊ¼µã£»ÈôÎÞµÈÊ½Ô¼Êø»òÎÞ²»µÈÊ½Ô¼Êø£¬¾Í½«ÏàÓ¦µÄ¾ØÕóºÍÏòÁ¿ÉèÖÃÎª¿Õ£»optionsÎªÖ¸¶¨ÓÅ»¯²ÎÊý¡£Êä³ö
²ÎÊýÖÐ£¬xÊÇ·µ»Ø×îÓÅ½â£»fvalÊÇ·µ»Ø½âËù¶ÔÓ¦µÄÄ¿±êº¯ÊýÖµ£»exitflagÊÇÃèÊöËÑË÷ÊÇ·ñÊÕÁ²£»outputÊÇ·µ»Ø°üº¬ÓÅ»¯ÐÅÏ¢µÄ½á¹¹¡£LambdaÊÇ·µ»Ø½âxÈë°üº¬À¸ñÀÊÈÕ³Ë×ÓµÄ²ÎÊý¡£
Àý1£ºÇó½â£º¶þ´Î¹æ»®ÎÊÌâ
min f(x)= x_{1}3x_{2}+3x_{1}^{2}+4x_{2}^{2}2x_{1}x_{2}
s.t 2x_{1}+x_{2}¡Ü2
x_{1}+4x_{2}¡Ü3
³ÌÐò£º f=[1;3]
H=[6
2;2 8]
A=[2
1;1 4]
b=[2;3]
[X,fval,exitflag]=quadprog(H,f,A,b)
½á¹û£º X =
0.0455
0.3636
fval =
0.5682
exitflag =
1
Àý2£ºÇó½â£º¶þ´Î¹æ»®ÎÊÌâ
min +x_{1}^{2}+2x_{2}^{2}2x_{1}x_{2}4x_{1}12x_{2}
s.t x_{1}+x_{2}¡Ü2
x_{1}+2x_{2}¡Ü2
2x_{1}+x_{2}¡Ü3
0¡Üx_{1}, 0¡Üx_{2}
³ÌÐò£º H=[2 2;2 4];
f=[4;12];
A=[1
1;1 2;2 1];
b=[2;2;3];
lb=zeros(2,1);
[x,fval,exitflag]=quadprog(H,f,A,b,[],[],lb)
½á¹û£º x
=
0.6667
1.3333
fval =
16.4444
exitflag =
1
¶àÄ¿±ê¹æ»®¶¨ÒåÎªÔÚÒ»×éÔ¼ÊøÏÂ£¬¶à¸ö²»Í¬µÄÄ¿±êº¯Êý½øÐÐÓÅ»¯Éè¼Æ¡£
ÊýÑ§Ä£ÐÍ£º
_{}
s.t g_{j} (x) ¡Ü0 j=1, 2, ¡ ,k
ÆäÖÐx=(x_{1 },x_{2 },
¡ ,x_{n})ÎªÒ»¸önÎ¬ÏòÁ¿£»f_{i}(x)ÎªÄ¿±êº¯Êý£¬i=1, 2, ¡ ,m; g_{j} (x)ÎªÏµÍ³Ô¼Êø,
j=1, 2, ¡ ,k¡£
µ±Ä¿±êº¯Êý´¦ÓÚ³åÍ»×´Ì¬Ê±£¬²»´æÔÚ×îÓÅ½âÊ¹ËùÓÐÄ¿±êº¯ÊýÍ¬Ê±´ïµ½×îÓÅ¡£ÓÚÊÇÎÒÃÇÑ°ÇóÓÐÐ§½â(ÓÖ³Æ·ÇÁÓ½â»ò·ÇÖ§Åä½â»òÅÁÀÛÍÐ½â)
¶¨Òå£ºÈô_{}(_{}¡Ê¦¸)µÄÁÚÓòÄÚ²»´æÔÚ¦¤x£¬Ê¹µÃ(_{}+¦¤x¡Ê¦¸)£¬ÇÒ
_{}
Ôò³Æ_{}ÎªÓÐÐ§½â¡£
¶àÄ¿±ê¹æ»®ÎÊÌâµÄ¼¸ÖÖ³£ÓÃ½â·¨£º
(1) Ö÷ÒªÄ¿±ê·¨
Æä»ù±¾Ë¼ÏëÊÇ£ºÔÚ¶àÄ¿±êÎÊÌâÖÐ£¬¸ù¾ÝÎÊÌâµÄÊµ¼ÊÇé¿ö£¬È·¶¨Ò»¸öÄ¿±êÎªÖ÷ÒªÄ¿±ê£¬¶ø°ÑÆäÓàÄ¿±ê×÷Îª´ÎÒªÄ¿±ê£¬²¢ÇÒ¸ù¾Ý¾Ñé£¬Ñ¡È¡Ò»¶¨µÄ½çÏÞÖµ¡£ÕâÑù¾Í¿ÉÒÔ°Ñ´ÎÒªÄ¿±ê×÷ÎªÔ¼ÊøÀ´´¦Àí£¬ÓÚÊÇ¾Í½«ÔÀ´µÄ¶àÄ¿±êÎÊÌâ×ª»¯ÎªÒ»¸öÔÚÐÂµÄÔ¼ÊøÏÂµÄµ¥Ä¿±ê×îÓÅ»¯ÎÊÌâ¡£
(2) ÏßÐÔ¼ÓÈ¨ºÍ·¨
Æä»ù±¾Ë¼ÏëÊÇ£º°´ÕÕ¶àÄ¿±êf_{i}(x) (i=1, 2, ¡ ,m)µÄÖØÒª³Ì¶È£¬·Ö±ð³ËÒÔÒ»×éÈ¨ÏµÊý¦Ë_{j}(j=1, 2, ¡
,m)È»ºóÏà¼Ó×÷ÎªÄ¿±êº¯Êý¶ø¹¹³Éµ¥Ä¿±ê¹æ»®ÎÊÌâ¡£¼´ _{}£¬ÆäÖÐ_{}
Àý1£ºÄ³¸ÖÌú³§×¼±¸ÓÃ5000ÍòÓÃÓÚA¡¢BÁ½¸öÏîÄ¿µÄ¼¼Êõ¸ÄÔìÍ¶×Ê¡£Éèx_{1}¡¢x_{2}·Ö±ð±íÊ¾·ÖÅä¸øÏîÄ¿A¡¢BµÄÍ¶×Ê¡£¾Ý×¨¼ÒÔ¤¹À¼Æ£¬Í¶×ÊÏîÄ¿A¡¢BµÄÄêÊÕÒæ·Ö±ðÎª70%ºÍ66%¡£Í¬Ê±£¬Í¶×Êºó×ÜµÄ·çÏÕËðÊ§½«Ëæ×Å×ÜÍ¶×ÊºÍµ¥ÏîÍ¶×ÊµÄÔö¼Ó¶øÔö¼Ó£¬ÒÑÖª×ÜµÄ·çÏÕËðÊ§Îª0.02x_{1}^{2}+0.01x_{2}^{2}+0.04(x_{1}+x_{2})^{2}£¬ÎÊÓ¦ÈçºÎ·ÖÅä×Ê½ð²ÅÄÜÊ¹ÆÚÍûµÄÊÕÒæ×î´ó£¬Í¬Ê±Ê¹·çÏÕËðÊ§Îª×îÐ¡¡£
½¨Á¢ÊýÑ§Ä£ÐÍ
max f_{1}(x)=70x_{1}+66x_{2}
min f_{2}(x)= 0.02x_{1}^{2}+0.01x_{2}^{2}+0.04(x_{1}+x_{2})^{2}
s.t x_{1}+x_{2}¡Ü5000
0¡Üx1, 0¡Üx2
ÏßÐÔ¼ÓÈ¨¹¹ÔìÄ¿±êº¯Êý£º max f=0.5f_{1}(x) ¨C0.5f_{2}(x)
»¯×îÐ¡ÖµÎÊÌâ£º min (f)= 0.5f_{1}(x) +0.5f_{2}(x)
Ê×ÏÈ±à¼Ä¿±êº¯ÊýMÎÄ¼þff11.m
function f=ff11(x)
f=0.5*(70*x(1)+66*x(2))+0.5*(0.02*x(1)^2+0.01*x(2)^2+0.04*(x(1)+x(2))^2);
µ÷ÓÃµ¥Ä¿±ê¹æ»®Çó×îÐ¡ÖµÎÊÌâµÄº¯Êý
x0=[1000,1000]
A=[1
1];
b=5000;
lb=zeros(2,1);
[x,fval,
exitflag]=fmincon(@ff11,x0, A,b,[],[],lb,[])
f1=70*x(1)+66*x(2)
f2=0.02*x(1)^2+0.01*x(2)^2+0.04*(x(1)+x(2))^2
½á¹û£ºx =
307.1428 414.2857
fval =
1.2211e+004
exitflag =
1
f1 = 4.8843e+004
f2 = 2.4421e+004
(3) ¼«´ó¼«Ð¡·¨
Æä»ù±¾Ë¼ÏëÊÇ£º¶ÔÓÚ¼«Ð¡»¯µÄ¶àÄ¿±ê¹æ»®£¬ÈÃÆäÖÐ×î´óµÄÄ¿±êº¯ÊýÖµ¾¡¿ÉÄÜµØÐ¡Îª´Ë£¬¶ÔÃ¿¸ö x¡ÊR£¬ÎÒÃÇÏÈÇóÖîÄ¿±êº¯ÊýÖµf_{i}(x)µÄ×î´óÖµ£¬È»ºóÔÙÇóÕâÐ©×î´óÖµÖÐµÄ×îÐ¡Öµ¡£¼´¹¹Ôìµ¥Ä¿±ê¹æ»®£º
_{}
(4) Ä¿±ê´ïµ½·¨
¶ÔÓÚ¶àÄ¿±ê¹æ»®£º_{}
s.t g_{j} (x) ¡Ü0 j=1, 2, ¡ ,n
ÏÈÉè¼ÆÓëÄ¿±êº¯ÊýÏàÓ¦µÄÒ»×éÄ¿±êÖµÀíÏë»¯ÏòÁ¿_{}£¬
ÔÙÉè¦ÃÎªÒ»ËÉ³ÚÒò×Ó±êÁ¿¡£Éè_{}ÎªÈ¨ÖµÏµÊýÏòÁ¿¡£
ÓÚÊÇ¶àÄ¿±ê¹æ»®ÎÊÌâ»¯Îª£º
_{}
ÔÚMatlabµÄÓÅ»¯¹¤¾ßÏäÖÐ£¬fgoalattainº¯ÊýÓÃÓÚ½â¾ö´ËÀàÎÊÌâ¡£
ÆäÊýÑ§Ä£ÐÍÐÎÊ½Îª£º
min
¦Ã
F(x)weight
¡¤¦Ã¡Ügoal
c(x)
¡Ü0
ceq(x)=0
A x¡Üb
Aeq x=beq
lb¡Üx¡Üub
ÆäÖÐ£¬x,weight,goal,b,beq,lbºÍubÎªÏòÁ¿£¬AºÍAeqÎª¾ØÕó£¬c(x),ceq(x)ºÍF(x)Îªº¯Êý£¬
µ÷ÓÃ¸ñÊ½£º
x=fgoalattain(F,x0,goal,weight)
x=fgoalattain(F,x0,goal,weight,A,b)
x=fgoalattain(F,x0,goal,weight,A,b,Aeq,beq)
x=fgoalattain(F,x0,goal,weight,A,b,Aeq,beq,lb,ub)
x=fgoalattain(F,x0,goal,weight,A,b,Aeq,beq,lb,ub,nonlcon)
x=fgoalattain(F,x0,goal,weight,A,b,Aeq,beq,lb,ub,nonlcon,options)
x=fgoalattain(F,x0,goal,weight,A,b,Aeq,beq,lb,ub,nonlcon,options,P1,P2)
[x,fval]=fgoalattain(¡)
[x,fval,attainfactor]=fgoalattain(¡)
[x,fval,attainfactor,exitflag,output]=fgoalattain(¡)
[x,fval,attainfactor,exitflag,output,lambda]=fgoalattain(¡)
ËµÃ÷£ºFÎªÄ¿±êº¯Êý£»x0Îª³õÖµ£»goalÎªF´ïµ½µÄÖ¸¶¨Ä¿±ê£»weightÎª²ÎÊýÖ¸¶¨È¨ÖØ£»A¡¢bÎªÏßÐÔ²»µÈÊ½Ô¼ÊøµÄ¾ØÕóÓëÏòÁ¿£»Aeq¡¢beqÎªµÈÊ½Ô¼ÊøµÄ¾ØÕóÓëÏòÁ¿£»lb¡¢ubÎª±äÁ¿xµÄÉÏ¡¢ÏÂ½çÏòÁ¿£»nonlconÎª¶¨Òå·ÇÏßÐÔ²»µÈÊ½Ô¼Êøº¯Êýc(x)ºÍµÈÊ½Ô¼Êøº¯Êýceq(x)£»optionsÖÐÉèÖÃÓÅ»¯²ÎÊý¡£
x·µ»Ø×îÓÅ½â£»fval·µ»Ø½âx´¦µÄÄ¿±êº¯ÊýÖµ£»attainfactor·µ»Ø½âx´¦µÄÄ¿±ê´ïµ½Òò×Ó£»exitflagÃèÊö¼ÆËãµÄÍË³öÌõ¼þ£»output·µ»Ø°üº¬ÓÅ»¯ÐÅÏ¢µÄÊä³ö²ÎÊý£»lambda·µ»Ø°üº¬À¸ñÀÊÈÕ³Ë×ÓµÄ²ÎÊý¡£
Àý2£ºÄ³»¯¹¤³§ÄâÉú²úÁ½ÖÖÐÂ²úÆ·AºÍB£¬ÆäÉú²úÉè±¸·ÑÓÃ·Ö±ðÎª2ÍòÔª/¶ÖºÍ5ÍòÔª/¶Ö¡£ÕâÁ½ÖÖ²úÆ·¾ù½«Ôì³É»·¾³ÎÛÈ¾£¬ÉèÓÉ¹«º¦ËùÔì³ÉµÄËðÊ§¿ÉÕÛËãÎªAÎª4ÍòÔª/¶Ö£¬BÎª1ÍòÔª/¶Ö¡£ÓÉÓÚÌõ¼þÏÞÖÆ£¬¹¤³§Éú²ú²úÆ·AºÍBµÄ×î´óÉú²úÄÜÁ¦¸÷ÎªÃ¿ÔÂ5¶ÖºÍ6¶Ö£¬¶øÊÐ³¡ÐèÒªÕâÁ½ÖÖ²úÆ·µÄ×ÜÁ¿Ã¿ÔÂ²»ÉÙÓÚ7¶Ö¡£ÊÔÎÊ¹¤³§ÈçºÎ°²ÅÅÉú²ú¼Æ»®£¬ÔÚÂú×ãÊÐ³¡ÐèÒªµÄÇ°ÌáÏÂ£¬Ê¹Éè±¸Í¶×ÊºÍ¹«º¦ËðÊ§¾ù´ï×îÐ¡¡£¸Ã¹¤³§¾ö²ßÈÏÎª£¬ÕâÁ½¸öÄ¿±êÖÐ»·¾³ÎÛÈ¾Ó¦ÓÅÏÈ¿¼ÂÇ£¬Éè±¸Í¶×ÊµÄÄ¿±êÖµÎª20ÍòÔª£¬¹«º¦ËðÊ§µÄÄ¿±êÎª12ÍòÔª¡£
½¨Á¢ÊýÑ§Ä£ÐÍ£º
Éè¹¤³§Ã¿ÔÂÉú²ú²úÆ·AÎªx_{1}¶Ö£¬BÎªx_{2}¶Ö£¬Éè±¸Í¶×Ê·ÑÎªf(x_{1}),¹«º¦ËðÊ§·ÑÎªf(x_{2}),ÔòÎÊÌâ±í´ïÎª¶àÄ¿±êÓÅ»¯ÎÊÌâ£º
min f_{1}(x)=2x_{1}+5x_{2}
min f_{2}(x)=4x_{1}+x_{2}
s.t x_{1}¡Ü5
x_{2}¡Ü6
x_{1}+x_{2}¡Ý7
x_{1} ,x_{2}¡Ý0
³ÌÐò£ºÊ×ÏÈ±à¼Ä¿±êº¯ÊýMÎÄ¼þff12.m
function
f=ff12(x)
f(1)=2*x(1)+5*x(2);
f(2)= 4*x(1) +x(2);
°´¸ø¶¨Ä¿±êÈ¡£º
goal=[20,12];
weight=[20,12];
x0=[2,2]
A=[1
0; 0 1;1 1];
b=[5 6 7];
lb=zeros(2,1);
[x,fval,attainfactor,exitflag]=fgoalattain(@ff12,x0,goal,weight,A,b,[],[],lb,[])
½á¹û£º x =
2.9167 4.0833
fval =
26.2500 15.7500
attainfactor =
0.3125
exitflag =
1
Àý3£ºÄ³¹¤³§Éú²úÁ½ÖÖ²úÆ·¼×ºÍÒÒ£¬ÒÑÖªÉú²ú¼×²úÆ·100¹«½ïÐè6¸ö¹¤Ê±£¬Éú²úÒÒ²úÆ·100¹«½ïÐè8¸ö¹¤Ê±¡£¼Ù¶¨Ã¿ÈÕ¿ÉÓÃµÄ¹¤Ê±ÊýÎª48¹¤Ê±¡£ÕâÁ½ÖÖ²úÆ·Ã¿100¹«½ï¾ù¿É»ñÀû500Ôª¡£ÒÒ²úÆ·½ÏÊÜ»¶Ó£¬ÇÒÈôÓÐ¸öÀÏ¹Ë¿ÍÒªÇóÃ¿ÈÕ¹©Ó¦ËûÒÒÖÖ²úÆ·500¹«½ï£¬ÎÊÓ¦ÈçºÎ°²ÅÅÉú²ú¼Æ»®£¿
½¨Á¢ÊýÑ§Ä£ÐÍ£º
ÉèÉú²ú¼×¡¢ÒÒÁ½ÖÖ²úÆ·µÄÊýÁ¿·Ö±ðÎªxºÍx(ÒÔ¹«½ï¼Æ)£¬ÒªÊ¹Éú²ú¼Æ»®±È½ÏºÏÀí£¬Ó¦¿¼ÂÇÓÃ¹¤Ê±¾¡Á¿ÉÙ£¬»ñÀû¾¡Á¿´ó£¬
ÆäÓÃ¶àÄ¿±ê¹æ»®ÃèÊöÕâ£º
min f_{1}=6x_{1}+8x_{2}
max f_{2}=100(x_{1}+x_{2})
max f_{3}=x_{2}
s.t 6x_{1}+8x_{2}¡Ü48
x_{2}¡Ý5
x_{1} ,x_{2}¡Ý0
½«Æä±ê×¼»¯Îª£º
min f_{1}=6x_{1}+8x_{2}
min  f_{2}=100(x_{1}+x_{2})
min  f_{3}=x_{2}
s.t 6x_{1}+8x_{2}¡Ü48
x_{2}¡Ü5
x_{1} ,x_{2}¡Ý0
³ÌÐò£ºÊ×ÏÈ±à¼Ä¿±êº¯ÊýMÎÄ¼þff13.m
function
f=ff13(x)
f(1)=6*x(1)+8*x(2);
&nblllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll ÿ!E llllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll