【COCOMO基本模型计算】

「软件项目管理」成本估算模型——Walston-Felix模型和COCOMO Ⅱ模型 Walston-Felix模型和COCOMO Ⅱ模型序言一、Walston-Felix模型1. 公式2. 举例二、COCOMO模型(Constructive Cost Model)1. 模型定义2. COCOMO模型的发展3. COCOMO基本原理三、COCOMO 811. 模型级别2. 项目类型3. 基本COCOMO-81(1)公式(2)系数表(3)举例4. 中等COCOMO-81(1)公式(2)系数表(3)乘法因子的成本驱动属性(4)乘法因子的值(5)举例5、高级(详细)COCOMO(1)定义(2)工作 阅读详情
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.Locale;
import java.util.Scanner;

public class CocomoApp {

    public static void main(String[] args) {
        System.out.println(NOTICE);
        Scanner scanner = new Scanner(System.in);

        String inputLine;
        while (null != (inputLine = scanner.nextLine()) && isNotExit(inputLine)) {
            //Select COCOMO Mode to use
            int mode = getCocoMode(inputLine);
            System.out.println("User selected: " + inputLine);

            //BASE COCOMO MODE
            if (mode == COCO_MODE_BASE) {
                //get value of kdsi for develop
                double devKdsi = getDevKdsi(scanner);

                //let user choose what develop mode they use
                mode = getDevMode(scanner, mode);

                //get predict of modify kdsi
                double modifyKdsi = getModifyKdsi(scanner);

                //calculate
                base(devKdsi, mode, modifyKdsi);
            } else {
                System.out.println("WOW HOO! NOT YET!");
            }
            System.out.println(NOTICE);
        }
    }

    /**
     * get predict of modify kdsi
     *
     * @param scanner
     * @return
     */
    private static double getModifyKdsi(Scanner scanner) {
        double act = DEFAULT_MODIFY;
        try {
            System.out.println("Please type modify KDSI (Default " + DEFAULT_MODIFY + "): ");
            act = Double.parseDouble(scanner.nextLine());
        } catch (Exception e) {
            System.out.println("Use default modify KDSI of" + DEFAULT_MODIFY + ". ");
        }
        return act;
    }

    /**
     * When user leave they can text for these two commands
     *
     * @param inputLine
     * @return
     */
    private static boolean isNotExit(String inputLine) {
        return !CMD_EXIT.equals(inputLine.toLowerCase(Locale.ROOT)) &&
                !CMD_QUIT.equals(inputLine.toLowerCase(Locale.ROOT));
    }

    /**
     * let user choose what develop mode they use
     *
     * @param scanner
     * @param mode    default mode
     * @return
     */
    private static int getDevMode(Scanner scanner, int mode) {
        String inputLine;
        System.out.println("Please type develop mode: [1]organize(default) [2]half-separate [3]embed");
        inputLine = scanner.nextLine();
        try {
            mode = Integer.parseInt(inputLine);
        } catch (Exception e) {
            System.out.println("Use organize mode for calculate.");
        }
        return mode;
    }

    /**
     * get value of kdsi for develop
     *
     * @param scanner
     * @return
     */
    private static double getDevKdsi(Scanner scanner) {
        String inputLine;
        System.out.println("Please type develop KDSI(Default 5 KDSI): ");
        inputLine = scanner.nextLine();
        double devKdsi = DEFAULT_DEV_KDSI;
        try {
            devKdsi = Double.parseDouble(inputLine);
        } catch (Exception e) {
            System.out.println("Use default develop KDSI of 5");
        }
        return devKdsi;
    }

    /**
     * Select COCOMO Mode to use
     *
     * @param modeInputted user input
     * @return mode fixed
     */
    private static int getCocoMode(String modeInputted) {
        int mode;
        try {
            mode = Integer.parseInt(modeInputted);
            mode = (mode < COCO_MODE_BASE || mode > COCO_MODE_MIDDLE) ? COCO_MODE_BASE : mode;
        } catch (Exception e) {
            System.out.println("Use default mode of Base");
            mode = COCO_MODE_BASE;
        }
        return mode;
    }

    /**
     * calculate (MM)D & TDEV & (MM)AM
     *
     * @param devKdsi devKdsi
     * @param mode mode
     * @param modifyKdsi modifyKdsi
     */
    private static void base(double devKdsi, int mode, double modifyKdsi) {
        printConstants(--mode);
        //get (MM)D
        double mmd = getMm(devKdsi, mode);
        //get TDEV from (MM)D
        getTdev(mmd, mode);
        //get (MM)AM from (MM)D and DEV-KDSI and MODIFY-KDSI
        getMmam(devKdsi, modifyKdsi, mmd);
    }

    private static void getMmam(double devKdsi, double modifyKdsi, double mm) {
        //ACT = MODIFY / (MM)D
        double act = new BigDecimal(modifyKdsi / devKdsi).setScale(2, RoundingMode.FLOOR).doubleValue();
        System.out.println("ACT ≈ " + act);
        //(MM)AM = ACT * (MM)D
        double mmam = Math.ceil(act * mm);
        System.out.println("(MM)AM ≈ " + new BigDecimal(mmam).intValue() + "(Man-Month)");
    }

    private static void printConstants(int index) {
        System.out.println(System.lineSeparator() +
                "C1 = " + CC_BASE_CONS[index][INDEX_C1] +
                ", K1 = " + CC_BASE_CONS[index][INDEX_K1] +
                ", C2 = " + CC_BASE_CONS[index][INDEX_C2] +
                ", K2 = " + CC_BASE_CONS[index][INDEX_K2]);
    }

    private static void getTdev(double mm, int index) {
        double tdev = CC_BASE_CONS[index][INDEX_C2] * Math.pow(mm, CC_BASE_CONS[index][INDEX_K2]);
        tdev = BigDecimal.valueOf(tdev).setScale(2, RoundingMode.FLOOR).doubleValue();
        System.out.println("TDEV = C2 * (MM)^K2 = " +
                CC_BASE_CONS[index][INDEX_C2] + " * " +
                mm + "^" +
                CC_BASE_CONS[index][INDEX_K2] +
                " ≈ " + BigDecimal.valueOf(tdev).setScale(2, RoundingMode.FLOOR) + "(M)");
    }

    private static double getMm(double devKdsi, int index) {
        double mm = CC_BASE_CONS[index][INDEX_C1] * Math.pow(devKdsi, CC_BASE_CONS[index][INDEX_K1]);
        mm = BigDecimal.valueOf(mm).setScale(2, RoundingMode.FLOOR).doubleValue();
        System.out.println("MM = C1 * (KDSI)^K1 = " +
                CC_BASE_CONS[index][INDEX_C1] + " * " +
                devKdsi + "^" +
                CC_BASE_CONS[index][INDEX_K1] +
                " ≈ " + mm + "(Man-Month)");
        return mm;
    }

    private static final String NOTICE = System.lineSeparator() + "Choose COCOMO [1]Base(Default) [2]Middle, type \"exit\" or \"quit\" for exit:";
    private static final double[][] CC_BASE_CONS = new double[3][4];
    private static final int INDEX_ORG = 0;
    private static final int INDEX_HALF_SEP = 1;
    private static final int INDEX_EMBED = 2;
    private static final int INDEX_C1 = 0;
    private static final int INDEX_K1 = 1;
    private static final int INDEX_C2 = 2;
    private static final int INDEX_K2 = 3;
    private static final int COCO_MODE_BASE = 1;
    private static final int COCO_MODE_MIDDLE = 2;
    private static final String CMD_EXIT = "exit";
    private static final String CMD_QUIT = "quit";
    private static final double DEFAULT_MODIFY = 1.0;
    private static final double DEFAULT_DEV_KDSI = 5.0;

