本人研一小萌新,最近深圳疫情很严重,也不能出学校。就参加了这个比赛试试水。太菜了,已经结束了,将一些错误的思路分享一下。希望对后面队伍有一些帮助(反正也卷不到我了)。希望兄弟们帮我点点赞,去github点点小星星。

背景

我的研究是做软硬件开发的,平时干的最多的就是对着电机调PID(仿真做的多,电机烧了就很麻烦),偶尔搞搞磁悬浮啥的。本科之前有一点软件的基础,会python,会写C。后来想说还是软件赚钱,就想找找机会。其他两个组员基本是这个情况,一个做交通,一个做机器人。所以我们对这个题目是真的没有方向,就硬做,最后起码是有分数的,没有躺着等死,还是挣扎了一会的。

总体思路

首先,我们看到这个题目,先懵了3天。找了几天资料,一点鸟用都莫得。后来决定还是用土办法,用我们浅显的数学知识去填。

我们把他分成了两个问题,首先是基本的问题,就是要分配的问题,我们要把节点的流量分配到客户身上。客户是一个等式约束,而节点是一个不等式约束。

后一个问题是优化的问题,这个我们也整不明白。也是用土办法,用贪心法进行推动,但是也是这个方法效果没有达到我们的预期,也就比原来少了5-6%。

问题一:

第一步,由于时间是离散的,中间没有连续的信息,所以我们可以将每个时刻单独分开,可以看做是一个多元函数的求解问题。这个求解析解是不太可能的,而且可以肯定不是唯一解(不然谁会做?),解的空间还很大。

所以求解的问题应该不大,问题是需要一个怎么样的最优解。由于根本对题目没有理解,所以我们首先尝试求一种理想的解——期望在每个节点分配的流量相对比较平均。

在求解这个数学问题上,我们这个草民也没有很好的办法,只能采用梯度下降的方法,期望通过迭代计算和的方法。

首先我们先通过等式约束,创建一个满足等式约束的解,然后沿着等式约束的解的约束空间不断移动,直到进入不等式约束的解空间里,直到找到我们满足的解为止。

人话就是,我的将分配方案变成一个矩阵,然后矩阵的行代表一个客户,矩阵的列代表一个节点。

int slove_Mat_all[8929][36][136]; //全部的解存放矩阵

然后,通过客户的需求,按照行进行矩阵的初值的填充(也要用到那个QOS的矩阵),然后按照行进行挪移,挪移的过程中让他按照我们想要的形状移动,也就是尽量平均的方法(通过对节点现在的宽带进行均一化得到移动的方向),步长和冲量就是靠试出来了。

搬动的原则(限幅)有两个:

  1. 不能搬成负数
  2. 不能超过带宽的上限

后来一直认为这个很难求,在测试的时候一直不能通过,后来才发现是前面读取,后面输出都有细节的问题,python里面还有一些小bug,真的是始料未及,活生生被憋死。但是平均化后,发现这个好像不是关键,这个就比瞎鸡儿乱分,就好那么个7-8%。忙活那么久,真的是。。上头。

问题二

这个就开始头疼了,最最最根本的问题就是,我们完全不知道,95%的点到底有什么意义,做到怎么样才能优化这个指标。就只能用土办法。。。

我们想到的土办法,就是找到上面的解中的占95%的时间的矩阵,然后把他占95%的搬走,很自觉,也很朴素。搬动的原则和上面一样。心里的OS是,只要搬得够多,那么分数肯定能下来。就是那么简单。一次搬动的T就靠占最多的95%的节点,然后搬,农民工只会搬砖。

搬动的原则和上面一样。有用,但是没有我们预期那个好,最后会在两个时间之间反复横跳(有一种局部最小值的感觉),我们也解决不了这个问题 。

代码

代码可以在github上下载,有一开始的python版本,还有后面学了两天C++写的基本是C语言的C++版本https://github.com/szuforti/-2022-

感受

这种计算机的比赛和一些硬件和别的真的很不一样。主要是感觉调试很麻烦,他的数据集不会出现一些特殊情况,全靠自己脑补,还得生成出需要的数据,同时数据又不是一点点,就很麻烦。其次就是没有代码的思路,完全不知道自己要往什么方向上前进。就是一直摸着石头,然后掉水里了。软件本来说简简单单用python,后来发现速度完全不行,逼着自己学了C++,后来写成了C的模样。当然也希望这个思路是有用的,以后应该是不会再掺和这种事情了,好好调电机去了。

又仔细一想,我那么拼命就是为了给他打工,这不是大亏了,哪有打工人这么卖命的?

