1£® ½«ÏßÐԹ滮»¯Îªµä·¶ÐÎʽ£¬´Ó¶ø¿ÉÒԵõ½Ò»¸ö³õʼ»ù±¾¿ÉÐнâx(0)(³õʼ¶¥µã)£¬½«Ëü
×÷Ϊµü´ú¹ý³ÌµÄ³ö·¢µã£¬ÆäÄ¿±êֵΪz(x(0))¡£
2£® ѰÕÒÒ»¸ö»ù±¾¿ÉÐнâx(1)£¬Ê¹z(x(1))¡Üz(x(0))¡£·½·¨ÊÇͨ¹ýÏûÈ¥·¨½«²úÉúx(0)µÄµä·¶ÐÎ
ʽ»¯Îª²úÉúx(1)µÄµä·¶ÐÎʽ¡£
3£® ¼ÌÐøÑ°ÕҽϺõĻù±¾¿ÉÐнâx(2)£¬x(3)£¬¡£¬Ê¹Ä¿±êº¯ÊýÖµ²»¶Ï¸Ä½ø£¬¼´z(x(1))¡Ýz(x(2))
¡Ýz(x(3)) ¡Ý¡¡£µ±Ä³¸ö»ù±¾¿ÉÐнâÔÙÒ²²»Äܱ»ÆäËü»ù±¾¿ÉÐнâ¸Ä½øÊ±£¬Ëü¾ÍÊÇËùÇóµÄ×îÓŽ⡣
MatlabÓÅ»¯¹¤¾ßÏäÖвÉÓõÄÊÇͶӰ·¨£¬ËüÊǵ¥´¿Ð稵ÄÒ»ÖÖ±äÖÖ¡£ 9.2.2.2 Ïà¹Øº¯Êý½éÉÜ
linprogº¯Êý
¹¦ÄÜ£ºÇó½âÏßÐԹ滮ÎÊÌâ¡£ ÊýѧģÐÍ£º
ÆäÖÐf, x, b, beq, lbºÍubΪÏòÁ¿£¬A ºÍAeqΪ¾ØÕó¡£ Óï·¨£º
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)Çó½âÎÊÌâ min f'*x£¬Ô¼ÊøÌõ¼þΪA*x <= b¡£
x = linprog(f,A,b,Aeq,beq)Çó½âÉÏÃæµÄÎÊÌ⣬µ«Ôö¼ÓµÈÊ½Ô¼Êø£¬¼´Aeq*x = beq¡£
ÈôûÓв»µÈʽ´æÔÚ£¬ÔòÁîA=[]¡¢b=[]¡£
x = linprog(f,A,b,Aeq,beq,lb,ub)¶¨ÒåÉè¼Æ±äÁ¿xµÄϽçlbºÍÉϽçub£¬Ê¹µÃxʼÖÕÔڸ÷¶Î§ÄÚ¡£ÈôûÓеÈÊ½Ô¼Êø£¬ÁîAeq=[]¡¢beq=[]¡£
x = linprog(f,A,b,Aeq,beq,lb,ub,x0)ÉèÖóõֵΪx0¡£¸ÃÑ¡ÏîÖ»ÊÊÓÃÓÚÖÐÐÍÎÊÌ⣬ȱʡʱ´óÐÍËã·¨½«ºöÂÔ³õÖµ¡£
x = linprog(f,A,b,Aeq,beq,lb,ub,x0,options)ÓÃoptionsÖ¸¶¨µÄÓÅ»¯²ÎÊý½øÐÐ×îС»¯¡£
[x,fval] = linprog(...) ·µ»Ø½âx´¦µÄÄ¿±êº¯ÊýÖµfval¡£
[x,lambda,exitflag] = linprog(...)·µ»ØexitflagÖµ£¬ÃèÊöº¯Êý¼ÆËãµÄÍ˳öÌõ¼þ¡£ [x,lambda,exitflag,output] = linprog(...) ·µ»Ø°üº¬ÓÅ»¯ÐÅÏ¢µÄÊä³ö±äÁ¿output¡£ [x,fval,exitflag,output,lambda] = linprog(...) ½«½âx´¦µÄÀ¸ñÀÊÈÕ³Ë×Ó·µ»Øµ½lambda²ÎÊýÖС£
±äÁ¿£º
lambda²ÎÊý
lambda²ÎÊýÊǽâx´¦µÄÀ¸ñÀÊÈÕ³Ë×Ó¡£ËüÓÐÒÔÏÂһЩÊôÐÔ£º ? lambda.lower ¨ClambdaµÄϽ硣 ? lambda.upper ¨ClambdaµÄÉϽ硣 ? lambda.ineqlin ¨ClambdaµÄÏßÐÔ²»µÈʽ¡£ ? lambda.eqlin ¨ClambdaµÄÏßÐÔµÈʽ¡£ ÆäËü²ÎÊýÒâÒåͬǰ¡£
Ëã·¨£º
´óÐÍÓÅ»¯Ëã·¨ ´óÐÍÓÅ»¯Ëã·¨²ÉÓõÄÊÇLIPSOL·¨£¬¸Ã·¨ÔÚ½øÐеü´ú¼ÆËã֮ǰÊ×ÏÈÒª½øÐÐһϵÁеÄÔ¤´¦Àí¡£
ÖÐÐÍÓÅ»¯Ëã·¨ linprogº¯ÊýʹÓõÄÊÇͶӰ·¨£¬¾ÍÏóquadprogº¯ÊýµÄËã·¨Ò»Ñù¡£linprogº¯ÊýʹÓõÄÊÇÒ»Öֻ¼¯·½·¨£¬ÊÇÏßÐԹ滮Öе¥´¿Ðη¨µÄ±äÖÖ¡£Ëüͨ¹ýÇó½âÁíÒ»¸öÏßÐԹ滮ÎÊÌâÀ´ÕÒµ½³õʼ¿ÉÐн⡣
Õï¶Ï£º
´óÐÍÓÅ»¯ÎÊÌâ Ëã·¨µÄµÚÒ»²½Éæ¼°µ½Ò»Ð©Ô¼ÊøÌõ¼þµÄÔ¤´¦ÀíÎÊÌâ¡£ÓÐЩÎÊÌâ¿ÉÄܵ¼ÖÂlinprogº¯ÊýÍ˳ö£¬²¢ÏÔʾ²»¿ÉÐеÄÐÅÏ¢¡£ÔÚ±¾ÀýÖУ¬exitflag²ÎÊý½«±»ÉèΪ¸ºÖµÒÔ±íʾÓÅ»¯Ê§°Ü¡£
ÈôAeq²ÎÊýÖÐijÐеÄËùÓÐÔªËØ¶¼ÎªÁ㣬µ«Beq²ÎÊýÖжÔÓ¦µÄÔªËØ²»ÎªÁ㣬ÔòÏÔʾÒÔÏÂÍ˳öÐÅÏ¢£º
Exiting due to infeasibility: an all zero row in the constraint matrix does not have a zero in corresponding right hand size entry. ÈôxµÄijһ¸öÔªËØÃ»ÔÚ½çÄÚ£¬Ôò¸ø³öÒÔÏÂÍ˳öÐÅÏ¢£º
Exiting due to infeasibility: objective f'*x is unbounded below.
ÈôAeq²ÎÊýµÄijһÐÐÖÐÖ»ÓÐÒ»¸ö·ÇÁãÖµ£¬ÔòxÖеÄÏà¹ØÖµ³ÆÎªÆæÒì±äÁ¿¡£ÕâÀxÖиóɷֵÄÖµ¿ÉÒÔÓÃAeqºÍBeqËãµÃ¡£ÈôËãµÃµÄÖµÓëÁíÒ»¸öÔ¼ÊøÌõ¼þÏàì¶Ü£¬Ôò¸ø³öÒÔÏÂÍ˳öÐÅÏ¢£º
Exiting due to infeasibility: Singleton variables in equality constraints are not feasible.
ÈôÆæÒì±äÁ¿¿ÉÒÔÇó½âµ«Æä½â³¬³öÉϽç»òϽ磬Ôò¸ø³öÒÔÏÂÍ˳öÐÅÏ¢£º Exiting due to infeasibility: singleton variables in the equality constraints are not within bounds.
9.2.2.3 Ó¦ÓÃʵÀý [ [Àý¶þ] Éú²ú¾ö²ßÎÊÌâ
ij³§Éú²ú¼×ÒÒÁ½ÖÖ²úÆ·£¬ÒÑÖªÖÆ³ÉÒ»¶Ö²úÆ·¼×ÐèÓÃ×ÊÔ´A 3¶Ö£¬×ÊÔ´B 4m£»ÖƳÉÒ»¶Ö²úÆ·ÒÒÐèÓÃ×ÊÔ´A 2¶Ö£¬×ÊÔ´B 6m£¬×ÊÔ´C 7¸öµ¥Î»¡£ÈôÒ»¶Ö²úÆ·¼×ºÍÒҵľ¼Ã¼ÛÖµ·Ö±ðΪ7ÍòÔªºÍ5ÍòÔª£¬ÈýÖÖ×ÊÔ´µÄÏÞÖÆÁ¿·Ö±ðΪ90¶Ö¡¢200mºÍ210¸öµ¥Î»£¬ÊÔ¾ö¶¨Ó¦Éú²úÕâÁ½ÖÖ²úÆ·¸÷¶àÉÙ¶Ö²ÅÄÜʹ´´ÔìµÄ×ܾ¼Ã¼ÛÖµ×î¸ß£¿
ÁîÉú²ú²úÆ·¼×µÄÊýÁ¿Îªx1£¬Éú²ú²úÆ·ÒÒµÄÊýÁ¿Îªx2¡£ÓÉÌâÒâ¿ÉÒÔ½¨Á¢ÏÂÃæµÄÄ£ÐÍ£º
3
3
3
¸ÃÄ£ÐÍÖÐÒªÇóÄ¿±êº¯Êý×î´ó»¯£¬ÐèÒª°´ÕÕMatlabµÄÒªÇó½øÐÐת»»£¬¼´Ä¿±êº¯ÊýΪ
Ê×ÏÈÊäÈëÏÂÁÐϵÊý£º
f = [-7;-5]; A = [3 2 4 6 0 7]; b = [90; 200; 210]; lb = zeros(2,1); È»ºóµ÷ÓÃlinprogº¯Êý£º
[x,fval,exitflag,output,lambda] = linprog(f,A,b,[],[],lb) x = 14.0000 24.0000 fval = -218.0000 exitflag = 1 output =
iterations: 5 cgiterations: 0 algorithm: 'lipsol' lambda =
ineqlin: [3x1 double] eqlin: [0x1 double] upper: [2x1 double] lower: [2x1 double]
ÓÉÉÏ¿ÉÖª£¬Éú²ú¼×ÖÖ²úÆ·14¶Ö¡¢ÒÒÖÖ²úÆ·24¶Ö¿Éʹ´´½¨µÄ×ܾ¼Ã¼ÛÖµ×î¸ß¡£×î¸ß¾¼Ã¼ÛֵΪ218ÍòÔª¡£exitflag=1±íʾ¹ý³ÌÕý³£ÊÕÁ²ÓÚ½âx´¦¡£
´ÅÅÌÖб¾ÎÊÌâµÄMÎļþΪopt22_2.m¡£
[ÀýÈý] Ͷ×ÊÎÊÌâ
ijµ¥Î»ÓÐÒ»Åú×ʽðÓÃÓÚËĸö¹¤³ÌÏîÄ¿µÄͶ×Ê£¬ÓÃÓÚ¸÷¹¤³ÌÏîĿʱËùµÃµ½µÃ¾»ÊÕÒæ£¨Í¶Èë×ʽð