    static {
        //ORGANIZE CONSTANTS
        CC_BASE_CONS[INDEX_ORG][INDEX_C1] = 2.4;
        CC_BASE_CONS[INDEX_ORG][INDEX_K1] = 1.05;
        CC_BASE_CONS[INDEX_ORG][INDEX_C2] = 2.5;
        CC_BASE_CONS[INDEX_ORG][INDEX_K2] = 0.38;
        
        //HALF-SEPARATE CONSTANTS
        CC_BASE_CONS[INDEX_HALF_SEP][INDEX_C1] = 3.0;
        CC_BASE_CONS[INDEX_HALF_SEP][INDEX_K1] = 1.12;
        CC_BASE_CONS[INDEX_HALF_SEP][INDEX_C2] = 2.5;
        CC_BASE_CONS[INDEX_HALF_SEP][INDEX_K2] = 0.35;
        
        //EMBED CONSTANTS
        CC_BASE_CONS[INDEX_EMBED][INDEX_C1] = 3.6;
        CC_BASE_CONS[INDEX_EMBED][INDEX_K1] = 1.2;
        CC_BASE_CONS[INDEX_EMBED][INDEX_C2] = 2.5;
        CC_BASE_CONS[INDEX_EMBED][INDEX_K2] = 0.32;
    }
}

软考133-上午题-【软件工程】-软件项目估算 COCOMO 估算模型(基本、中级、详细)、COCOMOII 模型(对象点、功能点、代码行) 阅读详情

相关推荐

如何估算测试工作量(三) COCOMO模型

如何估算测试工作量 (三) COCOMO模型 – 常见的软件规模估算方法        代码行分析方法作为一种度量估计方法,在20世纪80和90年代得到非常广泛的发展,在业界开发了又许多中估算工作量和进度的参数模型,其中最著名的就COCOMO模型,它的最新版本是COCOMO II模型. COCOMO,英文全称为constructive cost model,中文为构造性成本模型.它是

Alex ♋ 博客 4210

软件项目管理第4版课后习题[附解析]第六章

一、填空题 1.软件项目成本包括直接成本和间接成本,一般而言,项目人力成本归属于(直接)成本。 2.再在项目初期,一般采用的成本估算方法是(类比估算法)。 3.功能点方法中5类功能组件的计数项是(外部输入)、(外部输出)、(外部查询)、(内部逻辑文件)、(外部接口文件)。 4.敏捷项目一般采用(故事点)估算方法。 5.(用例点)方法通过分析用例角色、场景和技术与环境因子等来进行软件估算。 二.判断题 1.故事点估算是一个相对的估算过程。(√) 2.在软件项目估算中,估算结果是没有误差的。(×) 3.人的劳动

Serendipity 3万+

Cocomo模型说明-下载即用.zip

源码链接: https://pan.quark.cn/s/f7e2d00bdac0 AppBundleDemo 重大提醒 由于跟 的研发负责人沟通后,他们已经从 fir-cli(2.0.2) 开始已经支持 格式安装包的上传,所以针对 包的流程有了新的方案: --> (软件地址) --> --> fir-cli 的支持更新内容如下: aab 安装辅助安装软件运行示意: image 最近更新 2020年7月23日 已经直接弃用buildGooglePlayAAB.sh 脚本的打包验证方式; 新增了 buildapk.gradle 和 buildaab.gradle 两个文件,主要是负责自定义 apk 和 aab 的打包任务,方便 把安装包上传; 增加动态化模块下载测试逻辑,目前这个测试应用已经在 上架,所以是可以在线测试的,应用地址; 新增字节跳动的 AabResGuard 资源混淆处理插件; 探索过程详情 参与出海应用开发的开发者应该都知道 从 开始强制要求在 上发布的应用都要支持 64 位(确保你的应用支持 64 位设备),所以对应开发者来说,如果还继续采用传统的 apk 格式的话,最少会包含两份 SO 包(armeabi-v7a 和 arm64-v8a),如果用的 SO 包比较多的应用,包大小会直接大很多,像我这边负责的应用就直接增长大概 15M。 针对这种情况,Google 官方也提供了对应的解决方案:,虽然目前 GP 还未强制要求使用 App Bundle,不过 GP 后台提交更新的时候,已经通过提醒的方式建议开发者使用 App Bundle 格式,相信在不远的未来会出现强制要求的一天。 为了能够比较好的大幅度降低安装包大小,负责的最近开始尝试使用 Ap...

COCOMOII模型--软件成本估算

