⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 exe1.cpp

📁 prog dyn pour gestion de stock
💻 CPP
字号:
#include <stdio.h>
int main()
{
    int np=5,cs=5,beta;    float prob = 0.5;
    int mind,maxd,xk;
    float w[np+1][np];
    int temp[np+1][np];
    int d[][2]={{1,2},{2,3},{3,4},{2,3},{1,2}};    int p[]={13,15,20,11,12};
    float valw;    float tempval,minvaleur=100000;    int demande_min,demande_max;    int penalite = 22;    int revente = 8;float pen;
    
    for(int i=0; i <np ;i++)
    {

        printf("d[%d][0]= %d   d[%d][1]= %d \n",i,d[i][0],i,d[i][1]);
    }
    
    
    
    /*-initial table w[n][beta]-*/
    for(int i=0 ;i<=np;i++)
    {
        for(int j=0;j<np;j++)
        {
            w[i][j]=0;     
            temp[i][j]=0;      
        }            
    }
    
    
    /*-calcul-*/
    for(int i=np-1 ; i>=0;i--)
    {
        
        if(d[i][0]<=d[i][1])
        {
            mind=d[i][0];
            maxd=d[i][1];
            }
        else
        {
            mind=d[i][1];
            maxd=d[i][0];
        }
        
        printf("max = %d \n",maxd);
        
        /*-calcul beta(stock)-*/
        printf("i= %d|\n",i);
        if ((i-1) >=0 )
        {
           if(d[i-1][0]<=d[i-1][1])
           {
               beta = cs - d[i-1][0];              
           }
           else
           {  
               beta = cs - d[i-1][1];  
           }
        }
        else
        {
            beta = 1;
        }
        printf("********beta = %d ********\n",beta);
        //for(beta=0;beta<np;beta++)
        for(int j=0;j<=beta;j++)
        {   minvaleur=100000;
            //if (i==np-1 && beta == 0)
            if (i==np-1)
            {
               /*-w[5][0]-*/
               for(xk=0;xk<=cs-j;xk++)
               {
                    
                    if(maxd>xk+j)
                    {
    
                        temp[i][xk]=p[i] * xk +(int)( 0.5 * ((d[i][0]-xk-j)+(d[i][1]-xk-j))*penalite);
                        valw=p[i] * xk +(int)( 0.5 * ((d[i][0]-xk-j)+(d[i][1]-xk-j))*penalite);
                        printf("temp[%d][%d] = %d\n",i,xk,temp[i][xk]);  
                    }
                    else
                    {
                        temp[i][xk]=p[i] * xk - (int)(0.5 * ((xk+j-d[i][0])+(xk+j-d[i][1]))*revente);
                        valw = p[i] * xk - (int)(0.5 * ((xk+j-d[i][0])+(xk+j-d[i][1]))*revente);
                        printf("temp[%d][%d] = %d\n",i,xk,temp[i][xk]);  
                        //printf("temp[%d][%d] = %d\n",i,xk,valw); 
                    }                    
                   
                    			  if(minvaleur > valw )
                    {
                        minvaleur=valw;
                      
                    } 
                                                  
               }
               w[i][j]=minvaleur;
               printf("w[%d][%d]= %.2f \n",i,j,w[i][j]) ;  
            }
            else
            {
                /*-calcul l'autre periode-*/
                for(xk=0;xk<=cs-j;xk++)
                {
                    demande_min = j+xk-maxd;			  if(demande_min<0)			  {				demande_min=0;				    			  }			  demande_max=j+xk-mind;			  if(demande_max<0)			  {				demande_max=0;			  }			 /*-penalite < 0 j est beta-*/		        pen = ((maxd+mind)*prob) - (xk+j);			  if(pen < 0)
                    {				pen = 0;				tempval= (w[i+1][demande_min]+w[i+1][demande_max])*prob;				printf("bbbbbbb w[i+1][%d]=%.0f \n",demande_max,w[i+1][demande_max]);
//                        valw=p[i] * xk +(int)( 0.5 * ((d[i][0]-xk-j)+(d[i][1]-xk-j))*penalite)+(int)tempval;				//valw = p[i] * xk + ((mind+maxd)*prob - (j + xk)) * penalite + tempval;				valw = p[i] * xk + pen * penalite + tempval;				printf("temp[%d][%d] = %.0f\n",i,xk,valw);
                    }
                    else
                    {				tempval= (w[i+1][demande_max])*prob;
                        //valw = p[i] * xk - (int)(0.5 * ((xk+j-d[i][0])+(xk+j-d[i][1])))+(int)tempval;				//valw = p[i] * xk +(int)( 0.5 * ((d[i][0]-xk-j)+(d[i][1]-xk-j))*penalite)+(int)tempval;				//valw = p[i] * xk + ((mind+maxd)*prob - (j + xk)) * penalite + tempval; 				valw = p[i] * xk + pen * penalite + tempval;				printf("temp[%d][%d] = %d\n",i,xk,valw);
                    }                        
                                     
                    if(minvaleur > valw )
                    {
                        minvaleur=valw;
                      
                    }                   
                } 		    w[i][j]=minvaleur;
            }
            
        }
               
    }
    
    
    
    printf("valeur=%d\n",(int)((0.5)*8));
 	for(int beta = 0 ; beta < 5 ; beta ++){   
    for(int i = np-1 ; i >= 0 ; i--){		printf("%.1f\t|\t",w[i][beta]);}printf("\n");}+
    
    
    
    
    
    
    
    
    
    
    
    
    
 getchar();   
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -