前言
前几期,我们已经通过程序模拟了公司的扩大再生产和赚取剩余价值
现在,我们将要具体模拟公司生产产品交易的部分
以往的程序对价值的衡量是抽象的,而现在,程序在运作中新增了“单位”的概念,也就是说,程序的运算更加的标准合理了
(图片来源于网络,侵删)
设计过程
还是和以往一样,我们需要借助结构体模拟出两家企业
struct com{
int add;//总财富
int n;//n为其每份赚取的价值
int sel;//销售量
int ini=1;//选择成本的价格
int prn;//产量
}c1,c2;
由于主要侧重销售,就省略了雇佣部分
设置完这些后,我们就要开始构造其基本逻辑了
(原理配图)
void f1(int x,int y,int z1)//x为一份的生产成本,y为其产生的新价值
{
int z=x/2*3;
y=x+rand()%z;
y=y-x;
z1=z1+y;
}
物品在经过加工后售出,成为商品,其赚取的价值需要扣除其成本
除了交易,我们还需要设定产品产量,若商品亏损则减产,盈利则增产
void f2(int y2,int z2,int w2)//
{
double prod;
int ad=500;
prod=rand()%ad;//增产
prod=prod/100;
while(ad*z2>=w2*70/100&&ad>10)
{
ad--;
}
y2=y2*prod;
cout<<"产量为"<<y2;
}
除了增产,商品还应该自我迭代,也就是说,当商品的销售情况到一定程度时,它可以改变其成本,通过成本与销售量这两个变量,运营即可自我调整
但是,如何销售呢?
购买力是市场的关键组成部分,所以,我们需要模拟出一个市场中的购买力
购买力是各不相同的,我们将购买者分为三个部分,为低、中、高收入人群
其总占比分别为,1/2,3/1,1/6
这三类人群的总财产分别设定为 5 10 15
每回合收入分别为 1 2 3
cin>>pop;
int buy[pop];
bool buy1[pop]={0};
int may=0;
int a1,a2,a3;
for(int i=1;i<=pop/2;i++)
{
buy[i]=5;
}
for(int i=pop/2;i<=pop/2+pop/3;i++)
{
buy[i]=10;
}
for(int i=pop/2+pop/3;i<=pop;i++)
{
buy[i]=15;
}
(按照比例赋值其初始资产)
for(int i=1;i<=pop/2;i++)
{
buy[i]=buy[i]+1;
}
for(int i=pop/2;i<=pop/2+pop/3;i++)
{
buy[i]=buy[i]+2;
}
for(int i=pop/2+pop/3;i<=pop;i++)
{
buy[i]=buy[i]+3;
}
每回合的收入与花费可以对商品生产进行调节,从而反映出购买力的膨胀与萎缩,促进整个程序的运行
资金充足,则商品增产、增加质量
资金匮乏,则商品淤积,企业开始减产
企业怎么以此进行其运营呢?
这时,我们就需要DFS函数
通过dfs统计收入变更、设计不同的销售方案
void dfs(int dep,int x4,int y4,int z4,int w4)
{
if(dep>pop)
{
}
else{
if(w4>10)
{
x4++;
}
else if(10>w4&&w4>5)
{
y4++;
}
else if(w4<5)
{
z4++;
}
dfs(dep+1,x4,y4,z4,w4);
}
}
先以统计收入人群为例
我们统计了资金在10以上,5与10之间和低于5的人群人数
这个操作的目的,是为了让企业估算其获利的最大值,从而判断其应该改变生产数目还是改变产品质量
void f5(int x5,int y5,int z5,int w51,int w52,int v51,int v52,int num,int num2,int prn,int add)//f5(a1,a2,a3,c1.ini,c2.ini,c1.n,c2.n,cph1,cph2,c1.prn,c1.add);
{
if((w51+1)*prn<add)
{
if(w51>w52)
{
num=x5*v51;
num=num+y5*v51/2;
num=num+y5*v52/2;
num=num+z5*v52;
}
else{
num=x5*v52;
num=num+y5*v51/2;
num=num+y5*v52/2;
num=num+z5*v51;
}
}
double prod2;
int ad2=500;
prod2=rand()%ad2;//增产
prod2=prod2/100;
while(ad2*v51>=add*70/100&&ad2>10)
{
ad2--;
}
num2=num2*prod2;
if(num>num2)
{
tt=1;
}
else{
w51=w51+1;
cout<<"成本改为"<<w51;
}
}
程序通过对比收入选择最优项
f1(c1.ini,c1.n,c1.add);
for(int i=1;i<=pop;i++)
{
f3(buy[i],buy1,c1.ini,c2.ini,c1.n,c2.n,i4,c1.prn);
}
dfs(may,a1,a2,a3,buy[may]);
f5(a1,a2,a3,c1.ini,c2.ini,c1.n,c2.n,cph1,cph2,c1.prn,c1.add);
if(tt==1)
{
f2(c1.prn,c1.ini,c1.add);
}
(简单调用如上图所示)
完成了这些工作,我们就可以利用其开始交易了
void f3(int x3,bool y3,int z31,int z32,int w31,int w32,int ii,int sel)//
{
if(sel>0&&y3==0)
{
if(x3>10)
{
if(z31>z32)
{
x3=x3-w31;
use(y3,ii);
sel=sel-1;
}
else
{
x3=x3-w32;
use(y3,ii);
sel=sel-1;
}
}
else if(10>x3&&x3>5)
{
if(z31>z32)
{
x3=x3-w31;
use(y3,ii);
sel=sel-1;
}
else
{
x3=x3-w32;
use(y3,ii);
sel=sel-1;
}
}
else if(x3<5)
{
if(w31>w32)
{
x3=x3-w32;
use(y3,ii);
sel=sel-1;
}
else
{
x3=x3-w31;
use(y3,ii);
sel=sel-1;
}
}
}
}
不同收入的人群有不同的选择,从而左右企业的发展方向,起到调控作用
并且,一个回合的产品不可以重复购买
结尾
程序的设计就到这里,感谢您的阅读