• 实验三:多种影响因素下购房方案的比较


    根据呼文军[1]等建立的购房决策数学模型式(1)[1],通过对影响购房的多个因素进行科学地分析、比较,从若干备选购房方案中做出最佳的选择。

                              Q=P*WT                                     (1)

    在文章的“实例分析”中,假设某位青年教师需要通过决策方案购买房屋,综合该教师所在城市的房源进行筛选,最终选择在A、B、C、D四个小区中做最后的备选方案,确定影响购房的因素有五个:①房屋价格;②房屋面积;③与单位的距离;④房屋设计;⑤房屋周边情况。

    房源情况表如下:

    第1步:根据4个小区(备选方案)房源情况建立了评价矩阵B:

    第2步:根据第1步建立的评价矩阵求出理想方案,房价和位置为逆向指标,故选最小值为最优值;房屋面积、品牌、环境设施情况为正向指标,故选最大值为最优值,最优值矩阵C为:

    第3步:根据评价矩阵B和的评价矩阵和最优值矩阵C定义建立了同一度矩阵P

    P矩阵中各元素为对应评价B矩阵元素除以相应列的最优值(最优质为最大值),或最优值除以对应元素(最优质为最小值)

    第4步:根据五种影响购房因素的权重计算出权系矩阵W

    第5步:根据式(1)计算得到4个备选方案与理想方案的接近Q

    Q中越大的值就是越接近理想方案的选择,最大值为0.9148即B小区为最佳备选购房方案。

    假设已知房源情况表、权系矩阵W,编程计算找出最佳备选购房方案。

    要求输入PW矩阵数据,计算Q值,在Q中找出最大值对应的备选方案中的小区。(数据处理中保留4位小数)

    输入输出示例:

     代码实现:

    1. #include
    2. void ZYZ(float b[][5],float c[]){
    3. for(int i=0;i<4;i++){
    4. for(int j=0;j<5;j++){
    5. if(i==0){
    6. c[j]=b[i][j];
    7. continue;
    8. }
    9. if(j==0||j==2){
    10. if(c[j]>b[i][j]){
    11. c[j]=b[i][j];
    12. }
    13. }else{
    14. if(c[j]
    15. c[j]=b[i][j];
    16. }
    17. }
    18. }
    19. }
    20. }
    21. void TYD(float b[][5],float c[],float p[][5]){
    22. for(int i=0;i<4;i++){
    23. for(int j=0;j<5;j++){
    24. if(j==0||j==2){
    25. p[i][j]=c[j]/b[i][j];
    26. }else{
    27. p[i][j]=b[i][j]/c[j];
    28. }
    29. }
    30. }
    31. }
    32. void Q(float p[][5],float w[][1],float q[][1],int *index){
    33. for(int i=0;i<4;i++){
    34. for(int j=0;j<5;j++){
    35. q[i][0]+=p[i][j]*w[j][0];
    36. if(q[*index][0]0]){
    37. *index=i+1;
    38. }
    39. }
    40. }
    41. }
    42. int main(){
    43. int index=0;
    44. float b[4][5],c[5],p[4][5],w[5][1],q[5][1];
    45. printf("请输入房源情况表:");
    46. for(int i=0;i<4;i++){
    47. for(int j=0;j<5;j++){
    48. scanf("%f",&b[i][j]);
    49. }
    50. }
    51. printf("请输入权系矩阵W:");
    52. for(int i=0;i<5;i++){
    53. scanf("%f",&w[i][0]);
    54. }
    55. ZYZ(b,c);
    56. TYD(b,c,p);
    57. Q(p,w,q,&index);
    58. printf("\n");
    59. for(int i=0;i<4;i++){
    60. printf("第%d套房源与理想方案接近程度:%.4f\n",i+1,q[i][0]);
    61. }
    62. printf("\n第%d套房源为最佳房源",index);
    63. return 0;
    64. }

  • 相关阅读:
    IPWorks Zip Delphi 流式压缩组件
    数据可视化如何革新智慧物流管理?
    JVM参数配置
    JVM虚拟机:如何查看自己的JVM默认的垃圾回收器
    css 鼠标滑过组件变色
    2022测试岗各大厂面试真题汇总(附带答案解析)
    java面试题整理《微服务篇》六
    SpringBoot Web开发----请求参数处理
    如何实现不同MongoDB实例间的数据复制?
    GLM-4-9B 支持 Ollama 部署
  • 原文地址:https://blog.csdn.net/apprentice_eye/article/details/127705442