Cpk (Process Capability Index)

Cpk (Process Capability Index)制程能力指数

Cpk的意义:制程水平的量化反映
制程能力指数:是一种表示制程水平高低的方法,其作用是反映制程合格率的高低

CPK的计算公式

Cpk=Cp(1-|Ca|)

Ca (Capability of Accuracy):制程准确度
Ca 在衡量“实际平均值“与“规格中心值”之一致性
1.对于单边规格,不存在规格中心,因此也就不存在Ca
2.对于双边规格:
Ca=[(X1+X2+… …+Xn)/n-C]/(T/2)
USL:规格上限
LSL:规格下限
C:规格中心[C=(USL+LSL)/2]
T:规格公差[T=USL-LSL]

Cp (Capability of Precision) :制程精密度
Cp衡量的是“规格公差宽度”与“制程变异宽度”之比例

  1. 对于只有规格上限(USL)和规格中心的规格:
    Cpu=[USL-(X1+X2+… …+Xn)/n]/3σ
  2. 对于只有规格下限(LSL)和规格中心的规格:
    Cpl=[(X1+X2+… …+Xn)/n-LSL]/3σ
  3. 对于双边规格:
    Cp=(USL-LSL)/6σ

C#代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Common.Arithmetic
{
    /// <summary>
    /// Cpk (Process Capability Index )的定义:制程能力指数; 
    /// Cpk的意义:制程水平的量化反映;(用一个数值来表达制程的水平) 制程能力指数:是一种表示制程水平高低的方便方法,其实质作用是反映制程合格率的高低。  
    /// Cpk=Cp(1-|Ca|)
    /// Ca(Capability of Accuracy):制程准确度; 
    /// Cp(Capability of Precision) :制程精密度;
    /// 注意: 计算Cpk时,取样数据至少应有20组数据,而且数据要具有一定代表性。
    /// </summary>
    public class Cpk
    {
        protected double[] _values;
        protected double _usl;
        protected double _lsl;
        protected double _cl;
        protected double _avg;
        protected double _sigma;
        protected double _ca;
        protected double _cpu;
        protected double _cpl;
        protected double _cp;
        protected double _cpk;

        public double USL
        {
            get { return _usl; }
        }

        public double LSL
        {
            get { return _lsl; }
        }

        public double C
        {
            get { return _cl; }
        }

        public double X
        {
            get { return _avg; }
        }

        public double T
        {
            get { return _usl - _lsl; }
        }

        public Cpk(double[] values,double lsl,double usl)
        {
            _values = values;
            _lsl = lsl;
            _usl = usl;
            _cl = (_usl + lsl) / 2;
            calSigma();
            calCa();
            calCpu();
            calCpl();
            calCp();
            calCpk();
        }

        private void calSigma()
        {
            double sum = 0;
            foreach(double val in _values)
            {
                sum += val;
            }
            _avg = sum / _values.Length;
            sum = 0;
            foreach (double val in _values)
            {
                sum += (val-_avg)*(val- _avg);
            }
            _sigma = Math.Sqrt(sum/(_values.Length-1));
        }

        private void calCa()
        {
            _ca = (_avg - _cl) / (T / 2);
        }

        private void calCpu()
        {
            _cpu = (_usl - _avg) / (3 * _sigma);
        }

        private void calCpl()
        {
            _cpl = (_avg - _lsl) / (3 * _sigma);
        }

        private void calCp()
        {
            _cp = (_usl - _lsl) / (6 * _sigma);
        }

        private void calCpk()
        {
            _cpk = _cp * (Math.Sqrt((1 - _ca) * (1 - _ca)));
        }
    }
}

无聊用C#写的一个简单双边规格的Cpk,未验证!!!
可添加几个Cpk,Ca,Cp,Cpu,Cpl属性,用来显示相关数据。
计算公式来源网络,所以未加解释,防止侵权。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Big.Joe

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值