下载 App

[抛砖引玉]ε(x)函数的近似,以及借此实现的分段函数

修改于07/2888 浏览攻略
在实战中,直接找到一个简单函数穿过种种障碍击杀敌人,往往是困难的。受限于人的短时算力,分段函数几乎是最优解。而实现分段函数最经典的方案大概是:
f(x)=∑[ε(x-t_k1)-ε(x-t_k2)]*f_k(x)
通过一系列函数的叠加,使得f(x)在[t_k1,t_k2]上值等于f_k(x)。
由此可见,要实现分段函数,只需要实现对ε(x)的近似就行了,在这里简单介绍一下作者在使用的近似函数
ε(x-t)≈1/(1+0.1^(10(x-t)))
而我们在实际应用的时候,ε(x)经常是成对出现的,那么就可以使用以下改进近似函数:
ε(x-t1)-ε(x-t2)=1/(1+0.1^(-10(x-t1)(x-t2)))
实战应用
在介绍过分段函数后,我们便可以通过拼凑函数的方法,简单的击杀开阔地带的敌人,函数的设计思路大概是:
f(x)=路径函数+扫描函数
其中路径函数是利用分段函数实现的若干折线,当可以通过路径函数达到能够使用直线瞄准敌人的x值后,可以使用扫描函数对指定区域进行大范围打击,根据此时的相对位置有三种情况:
1.目标点在正右侧
使用Asin(5x)即可,根据地形允许范围A越大越好,实战一般1-3即可
2.目标点在正下方
Asin(5x)的基础上加上y轴修正即可
3.目标点在右下方
这里又分为两个情况:如果空间允许先向下再向右或者先向右后向下,那么可以参照上两种情况,狭窄空间需要直接使用(kx+b)+Asin(5x)此时A不宜过大。
起始点突变
传统实现起始点突变的方式是使用-Ae^(-10x)之类的函数开局,借助ε(x)我们同样可以实现突变:
f(x)=Aε(x-Δt)+f_2(x)
即可将起始点偏移A个单位,作为起始点突变,我们可以使用1/(1+0.001^(1000(x-0.001)))等近似方案来提高斜率。
定点打击
作为ε(x)系列的近似手段,稍微改进一下就变成对高斯函数的近似:
1/(1+0.1^(-100*(x-t)(x-t)))(事实上这看起来完全没什么区别xxxx)
这会在x=t处建立一个高为1的尖峰,由于这个函数不为0的区域过于狭窄,事实上几乎只需要搭配常函数使用,可以通过乘以系数A来击杀处于(t,A)的敌人。
组合目标打击
在实现对单目标的打击后,如果你还想贪一点,那么就要进入多目标打击。
多目标打击实际上是将多个单目标打击通过分段函数组合起来(真的有人能实战算这么快吗),此时适当使用定点打击就可以使用一条函数形成泛用的多杀结构。
以上是作者摸索半小时的经验,刚开始玩难免有疏漏,欢迎交流沟通
猜你想搜
公式对决 函数近似
[抛砖引玉]基于绝对值+扫描函数的轨迹通解截图
[抛砖引玉]基于绝对值+扫描函数的轨迹通解
前情提要: 在掌握了分段函数之后,我们可以设计一种设计方案,既保证通过复杂路径的准确度,又保证打击时的容错,这就是基于绝对值+扫描函数的设计方案,话不多说,开始教学。 1.设计路径函数 我们使用绝对值函数最擅长处理的折线作为路径,写下函数: f(x)=0.5(A*2x+B1(abs(x-x1)+x-x1)+B2…+B3…) 为了得到正确的函数,我们需要: a.预先设计一个折线 b.找出所有拐点 c
7 赞
9 回复
【新手必看教程】数格子读取目标坐标截图
【新手必看教程】数格子读取目标坐标
正文:很多新人卡在第一步:不会正确读出目标、障碍物坐标,算出的函数永远打不准! 这篇讲清楚游戏画布网格规则,学会之后可以自主读取任意点位,自己列式推导弹道。 一、游戏画布基础参数(重点!90%新人踩坑) 1. 画布坐标轴范围 X轴:-25 ~ 25 Y轴:-14.6 ~ 14.6 2. 网格关键规则:1个格子 = 2.5单位距离 不要误以为一格=1!这是绝大多数人坐标出错的根源! 3. 坐标系
6 赞
2 回复
[重置版]公式对决PVP从入门到完结截图
[重置版]公式对决PVP从入门到完结
是的没错,看完这篇教程之后你将完全不需要任何其他攻略。本文预计阅读时间超过2小时,建议分段多次阅读。作为半教程半说明书性质的文章,欢迎反复温习与参考,话不多说,我们出发! 大纲 在这篇教程中,我们会讨论以下内容: 0. 游戏基本性质扫盲 什么样的函数是好函数?我们需要什么样的函数(第一章) 这些函数具体长什么样?如何使用简单的参数控制函数的变化(第二、三、四、五章) 在实战中,我们如何快速写出这
精华
40 赞
8 回复
公式化打法截图
公式化打法
(注:玩家群里的大佬已经有更优秀的函数,本攻略只讲两种)这回讲讲公式化打法,在我和这个游戏的一位玩家@fw聊了一晚后,经过我的实战,总结出了更好用的公式。 先说公式: 1.y=a^(x-b) 2.y=a/(1+n^(b-x)) 第一个函数我在上一个攻略讲了,效果如图二。 这回重点讲第二个式子(效果如图一):关于这个公式的推导我写在图三上了,证明很简单,各个参数意义:a表示上升/下降的数量,n大一点
3 赞
145 回复
一些简单公式和想法及思考过程截图
一些简单公式和想法及思考过程
(注:常数项忽略不计,结尾附上公式) 1.y=kx 玩此类游戏必须掌握的一个公式,也是最简单的,y=±kx,此处k为斜率 2.y=ax^2+bx 也是一个基本函数,但其实不常用 当遇到需要使用的时候,通过初中的知识可以得到一些技巧和方法 明确你与目标的横坐标距离,a=n/x^2,那么b=n/x,无需计算,直接输入即可 3.±a^(x-b) 指数函数的实用性就比二次函数大很多了,以下举几个简单例子 这
12 赞
93 回复
顶级理解分段,给看得懂的高手的高阶玩法:
0.5[2f0(x) + (f1(x-x1)-f1(0)-f0(x)+f0(x1))*(abs(x-x1)/(x-x1)+1) + (f2(x-x2)-f2(0)-f1(x-x1)+f1(x2-x1))*(abs(x-x2)/(x-x2)+1) + (f3(x-x3)-f3(0)-f2(x-x2)+f2(x3-x2))*(abs(x-x3)/(x-x3)+截图
顶级理解分段,给看得懂的高手的高阶玩法: 0.5[2f0(x) + (f1(x-x1)-f1(0)-f0(x)+f0(x1))*(abs(x-x1)/(x-x1)+1) + (f2(x-x2)-f2(0)-f1(x-x1)+f1(x2-x1))*(abs(x-x2)/(x-x2)+1) + (f3(x-x3)-f3(0)-f2(x-x2)+f2(x3-x2))*(abs(x-x3)/(x-x3)+
3 赞
6 回复
真拿大家没办法截图
真拿大家没办法
官方
17 赞
7 回复
二次函数基础+进阶截图
二次函数基础+进阶
二次函数的标准形式是 y=ax^2+bx+c 因为游戏中常数项没有用,所以简化成这样 y=ax^2+bx 要想使用二次函数击败敌人,必须先了解a,b的作用 首先,a的正负号控制开口方向,正为上,负为下 a的大小控制开口大小,a越接近0开口越大 -b/2a控制对称轴,b与对称轴有关系 一,基础运用,y=ax^2的形式 假设敌方坐标为(x0,y0) 方程为y0=ax0^2 a的解为y_0/x_0^2 所
1 赞
10 回复
这类游戏的进阶技巧截图
这类游戏的进阶技巧
依旧是理论推导+实战指导,主要是三种 (前两个可以当做作者当时的脑瘫,不建议使用) ( 1.(注:这种打法局限性太大了,而且不可控,而且有更简单的方法解决,推荐看公式化打法,建议不要使用)指数函数进阶,主要是两点,首先是图一的向右拐弯,不用管右边的向上拐弯,先说函数y = n^(a-x),上期说过指数函数在指数大于0时会爆炸性增长,我们看一下这个函数的指数变化,当x≥0,且x<a时a-x是大于0的
6 赞
1 回复
一阶导数的基础应用截图
一阶导数的基础应用
简单了解导数的定义 d/dxf(x)=lim_(△x→0)(f(x0+△x)-f(x0))/△x 运用导数首先要记住一些基础函数的求导 在学习了之后,就可以开始运用导数了 一,基础,dy/dx=f(x)形式 f(x)不包含y 这种形式最简单,直接对原函数F(x)求导,忽略不必要常数 以下给出几种常用形式 d/dx(a^(x-b))=a^(x-b)*lna a为足够大的正数,b为打击点位
8 赞
5 回复