数学建模社区-数学中国

标题: 请求一个整数规划的matlab程序 [打印本页]

作者: huiwen    时间: 2011-8-25 16:51
标题: 请求一个整数规划的matlab程序
最近一直在研究整数规划,可是连着看了两个相关编程,用MATLAB实践时总是出错!所以,求助于各位大侠们能否提供一个整数规划的程序。或者,能否分析一下面的程序哪里有问题?谢谢了啊!
  1. function [x,y]=IntLp(f,G,h,Geq,heq,lb,ub,x,id,options)
    & n# J' @9 w0 x) e$ B6 Z
  2. global upper opt c x0 A b Aeq beq ID options;
    8 p* i/ o( b7 U5 y$ N
  3. if nargin<10,# c3 m/ k2 T5 e0 y7 ~, f
  4.     options =optimset({});( E4 o! m6 k* j, {3 U
  5.     options.Display='off';0 u/ o  }. g" ~$ _9 ~* P
  6.     options.LargeScale='off';
    " H; l7 c! z) b2 ^: V
  7. end# ]$ C! {! E3 |! Y9 W% W8 Q
  8. if nargin<9,
    ; t4 K, z9 m8 V# a6 l# k! y
  9.     id=ones(size(f));1 c, C) x* \, I+ x: P( I. y
  10. end % _( r( k4 e; g8 [. `
  11. if nargin<8,* j% c1 q+ r7 I$ a# i0 ~1 p
  12.     x=[];
    0 v! [7 r$ ~. r2 r2 L# {# U# Y6 p
  13. end
    ; b6 ?. E3 t  Y4 r; m
  14. if nargin<7 | isempty(ub),& F5 T/ K$ U. L: b( ^/ F* o8 g
  15.     ub =inf*ones(size(f));$ m' M2 }0 H8 v3 ]& ?8 Z4 R! q" _
  16. end
    0 e; W" K8 d+ Q3 a; o
  17. if nargin<6 | isempty(lb),
    " C& ]* w0 L1 g2 R2 d9 `
  18.     lb=zeros(size(f));/ x) K& R9 f7 O4 ~: z% r$ H7 F. Y  R
  19. end
    0 C- H0 }6 `" W9 {) C7 e% b
  20. if nargin<5,
    ' C) K. s$ l* J2 H
  21.     heq=[];/ p% i* X- [5 r8 \
  22. end
    & x* n3 N- ^  }+ @) u4 D
  23. if nargin<4,. x0 {" i1 d$ b% {' d7 a2 E9 I
  24.     Geq=[];
    6 W. h& L$ f# A% j
  25. end( Y' a* D5 z* E3 _8 `8 ]1 u' q
  26. upper=inf;c=f;x0=x;0 ~* c" f, r+ M% T, [- Z+ L1 Z% f
  27. A=G;6 U1 Q# p* W" ^$ n0 @6 f9 ^8 Y
  28. b=h;Aeq=Geq;
    # p' ~: q: u/ q* s  j; J+ `
  29. beq=heq;ID=id;, d; D4 K8 E% O
  30. ftemp=IntL_P(lb(:),ub(:));
    2 J6 n. Y/ G6 E0 Y$ i! w
  31. %以下为子函数' Y! T' m2 q0 r8 D) h
  32. function ftemp=IntL_P(vlb,vub); C  j7 f  i& s
  33. global upper opt c x0 A b Aeq beq ID options;
    $ ]8 e& S, e: M. I; B: K
  34. [x,ftemp,how]=linprog(c,A,b,Aeq,beq,vlb,vub,x0,options);% Q9 P6 W! D+ a7 [2 m+ T* K
  35. if how<03 D- f4 o5 h/ t* g  e% i0 `' f
  36.     return;
    % K2 g/ q% Y# v, k. c
  37. end$ n1 f* D; t( S. L
  38. if ftemp-upper>0.00005
    0 e$ P% E0 d+ n8 y( g$ k" D- ^4 C9 q
  39.     return;
    7 u" }+ T" q9 d9 z
  40. end
    . d# s( [4 E8 s- F' q: T
  41. if max(abs(x.*ID-round(x.*ID)))<0.00005- q7 w# l  f; C4 r
  42.     if upper-ftemp>0.000051 j1 U1 d8 `% U
  43.         opt=x';
    " Q  Q' b$ K6 a* x5 W8 H: d7 V
  44.         upper=ftemp;
    0 v! X+ G: U0 c, I/ j
  45.         return;
      I% B" D. R' C/ K
  46.     else
    . Y6 D( p: e5 n' K- W! g
  47.         opt=[opt;x'];! _5 v  j% P' ?; q) s
  48.         return;4 u# T8 r( F; [' A; ]7 U: S
  49.     end
    , Y# y3 ?& \# p/ x/ O. W0 |
  50. end* w3 g  e. c. {# W* m
  51. notintx=find(abs(x-round(x))<=0.00005);+ ]+ `, A' T3 D' o8 E6 o1 B
  52. intx=fix(x);* b9 t8 c  w$ m# R
  53. tempvlb=vlb;tempvub=vub;& ^, W; M- D& M6 X( v- y
  54. if vub(notintx(1,1),1)>=intx(notintx(1,1),1)+1% f2 t+ o: m8 ^1 @. X( `$ V
  55.     tempvlb(notintx(1,1),1)=intx(notintx(1,1),1)+1;
    # \; h) U% l# ^
  56.     ftemp=IntLP(tempvlb,vub);( t/ {+ I7 C$ m& V; A+ d
  57. end" w* S- t) E" _# R5 y# @
  58. if vlb(notintx(1,1),1)<=intx(notintx(1,1),1); _) p+ W; O( u$ K$ h. d+ H% f
  59.     tempvub(notintx(1,1),1)=intx(notintx(1,1),1);
    9 S6 u" q& f9 A2 f! v$ H% V
  60.     ftemp=IntL_P(vlb,tempvub);7 }- N9 S/ e1 K3 j* a0 q5 j
  61. end
复制代码

作者: 喜欢就好    时间: 2011-8-25 17:50
来看看   楼主发的程序有点小问题   无法复制  望楼主解决
作者: 蜗牛天使    时间: 2011-8-25 17:57
太长了 也不是很懂 没办法了
作者: huiwen    时间: 2011-8-26 14:33
蜗牛天使 发表于 2011-8-25 17:57
! @, a( F! F, c0 B3 H, u太长了 也不是很懂 没办法了
2 w/ p; N5 a; ?; ]; L% O/ ^
恩 也谢谢了啊!~
作者: huiwen    时间: 2011-8-26 14:34
喜欢就好 发表于 2011-8-25 17:50
5 I- e! B9 e% n9 Z- b来看看   楼主发的程序有点小问题   无法复制  望楼主解决
( ]: I# _/ _5 I1 _
我这里看的时候还是可以的啊!
作者: xueyues3    时间: 2011-9-21 13:38
路过!!!!!!0 Z( @* }5 ?+ P0 T7 D  q- H1 ?" Z

& f# {( T  X* L1 s% ^6 B( @
+ X* f$ \: }8 L, G! F5 F2 L7 r, ~# |

8 K" g' Z- ^# O8 o8 ?! ~/ s% n
6 w. u$ S4 K; C, N6 a1 B
8 D" S! \9 W' y8 P. c9 J
1 e: c0 [! F5 n- F) D. S) Z) x
1 g; m; P+ \2 D0 V! q
# F( V( t8 t& B% I
! O/ o" T: m5 d! h) `1 a- I0 q" I! v  q5 ~( m2 |- m4 I) m* {

7 m# _" C1 W1 s4 l( @2 |# {( q高密招聘网 gmzhaopin.com
作者: 大鲵2003    时间: 2012-2-2 11:19

作者: 大鲵2003    时间: 2012-2-2 11:22

作者: 大鲵2003    时间: 2012-2-2 11:23

作者: 冰淇淋小芯    时间: 2012-12-30 16:50
                  
作者: NICE--LLL    时间: 2013-8-15 16:59
我也是遇到同样的问题啊
作者: 一束阳光    时间: 2015-9-5 23:19
十W分感谢楼主分% O2 f$ |( g  A- q1 O2 U





欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) Powered by Discuz! X2.5