1、COCOMOII模型介绍 1981年,Barry Boehm在其经典著作《软件工程经济学》中,介绍了一种软件成本估算模型的层次体系,称为COCOMO(Constructive Cost Model,构造型成本模型)。这是Barry Boehm研究了加利福尼亚的TRW咨询公司的大量项目数据后,推导出的一个成本模型,他代表了软件成本估算综合经验的一个模型,为估算软件项目的成本和进度提供了一个良好定义的开放性的基础。1981年提出的原始COCOMO模型,即COCOMO81,在实际应用中取得了较好的效果,很好

tongVSYOUHUO的博客 1万+

cocomo模型详解cocomo模型详解

cocomo模型详解cocomo模型详解cocomo模型详解cocomo模型详解cocomo模型详解cocomo模型详解

VSCode搭配Keil开发STM32:从环境配置到代码跳转全流程(避坑指南)

本文详细介绍了如何使用VSCode搭配Keil进行STM32开发,从环境配置到代码跳转的全流程指南。通过安装必备插件和正确配置项目文件,开发者可以在VSCode中享受现代编辑器的便捷功能,同时保留Keil的编译调试能力,提升嵌入式开发效率。

weixin_28832121的博客 253

<软件过程与改进>计算大题考点总结与例题

1.PSP_PROBE估算法 常见考法:给历史数据,需要选择代理规模的估算值和程序规模/所需资源的实际值,用以下公式求得拟合公式参数 然后使用公式计算出未知的程序规模/所需资源 例题 2.PSP过程质量的度量指标_yield 常见考法:给出缺陷日志,包含每个阶段注入和消除缺陷数,要求计算各个阶段的phase yield和总的process yield,公式如下 进阶考法依据这句话:在测试中每发现一个缺陷,往往意味着还有一个缺陷没有被发现。也就是把单元测试的phase yield设置为50,遗留缺陷数和

行步至春深 1425

多机器人编队人工势场法协同避障算法原理及实现

ROS及SLAM进阶教程(十一)多机器人编队人工势场法协同避障算法原理及实现避障算法原理避障算法仿真 多机器人协同编队需要将理论和实践紧密地结合起来,其应用包括编队队形生成、保持、变换和路径规划与避障等等都是基于图论的理论基础完成的。 详细请参考ROS及SLAM进阶教程(八)多机器人协同编队算法原理及实现 自主避障功能是机器人编队在各种环境中保持自身安全的重要功能,在编队的基础上加入避障的功能,机器人可扫描到一定范围内的障碍物(包括其他机器人),在即将与之发生冲突时提前规避冲突,以保证自身的安全性,同时

Redglass的博客 1万+

成本估算模型

中级COCOMO看代码量,硬件,人员等因素。详细COCOMO:考虑的因素比前面二者更多。基本COCOMO计算成本看代码量。COCOMO II模型。

2301_81968528的博客 351

FPGA新手必看:Quartus生成jic文件全流程详解(附AS/JTAG模式选择指南)

本文详细解析了在Quartus中生成JIC文件以固化FPGA程序到Flash的全流程。核心在于理解JIC文件作为连接JTAG调试与AS固化的桥梁作用,并重点阐述了Convert Programming Files工具的关键配置步骤、AS与JTAG模式的选择逻辑,以及烧录过程中的常见问题排查指南,帮助开发者实现程序断电不丢失。

weixin_29271053的博客 274

YOLOv11改进,YOLOv11引入B2CNet的BFAM(双时相特征聚合模块),JSTARS 2024,二次创新C3k2结构

YOLOv11改进,YOLOv11引入B2CNet的BFAM(双时相特征聚合模块),JSTARS 2024,二次创新C3k2结构

在职AI算法工程师,擅长计算机视觉,YOLO目标检测、分割等,擅长web、pyqt界面可视化,好内容持续更新中,来这里跟大家一起学习,共同进步 406

【软考】COCOMO估算模型

2.中级 COCOMO 模型以基本 COCOMO 模型为基础,并考虑了 15 种影响软件工作量的因素,通过。3个层次,除包括中级模型所考虑的因素外,还考虑了在需求分析、软件设计等每一步的成本驱动属性的影响。分为基本COCOMO模型、中级COCOMO模型和详细COCOMO模型。1.中级 COCOMO 模型是一个静态多变量模型,它将软件系统模型分为。,L是软件产品的目标代码行数,单位是千行代码数,a、b是常数。的值L,然后计算开发工作量和开发时间的估算值。2.是一种精确的、易于使用的成本估算模型。

