µÚ¾ÅÕ ×îÓÅ»¯·½·¨µÄMatlabʵÏÖ ÏÂÔØ±¾ÎÄ

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µ¥Î»ÓÐÒ»Åú×ʽðÓÃÓÚËĸö¹¤³ÌÏîÄ¿µÄͶ×Ê£¬ÓÃÓÚ¸÷¹¤³ÌÏîĿʱËùµÃµ½µÃ¾»ÊÕÒæ£¨Í¶Èë×ʽð