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

📄 plan.cpp

📁 运筹学中的生产计划方法c++源代码
💻 CPP
字号:
#include <stdio.h>

#define pc(j) 20+5*j
#define e(j) j

void dp_plan(){
 int i,j,k,sum,limit,n,io,max_stock,max_production,d[10],x[10][100],z,z_maxlimit,z_minlimit,xstar[10];
 float f[10][100],temp;
 printf("WELCOME TO THE DYNIMIC SYSTEM! periods of the inventory =?    ");
 scanf("%d",&n);
 printf(" the maximum stocks of each period=?   ");
 scanf("%d",&max_stock);
 printf(" the maximum production of each period=?   ");
 scanf("%d",&max_production);
 printf(" The stocks of the first period=?   ");
 scanf("%d",&io);
 for(i=0;i<n;i++)
  {printf("Demand for period %d  is    ",i+1);
  scanf("%d",&d[i]);
  }
 for(k=0;k<d[n-1];k++)
  {x[n-1][k]=d[n-1]-k;
  f[n-1][k]=pc(x[n-1][k]);
  }
 f[n-1][d[n-1]]=0;
 x[n-1][d[n-1]]=0;
 for(i=n-2;i>=0;i--)
  {sum=0;
  for(j=i;j<n;j++)
   sum+=d[j];
  if(sum<max_stock)
   limit=sum;
  else
   limit=max_stock;
  for(k=0;k<=limit;k++)
   {if(d[i]-k>0)
    {z_minlimit=d[i]-k;
    f[i][k]=pc(z_minlimit)+e(0)+f[i+1][0];
    x[i][k]=z_minlimit;
    }
   else
    {z_minlimit=0;
    f[i][k]=e(k-d[i])+f[i+1][k-d[i]];
    x[i][k]=0;
    }
   if(sum-k>max_stock+d[i]-k)
    if(max_stock+d[i]-k>max_production)
     z_maxlimit=max_production;
    else
     z_maxlimit=max_stock+d[i]-k;
   else
    if(sum-k>max_production)
     z_maxlimit=max_production;
    else
     z_maxlimit=sum-k;
   for(z=z_minlimit;z<=z_maxlimit;z++)
    {temp=pc(z)+e(k+z-d[i])+f[i+1][k+z-d[i]];
    if(f[i][k]>temp)
     {f[i][k]=temp;
     x[i][k]=z;
     }
    }
   }
  }
/* for(i=0;i<n;i++)
  {printf(" the period %d ",i+1);
  for(j=0;j<=5;j++)
   printf(" %f--->%d ",f[i][j],x[i][j]);
  getch();

  }*/
 printf(" The minimum policy cost for the %d periods is  %f",n,f[0][io]);
 xstar[0]=x[0][io];
 j=io;
 printf(" The optimal amount to produce in period 1 is  %d",xstar[0]);
 for(i=1;i<n;i++)
  {xstar[i]=x[i][xstar[i-1]-d[i-1]+j];
  printf(" The optimal amount to produce in period %d  is  %d",i+1,xstar[i]);
  j=xstar[i-1]-d[i-1]+j;
  }
}

void main(){
 clrscr();
 dp_plan();
 getch();
}

⌨️ 快捷键说明

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