建立数学模型分析如何改革收入分配制度以体现社会公平。
答案:2 mip版
解决时间 2021-02-23 07:54
- 提问者网友:不再打扰你
- 2021-02-22 08:36
建立数学模型分析如何改革收入分配制度以体现社会公平。
最佳答案
- 二级知识专家网友:蓝莓九栀
- 2021-02-22 09:58
悲剧啊,去也在找答案!我也在找答案!
全部回答
- 1楼网友:相忘于江湖
- 2021-02-22 11:24
4.模型的程序实现
对于物资分配问题,用软件来实现,其流程如下:
所以程序主要分为三个模块:数据读入模块;分配处理模块和结果保存输出模块。
4.1数据读入模块代码:
定义对象cdaodatabase m_db;用于数据库操作。定义全局变量m_applyarray、m_galleryarray、m_distributionarray,分别用于保存申请计划信息、库存信息和分配结果输出信息。定义全局变量float class[10];用于保存各个优先级类的权系数变量。
在读写数据库前,首先要打开数据库。
//打开数据库
if(m_db.isopen())m_db.close();m_db.open("数据库名");
读取申请数据、物资库存数据,并将单位信息存储到结果输出m_distributionarray结构中。
cdaorecordset m_set(&m_db);colevariant var;
m_set.open(dbopendynaset,"select * from apply");
m_applyarray.removeall();
m_distributionarray.removeall();
while(!m_set.iseof())
{
apply* m_apply= =new apply;
distribution *m_distribution=new distribution;
var = m_set.getfieldvalue(0);
m_apply ->code=var.intval;
m_distribution->code=var.intval;
var = m_set.getfieldvalue(1);
m_apply ->name=ccrack::strvariant(var);
m_distribution->name=m_apply ->name;
var = m_set.getfieldvalue(2);
m_apply ->class=var.intval;
var = m_set.getfieldvalue(3);
m_apply ->nq1= var.fltval;
var = m_set.getfieldvalue(4);
m_apply ->nq2= var.fltval;
…
var = m_set.getfieldvalue(i+2);
m_apply ->nqi= var.fltval;
m_applyarray.add(m_apply);
m_distributionarray.add(m_distribution);
m_set.movenext();
}
m_set.close();
m_set.open(dbopendynaset,"select * from gallery");
while(!m_set.iseof())
{
gallery* m_gallery = =new gallery;
var = m_set.getfieldvalue(0);
m_gallery ->code=var.intval;
var = m_set.getfieldvalue(1);
m_gallery ->name=ccrack::strvariant(var);
var = m_set.getfieldvalue(2);
m_gallery ->sq1=var.fltval;
var = m_set.getfieldvalue(3);
m_gallery ->sq2= var.fltval;
…
var = m_set.getfieldvalue(i+1);
m_gallery ->sqi= var.fltval;
var = m_set.getfieldvalue(i+2);
m_gallery ->rq1=var.fltval;
var = m_set.getfieldvalue(i+3);
m_gallery ->rq2= var.fltval;
…
var = m_set.getfieldvalue(2i+1);
m_gallery ->rqi= var.fltval;
m_galleryarray.add(m_gallery);
m_set.movenext();
}
m_set.close();
if(m_db.isopen())m_db.close();
4.2物资分配模型主要函数
①第种物资的总申请量函数为
float q()
{
float q=0;//对第 种物资的总申请量
int a=m_applyarray.getsize();
for(int j=0;jnqi;}
return q;
}
②第种物资的总可供量函数为
float s()
{float s=0; //第 种物资的总可供量
a=m_applyarray.getsize();
for(j=0;jsqi-m_gallery->rqi;
}
}
③分配算法主函数:
由于我们考虑到实际应用中,不同情况下会有不同的分配原则(讨论如前),所以软件应该允许用户根据实际情况灵活选择分配方法。我们定义一个全局变量int method;它的取值为1、2、3、4,分别表示用户采用按照满足单位最多的原则、按照申请比例进行分配的原则、按优先级逐级保障分配法、按优先级削减分配法四种分配方法。对应的分配函数为disfunciont1()、disfunciont2()、disfunciont3()、disfunciont4().
void distribution()
{ float s=s();float q=q();
if(s>=q)
{//各单位分得的物资量等于其申请量
int a=m_distributionarray.getsize();
int b=m_applyarray.getsize();
for(int i=0;icode;
for(int j=0;jcode;) m_distributionarray.getat(i)->dqi =m_applyarray.getat(j)->nqi }
}
}else
{
if(method==1) disfunciont1();else if(method==2) disfunciont2();else if(method==3) disfunciont3();else if(method==4) disfunciont4();else ::afxmessagebox("出错啦!");
}
}
四个分配函数的模型前面已经讨论过了,这里就不一一写出代码了。
4.3分配结果数据存储模块
//打开数据库
if(m_db.isopen())m_db.close();m_db.open("数据库名");
cstring strsql;
int a=m_distributionarray.getsize();
for(int i=0;icode, m_distributionarray.getat(i)->name, m_distributionarray.getat(i)->dq1, m_distributionarray.getat(i)->dq2,…, m_distributionarray.getat(i)->dqi);
m_db.execute(strsql);
}
if(m_db.isopen())m_db.close();
把上述函数打包成模块,可以在需要的时候调用用于保存分配结果数据。
我要举报
如以上问答内容为低俗/色情/暴力/不良/侵权的信息,可以点下面链接进行举报,我们会做出相应处理,感谢你的支持!
点此我要举报以上问答信息
推荐资讯