2022华为软件精英挑战赛——梯度方法相关推荐

  1. 2022年华为软件精英挑战赛区域初赛解读(基于数学规划模型附代码)

    0 写在前面的 本文是对2022年华为软件精英挑战赛(普朗克计划)区域初赛的一个解读.首先说明的是本文的算法无法直接拿来参赛的,因为区域初赛的要求是不能调用其它的算法包,python的话只能用nump ...

  2. 2023华为软件精英挑战赛,探寻软件人才与科技创新的最优解

    作者 | 曾响铃 文 | 响铃说 今天,软件行业正呈现出江河入海一般的大汇流趋势. 一方面是技术的汇流,诸如人工智能等前沿技术与软件行业的深度融合,正全面颠覆软件产品的开发模式和服务逻辑. 另一方面则 ...

  3. 2016华为软件精英挑战赛:赛题及其答疑汇总

    注:本文文字均摘自官方指定网站和论坛,权威且可信,答疑见中间部分,非常全,众玩家可放心阅读. 同时文末给出了包括自己在内的诸多玩家的解法. 前言 赛题源自"未来网络"业务发放中的路 ...

  4. 2021华为软件精英挑战赛(杭厦第20名)

    写在前面 距离华为软件精英挑战赛结束也有一段时间了 我是浙工大投降战队的队长,第一次参加这种比赛能打到复赛我还是比较满意的 这次比赛我最大的收获就是认识了好多厉害的大佬 希望我们杭厦赛区晋级的战队总决 ...

  5. 2017华为软件精英挑战赛小结

    // 2017华为软件精英挑战赛小结 // 不说废话,直接上货!希望对目前的参赛者,或日后学习的人,提供一些参考和思路. #include <赛题说明.pdf>    //  见附录文件 ...

  6. 2018华为软件精英挑战赛

    今天12点,历时一个多月的2018华为软件精英挑战赛训练赛结束了,最后分数215.597(总分300),很遗憾,前64都没能进,不过还算尽力坚持到最后. 3月初,华为软赛开始一周后,看到师兄他们在弄, ...

  7. 2020华为软件精英挑战赛总结

    2020华为软件精英挑战赛总结 00 赛题描述 01 整体思路 02 数据读取以及正反向图构建 03 多线程找环运动 031 反向DFS 3层构建P3 032 正向DFS 4层找环 04 结果输出 0 ...

  8. 2017年华为软件精英挑战赛初赛解题思路

    2017年华为软件精英挑战赛初赛解题思路 题目链接:http://codecraft.huawei.com/  常规解题思路:网络流(最小费用最大流)+ 启发式搜索算法 + 算法性能优化 1. 最大流 ...

  9. 2021华为软件精英挑战赛总结分享

    2021华为软件精英挑战赛总结分享 随着大赛的结束,自己的2021软挑也落下了帷幕,很幸运在自己学业生涯的最后几个月能够再参加一次华为软挑,虽然成绩不是特别好,但已经满足了.这是自己第二次参加华为的比 ...

  10. 2017华为软件精英挑战赛参赛过程回顾与心得

    参赛队名:武长区 枪林弹雨 2017年4月26日,一波三折的复赛终于结束了,我们队最终没能进入决赛.虽然在意料之中,不过还是有些小失望.已经为这个比赛忙了一个月,突然之间不知道干什么好了,干脆写一写自 ...

最新文章

  1. 解决安卓机在微信上播放视频有广告问题
  2. 【Android 插件化】Hook 插件化框架 ( Hook 技术 | 代理模式 | 静态代理 | 动态代理 )
  3. centos 日志审计_Linux\CentOS中auditd安全审计工具的使用
  4. 祝贺自己操作系统JAVA项目有进展!!
  5. 2014年夏末大Java新闻
  6. 抛物线的中点生成算法_零基础学习梯度下降算法
  7. Linux下设置和修改IP
  8. “Alexa,喂我吃草莓”机器人女仆现身,会做饭还会喂食
  9. Linux企业级项目实践之网络爬虫(29)——遵守robots.txt
  10. sed修炼系列(二):sed武功心法(info sed翻译+注解)
  11. eclipse git拉取失败_收藏!工作中Git使用实践和常用命令流程合集
  12. Eclipse运行慢
  13. 哈工大计算机学院人才招聘,计算机学院教师赴澳大利亚进行学术访问及人才招聘...
  14. Ruby on Rails 中你使用了Kaminari 后,千万不要再引入will_pagination 这个Gem 了
  15. 计算机游戏攻略32关,保卫萝卜3游乐场第32关通关攻略 保卫萝卜3分享
  16. 嵌入式系统之-小米路由器3G v1
  17. js实现推迟时间半小时
  18. 不论你技术多牛,这13条职场“潜规则”,越早知道越好!
  19. CSP-S 2021 游记
  20. JSch SSH2 for Java

热门文章

  1. 网络协议梳理(四)(socket、想要实现高并发,可以通过以下四种方式)
  2. B-M求线性移位寄存器
  3. 线性反馈移位寄存器实现产生伪随机数M序列
  4. secureCRT下载地址,亲测有效
  5. JAVE 视音频转码
  6. 《Android框架揭秘》——2.2节搭建Android平台编译环境
  7. 拿来就能跑,1200多套微信小程序源码-史上最全的不同行业的源码集合
  8. 说说 XcodeGhost 这个事
  9. TC397 CANFD 用例分析
  10. 基于 RT-Thread Studio的CPK-RA6M4 开发环境搭建指南