王佑辉的博客 3499

海上风电经柔性直流送出系统的阻抗建模与稳定性分析

摘要 本文针对海上风电经柔性直流送出系统的稳定性问题,提出了一种基于阻抗建模的分析方法。研究建立了直驱永磁同步发电机(PMSG)的序阻抗解析模型和模块化多电平换流器(MMC)的交流侧小信号阻抗模型,通过Matlab/Simulink平台实现了完整的仿真验证系统。采用谐波线性化原理和端口阻抗分析法,揭示了风电机组与柔直换流器之间的阻抗匹配特性对系统稳定性的影响规律。研究结果表明,控制参数设置会显著改变系统阻抗特性,进而影响稳定裕度。文中提出的阻抗建模方法为分析海上风电柔直送出系统的宽频振荡问题提供了有效工具,

huanghm88的专栏 232

软件规模估算之COCOMO模型应用解读

   COCOMO模型是由TRW公司开发,Boehm提出的结构化成本估算模型。是一种精确的、易于使用的成本估算方法。   模型按其详细程度可以分为三级:基本COCOMO模型,中间COCOMO模型,详细COCOMO模型。其中基本COCOMO模型是是一个静态单变量模型,它用一个以已估算出来的原代码行数(LOC)为自变量的经验函数计算软件开发工作量。中级COCOMO模型在基本COCOMO模...

知识的宝藏 5883

关于 ABAP OPEN SQL 的动态 WHERE 条件和 Dynamic Selections

ABAP动态查询技术解析 本文介绍了ABAP中实现灵活数据库查询的动态选择技术,通过FREE_SELECTIONS函数组实现用户自定义查询条件。核心内容包括: 传统固定WHERE条件的局限性,无法满足业务多变需求 Dynamic Selections机制的工作原理,使用FREE_SELECTIONS_INIT初始化、FREE_SELECTIONS_DIALOG交互 完整Demo程序演示如何构建通用表数据浏览器: 用户输入表名后校验权限 调用动态选择函数生成条件 动态拼接WHERE子句执行查询 使用CL_SA

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 672

YOLO26改进策略【Neck】| CVPR2025 LCA轻量交叉注意力 跨层级双向引导 + 分层降噪增强,提升微小目标特征表达

简单相加、拼接融合无法建立深浅层双向约束关系,浅层微小目标易被深层背景覆盖,深层全局信息难以修正浅层噪声;普通单路自注意力仅单一层内建模依赖,缺少跨层级特征互引导机制,深浅特征信息割裂;标准多头跨注意力计算量大、参数量高,轻量化单模态检测/分割网络部署困难,无法区分前景目标与背景噪声。为此设计单模态轻量化交叉注意力LCA,构建浅层细节、深层语义双分支双向引导结构,轻量完成跨层级特征交互,同步降噪并强化单模态微小目标特征。

Limiiiing的博客 522

COCOMO软件成本估算模型(软考)

COCOMO用3个不同层次的模型来反映不同程度的复杂性,它们分别为:基本模型(Basic Model):是一个静态单变量模型,它用一个以已估算出来的源代码行数(LOC)为自变量的函数来计算软件开发工作量。中级模型(Intermediate Model):则在用LOC为自变量的函数计算软件开发工作量的基础上,再用涉及产品、硬件、人员、项目等方面属性的影响因素来调整工作量的估算。详细模型(Detailed Model):包括中级COCOMO型的所有特性,但用上述各种影响因素调整工作量估算时,还要考虑对

m0_63839619的博客 1637

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

【软件工程】软件项目估算(LOC/FP/COCOMO)+ 风险管理

