工作中遇到了一个问题,不知应该是属于算法还是数学建模,求助大神帮小弟解决!

活宝 2014-03-24 10:37:46
有这样一个需求:


我想建立一个公式,对一个系统的健康状况进行打分。系统有大概200个测试点,每个测试点都有自己的风险指数,风险指数=badcase样本数/总样本数。


比如,第101个测试点中,测试的badcase有6个,总样本数为100,那么第101个测试点的风险指数为6/100=0.06。


每个测试点中,均有100个样本。大部分测试点,风险指数都很低,但不排除小部分测试点的风险指数可以达到0.9以上。


现在想建立一个算法,输入为系统所有的测试点,和各自的风险指数。输出为一个数值,代表系统的健康得分,具体要求:
1. 测试点的风险指数越高,系统的健康得分应该越低
2. 系统得分最好在0~100之前,可以精确到小数
3. 系统得分最好能和测试点的优化挂钩,比如:某次系统评分得了86.5分,如果我对某个测试点进行了优化,降低了其风险指数,那么系统得分会略有上升,比如可能到86.8分


求大家帮小弟想出这么一种算法,不要太复杂,但是要合理


谢谢
...全文
1215 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
蓝色的杯子 2014-03-27
  • 打赏
  • 举报
回复
各站点如果重要性相同, 则个站点平分100分, 对每个站点, 如果没有风险, 就是满分, 如果全是风险就是0分, 之间的给一个普通的线性关系就好。 看你的选择了
活宝 2014-03-27
  • 打赏
  • 举报
回复
引用 12 楼 wisdomfriend 的回复:
系统的输入变量 个站点的风险值, 输出值 总的评价值 用线性关系就行啊 y = a*x + b
没看懂,求细化~
蓝色的杯子 2014-03-27
  • 打赏
  • 举报
回复
系统的输入变量 个站点的风险值, 输出值 总的评价值 用线性关系就行啊 y = a*x + b
仙境之桥2046 2014-03-26
  • 打赏
  • 举报
回复
1 楼的方式就挺好,适用简单...
derekrose 2014-03-26
  • 打赏
  • 举报
回复
或增加测试点权重信息
derekrose 2014-03-26
  • 打赏
  • 举报
回复
均值. .
活宝 2014-03-26
  • 打赏
  • 举报
回复
引用 1 楼 xiaohuh421 的回复:
函数参数传入每个测试点的数据. typedef struct { int basecase; int totalSample; } AAA; double Fun( AAA* pSampleArry, int nCount) { } 把每个测试点计算的得分累加即可. 当然, 你得对每个测试点分配得分. 因为你总分为0-100, 那么如果有100个测试点, 可能平均分配,就每个点1分. 然后把 6/100=0.06 这个结果映射到那1分中去. 100个点累加后, 自然能保证小于100分.
如果补充一个需求,比如加一个测试要点,如果风险指数高于平均水平,那么总分应该下降,否则总分上升,这样算法应该是什么样的呢
活宝 2014-03-25
  • 打赏
  • 举报
回复
引用 3 楼 worldy 的回复:
先建模,然后才有算法,模型不同,算法肯定就不同
求这个问题的数学建模~
活宝 2014-03-25
  • 打赏
  • 举报
回复
引用 4 楼 zhao4zhong1 的回复:
可以参考一下OpenCV中的人脸识别算法。
直接高大上了啊~~ 我感觉仅需要一个简单的公式就满足了,不用搞的太理论~
赵4老师 2014-03-25
  • 打赏
  • 举报
回复
可以参考一下OpenCV中的人脸识别算法。
worldy 2014-03-25
  • 打赏
  • 举报
回复
先建模,然后才有算法,模型不同,算法肯定就不同
活宝 2014-03-25
  • 打赏
  • 举报
回复
引用 1 楼 xiaohuh421 的回复:
函数参数传入每个测试点的数据. typedef struct { int basecase; int totalSample; } AAA; double Fun( AAA* pSampleArry, int nCount) { } 把每个测试点计算的得分累加即可. 当然, 你得对每个测试点分配得分. 因为你总分为0-100, 那么如果有100个测试点, 可能平均分配,就每个点1分. 然后把 6/100=0.06 这个结果映射到那1分中去. 100个点累加后, 自然能保证小于100分.
确实是一个不错的思路,谢谢!大家还有别的方案么
xiaohuh421 2014-03-25
  • 打赏
  • 举报
回复
函数参数传入每个测试点的数据. typedef struct { int basecase; int totalSample; } AAA; double Fun( AAA* pSampleArry, int nCount) { } 把每个测试点计算的得分累加即可. 当然, 你得对每个测试点分配得分. 因为你总分为0-100, 那么如果有100个测试点, 可能平均分配,就每个点1分. 然后把 6/100=0.06 这个结果映射到那1分中去. 100个点累加后, 自然能保证小于100分.
wwzhzh 2014-03-25
  • 打赏
  • 举报
回复
double s=0;
for i=0~测试点.length{
	s += 测试点[i].指数
}
健康 = 100 - s/2
随便测测..

5,530

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 模式及实现
社区管理员
  • 模式及实现社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