You are on page 1of 4

5/6/13

jean-pierre.moreau.pagesperso-orange.fr/Cplus/simplex_cpp.txt

/ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ' * S I M P L E XM E T H O D * ' * * ' * * ' *L I S TO FM A I NV A R I A B L E S : * ' * * ' * R : M A X I M I Z E=Y ,M I N I M I Z E=N * ' * N V : N U M B E RO FV A R I A B L E SO FE C O N O M I CF U N C T I O N* ' * ( T OM A X I M I Z EO RM I N I M I Z E ) . * ' * N C : N U M B E RO FC O N S T R A I N T S * ' * T S : S I M P L E XT A B L EO FS I Z EN C + 1xN V + 1 * ' * R 1 : = 1T OM A X I M I Z E ,= 1T OM I N I M I Z E * ' * R 2 : A U X I L I A R YV A R I A B L EF O RI N P U T S * ' *N O P T I M A L B O O L E A NI FF A L S E ,C O N T I N U EI T E R A T I O N S * ' * X M A X : S T O R E SG R E A T E RC O E F F I C I E N TO FE C O N O M I C * ' * F U N C T I O N . * ' * R A P S T O R E SS M A L L E S TR A T I O>0 * ' * V : A U X I L I A R YV A R I A B L E * ' * P 1 , P 2 : L I N E ,C O L U M NI N D E XO FP I V O T * ' * X E R R : B O O L E A NI FT R U E ,N OS O L U T I O N . * ' *-* ' *P R O B L E MD E S C R I P T I O N : * ' *Ab u i l d e ro fh o u s e sc a nm a k e3k i n d so ft h e mw i t h * ' *v a r i o u sp r o f i t s :1 5 0 0 0 $ ,1 7 0 0 0 $a n d2 0 0 0 0 $ . * ' *E a c hk i n dm u s tr e s p e c tf o l l o w i n gc o n d i t i o n s : * ' *1 )f o rs u p p l yr e a s o n s ,t h en u m b e ro fh o u s e so fk i n d2* ' * b u i l te a c hm o n t hm u s tn o te x c e e dt h en u m b e ro f * ' * k i n d3b ym o r et h a nt w o . * ' *2 )f o rs t a f fr e a s o n s ,t h eb u i d e rc a nm a k ee a c hm o n t h * ' * u pt o5 ,5a n d3 ,r e s p e c t i v e l yo fk i n d s1 ,2a n d3 . * ' *3 )f o ro r g a n i s a t i o nr e a s o n s ,t h eb u i l d e rc a nm a k eu p * ' * t o8h o u s e sm o n t h l yo fk i n d s1 , 2a n d3 ,r e s p e c t i - * ' * v e l yi nt h ep r o p o r t i o n so f3 ,2a n d1 . * ' *T h eb u i l d e r ,h a v i n gt h e s ed a t a ,w a n t st om a x i m i z eh i s* ' *m o n t h l yp r o f i tb yk n o w i n gt h en u m b e ro hh o u s e so f * ' *e a c hk i n dt ob u i l dm o n t h l y . * ' *-* ' *S A M P L ER U N : * ' *( M a x i m i z e1 5X 1+1 7X 2+2 0X 3w i t hc o n d i t i o n s : * ' * X 2- X 3< =2 * ' * 3X 1+3X 2+5X 3< =1 5 * ' * 3X 1+2X 2+ X 3< =8 ) * ' * * ' *L I N E A RP R O G R A M M I N G * ' * * ' *M A X I M I Z E?Y * ' * * ' *N U M B E RO FV A R I A B L E SO FE C O N O M I CF U N C T I O N?3 * ' * * ' *N U M B E RO FC O N S T R A I N T S?3 * ' * * ' *I N P U TC O E F F I C I E N T SO FE C O N O M I CF U N C T I O N : * ' * # 1?1 5 * ' * # 2?1 7 * ' * # 3?2 0 * ' * R i g h th a n ds i d e?0 * ' * * ' *C O N S T R A I N T# 1 : * ' * # 1?0 *
jean-pierre.moreau.pagesperso-orange.fr/Cplus/simplex_cpp.txt 1/4

5/6/13

jean-pierre.moreau.pagesperso-orange.fr/Cplus/simplex_cpp.txt

' * # 2?1 * ' * # 3?1 * ' * R i g h th a n ds i d e?2 * ' * * ' *C O N S T R A I N T# 2 : * ' * # 1?3 * ' * # 2?3 * ' * # 3?5 * ' * R i g h th a n ds i d e?1 5 * ' * * ' *C O N S T R A I N T# 3 : * ' * # 1?3 * ' * # 2?2 * ' * # 3?1 * ' * R i g h th a n ds i d e?8 * ' * * ' *R E S U L T S : * ' * * ' * V A R I A B L E# 1 :0 . 3 3 3 3 3 3 * ' * V A R I A B L E# 2 :3 . 0 0 0 0 0 0 * ' * V A R I A B L E# 3 :1 . 0 0 0 0 0 0 * ' * * ' * E C O N O M I CF U N C T I O N :7 6 . 0 0 0 0 0 0 * ' * * ' *( B u i l d i n gm o n t h l y1 / 3 ,3a n d1h o u s e ( s )o fk i n d s1 , 2 ,* ' * 3 ,t h eb u i l d e rc a nm a k eam o n t h l yp r o f i to f7 6 0 0 0 $ ) .* ' *-* ' *R E F E R E N C E : * ' *M o d l e sp r a t i q u e sd ed c i s i o nT o m e2 ,B yJ e a n P i e r r e * ' *B l a n g e r ,P S IE d i t i o n s ,F r a n c e ,1 9 8 2 . * ' * * ' * C + +R e l e a s e1 . 0B yJ PM o r e a u ,P a r i s . * ' * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * / # i n c l u d e< s t d i o . h > # i n c l u d e< m a t h . h > # d e f i n eC M A X 1 0 / / m a x .n u m b e ro fv a r i a b l e si ne c o n o m i cf u n c t i o n # d e f i n eV M A X 1 0 / / m a x .n u m b e ro fc o n s t r a i n t s

i n tN C ,N V ,N O P T I M A L , P 1 , P 2 , X E R R ; d o u b l eT S [ C M A X ] [ V M A X ] ; v o i dD a t a ( ){ d o u b l eR 1 , R 2 ; c h a rR ; i n tI , J ; p r i n t f ( " \ nL I N E A RP R O G R A M M I N G \ n \ n " ) ; p r i n t f ( "M A X I M I Z E( Y / N )?" ) ;s c a n f ( " % c " ,& R ) ; p r i n t f ( " \ nN U M B E RO FV A R I A B L E SO FE C O N O M I CF U N C T I O N?" ) ;s c a n f ( " % d " ,& N V ) ; p r i n t f ( " \ nN U M B E RO FC O N S T R A I N T S?" ) ;s c a n f ( " % d " ,& N C ) ; i f( R= =' Y '| |R = = ' y ' ) R 1=1 . 0 ; e l s e R 1=1 . 0 ; p r i n t f ( " \ nI N P U TC O E F F I C I E N T SO FE C O N O M I CF U N C T I O N : \ n " ) ; f o r( J=1 ;J < = N V ;J + + ){ p r i n t f ( " # % d?" ,J ) ;s c a n f ( " % l f " ,& R 2 ) ; T S [ 1 ] [ J + 1 ]=R 2*R 1 ; } p r i n t f ( " R i g h th a n ds i d e?" ) ;s c a n f ( " % l f " ,& R 2 ) ;
jean-pierre.moreau.pagesperso-orange.fr/Cplus/simplex_cpp.txt 2/4

5/6/13

jean-pierre.moreau.pagesperso-orange.fr/Cplus/simplex_cpp.txt

T S [ 1 ] [ 1 ]=R 2*R 1 ; f o r( I=1 ;I < = N C ;I + + ){ p r i n t f ( " \ nC O N S T R A I N T# % d : \ n " ,I ) ; f o r( J=1 ;J < = N V ;J + + ){ p r i n t f ( " # % d?" ,J ) ;s c a n f ( " % l f " ,& R 2 ) ; T S [ I+1 ] [ J+1 ]=R 2 ; } p r i n t f ( " R i g h th a n ds i d e?" ) ;s c a n f ( " % l f " ,& T S [ I + 1 ] [ 1 ] ) ; } p r i n t f ( " \ n \ nR E S U L T S : \ n \ n " ) ; f o r ( J = 1 ;J < = N V ;J + + ) T S [ 0 ] [ J + 1 ]=J ; f o r ( I = N V + 1 ;I < = N V + N C ;I + + ) T S [ I N V + 1 ] [ 0 ]=I ; } v o i dP i v o t ( ) ; v o i dF o r m u l a ( ) ; v o i dO p t i m i z e ( ) ; v o i dS i m p l e x ( ){ e 1 0 :P i v o t ( ) ; F o r m u l a ( ) ; O p t i m i z e ( ) ; i f( N O P T I M A L= =1 )g o t oe 1 0 ; } v o i dP i v o t ( ){ d o u b l eR A P , V , X M A X ; i n tI , J ; X M A X=0 . 0 ; f o r ( J = 2 ;J < = N V + 1 ;J + + ){ i f( T S [ 1 ] [ J ]>0 . 0& &T S [ 1 ] [ J ]>X M A X ){ X M A X=T S [ 1 ] [ J ] ; P 2=J ; } } R A P=9 9 9 9 9 9 . 0 ; f o r( I = 2 ;I < = N C + 1 ;I + + ){ i f( T S [ I ] [ P 2 ]> =0 . 0 )g o t oe 1 0 ; V=f a b s ( T S [ I ] [ 1 ]/T S [ I ] [ P 2 ] ) ; i f( V<R A P ){ R A P=V ; P 1=I ; } e 1 0 : ; } V=T S [ 0 ] [ P 2 ] ;T S [ 0 ] [ P 2 ]=T S [ P 1 ] [ 0 ] ;T S [ P 1 ] [ 0 ]=V ; } v o i dF o r m u l a ( ){ ; / / L a b e l s :e 6 0 , e 7 0 , e 1 0 0 , e 1 1 0 ; i n tI , J ; f o r( I = 1 ;I < = N C + 1 ;I + + ){ i f( I= =P 1 )g o t oe 7 0 ; f o r( J = 1 ;J < = N V + 1 ;J + + ){ i f( J= =P 2 )g o t oe 6 0 ; T S [ I ] [ J ]=T S [ P 1 ] [ J ]*T S [ I ] [ P 2 ]/T S [ P 1 ] [ P 2 ] ; e 6 0 : ; } e 7 0 : ; } T S [ P 1 ] [ P 2 ]=1 . 0/T S [ P 1 ] [ P 2 ] ;
jean-pierre.moreau.pagesperso-orange.fr/Cplus/simplex_cpp.txt 3/4

5/6/13

jean-pierre.moreau.pagesperso-orange.fr/Cplus/simplex_cpp.txt

f o r( J = 1 ;J < = N V + 1 ;J + + ){ i f( J= =P 2 )g o t oe 1 0 0 ; T S [ P 1 ] [ J ]* =f a b s ( T S [ P 1 ] [ P 2 ] ) ; e 1 0 0 : ; } f o r( I = 1 ;I < = N C + 1 ;I + + ){ i f( I= =P 1 )g o t oe 1 1 0 ; T S [ I ] [ P 2 ]* =T S [ P 1 ] [ P 2 ] ; e 1 1 0 : ; } } v o i dO p t i m i z e ( ){ i n tI , J ; f o r( I = 2 ;I < = N C + 1 ;I + + ) i f( T S [ I ] [ 1 ]<0 . 0 ) X E R R=1 ; N O P T I M A L=0 ; i f( X E R R= =1 ) r e t u r n ; f o r( J = 2 ;J < = N V + 1 ;J + + ) i f( T S [ 1 ] [ J ]>0 . 0 ) N O P T I M A L=1 ; } v o i dR e s u l t s ( ){ / / L a b e l s :e 3 0 , e 7 0 , e 1 0 0 ; i n tI , J ; i f( X E R R= =0 )g o t oe 3 0 ; p r i n t f ( "N OS O L U T I O N . \ n " ) ;g o t oe 1 0 0 ; e 3 0 : f o r( I = 1 ;I < = N V ;I + + ) f o r( J = 2 ;J < = N C + 1 ;J + + ){ i f( T S [ J ] [ 0 ]! =1 . 0 * I )g o t oe 7 0 ; p r i n t f ( " V A R I A B L E# % d :% f \ n " ,I ,T S [ J ] [ 1 ] ) ; e 7 0 : ; } p r i n t f ( " \ n E C O N O M I CF U N C T I O N :% f \ n " ,T S [ 1 ] [ 1 ] ) ; e 1 0 0 : p r i n t f ( " \ n " ) ; } v o i dm a i n ( ) { D a t a ( ) ; S i m p l e x ( ) ; R e s u l t s ( ) ; } / / e n do ff i l es i m p l e x . c p p

jean-pierre.moreau.pagesperso-orange.fr/Cplus/simplex_cpp.txt

4/4

You might also like