文章摘要(148字): 软件项目估算与风险管理是软考中级高频考点。估算方法包括LOC(代码行)、FP(功能点)和COCOMO模型,后者分有机型、半独立型和嵌入型三种模式,通过KLOC计算工作量与工期。风险管理四步流程为识别、分析、应对(规避/转移/减轻/接受)和监控,需量化风险值(概率×影响)。FP估算与编程语言无关,适用于早期;COCOMO适合各类项目,需掌握公式计算。例题解析强调估算套用与风险策略判断,口诀辅助记忆核心要点。

bianyuan172的博客 256

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

CoCoMo模型

CoCoMo模型 计算机软件的估算模型是根据以前完成项目的实际数据导出的,用于软件项目的计划阶段。模型是根据“从前的”,“局部的”数据得出的,估算模型不可能完全适用于当前所有的软件项目和全部开发环境。这些模型的计算结果仅供参考。1981年Boehm提出“构造性成本模型”(Constructive Cost Model),简称CoCoMo模型。它是在静态、单变量模型的基础上构造出来的. ...

xinzheng_wang的博客 1421

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

CoCoMo模型计算方法

CoCoMo模型计算方法<br />软件项目管理2007-04-27 10:44:24阅读326评论0  字号:大中小 订阅<br />  <br />CoCoMo模型<br /> <br /> <br />计算机软件的估算模型是根据以前完成项目的实际数据导出的,用于软件项目的计划阶段。<br />     模型是根据“从前的”,“局部的”数据得出的,估算模型不可能完全适用于当前所有的软件项目和全部开发环境。这些模型的计算结果仅供参考。<br />     1981年Boehm提出“构造性成本模型”(Con

nightelvesimba的专栏 1万+

软件度量 COCOMO工作量估计模型

最近在《软件协同设计》课程中学习了COCOMO工作量估计模型,在此进行总结。

Curren的博客 7037

COCOMO II 模型是原始 COCOMO 模型的升级版,针对现代软件开发环境进行了重要改进

✅ 快速应用开发(RAD) ✅ 基于 GUI 的桌面或 Web 应用(如ERP、CRM前端) ✅ 使用低代码/无代码平台(如OutSystems、Mendix) ✅ 数据驱动的应用(大量表单+报表) ✅ 高度依赖框架或组件集成的系统(如Spring Boot + Vue + 微服务)

[Blog][Domain] programb.blog.youkuaiyun.com 1797

软件工程预测模型之COCOMO

原文为GeeksforGeeks网站Link 分类 Cocomo(Constructive Cost Model)是基于代码行的回归模型。它是软件项目的程序成本估算模型,通常用作可靠地预测与项目相关的各种参数的过程,例如大小、工作量、成本、时间和质量。它由Barry Boehm在1981年提出,该研究基于63个工程,使他成为了记录最好的模型之一。 模型的关键参数有两个,工作量和进度。 工作量: 完成单个任务所需要的人工,通常用人月来表示。 进度: 完成整个工程所需要的时间,和工作量成比例。通常用时间单位表

赵星汉同学的博客 6493

COCOMO模型是一种静态单变量的软件成本估算模型,它以代码行数作为主要的估算变量

**答案**:COCOMO(构造性成本模型) **解析**:COCOMO模型是一种静态单变量的软件成本估算模型,它以代码行数作为主要的估算变量,可用于对整个软件系统的成本、工作量等进行估算。

[Blog][Domain] programb.blog.youkuaiyun.com 1457

COCOMO模型(Constructive Cost Model)是一种用于估算软件开发项目工作量和成本的模型

COCOMO(Constructive Cost Model)模型是一种用于估算软件开发成本和工作量的模型,它有多个版本,主要包括基本COCOMO模型、中级COCOMO模型和高级COCOMO模型。综上所述,COCOMO模型中的乘数因子通过对不同特性的综合考量,帮助更准确地估算软件开发的成本和工作量。:项目的特定属性,如现代编程实践的使用、应用类型的复杂度、使用的工具和编程语言等,也会通过乘数因子反映在成本估算中。需要注意的是,乘数因子的确定并不是一成不变的,它可能会随着项目的进展和新信息的出现而进行调整。

[Blog][Domain] programb.blog.youkuaiyun.com 1957
上一篇: 【信息检索】
下一篇: 【项目经济评价相关公式】
相信光的疯子
博客等级 码龄18年 91粉丝 57原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值