电费违约金算法问题

侠雨飞飞 中国科学院大学 2009-08-25 08:19:26
如果电费的违约金算法是:
某月当前违约金=某月拖欠电费*拖欠天数*违约金系数

那么,有连续多个月存在违约金的时候,那么缴费时优先从最前面的欠费月份结清呢还是无所谓呢?

呵呵,貌似很简单,
大家分析一下,很实际的问题。
...全文
938 点赞 收藏 23
写回复
23 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
icansaymyabc 2009-09-03
如果有用户提出要跳着缴这样的无理要求。有两种办法:

1 把当前的滞纳金算出来,加到本金里面去,积数清零。他爱缴多少就缴多少,反正剩下的部分算成此时的欠费计算积数即可。

2 不缴滞纳金,不管积数,让他缴一部分本金,未缴部分照算积数。反正积数是在的。
回复
icansaymyabc 2009-09-03
如果你真有这个需要的话,我给你个好建议:

采用银行结算活期利息的办法,这可是久经检验的最佳管理办法。

引入一个“日积数”的概念。

比如第1个月它欠 了 4 元钱,欠了 30 天,它的日积数就是 4*30 = 120;
第2个月它连同上月共欠 了 6 元钱,欠了 31 天,它的日积数就是 120 + 6*31 = 306;
第3个月它连同以前的共欠 了 10 元钱,欠了 10 天,他来缴费了,此时它的日积数就是 306 + 10*10 = 406; 这就相当于他欠了 406元只欠1天,或者说相当于他欠 1 元钱欠了 406 天。

此时将 406 * 日利率 = 应缴滞纳金数目。

多么简单的算法!
回复
绿色夹克衫 2009-09-03
不太了解具体规则,但感觉LZ需要关心的不仅仅是当前先还哪一个,更需要知道哪天才能都还清,假如每个月资金有限的话,应该尽量先还拖到下个月系数变化较大的那部分,但如果这个系数是非线性的,这时候恐怕要靠DP才行,仅靠贪心有问题,另外还存在比如LZ手头的资金为100元,而电费分别为80、120、140,这时问题就更复杂了,需要考虑的问题更多了,有些线性规划的感觉。
回复
everysports 2009-09-03
把天数看成月数了,呵呵
回复
侠雨飞飞 2009-09-03
并不是每次都缴清,可能欠2个月的违约金,那只能缴清1个多月的,究竟是缴哪个呢?

还有用户提出要跳着缴,点名中间某几个月,这个缴一点,那个缴一点,这样纯粹增加开发难度。

如果从根本上证明从最早的欠费月份来顺序缴清违约金是最优方案的话,就可以说服用户了。
回复
everysports 2009-09-03
不妨设每月拖欠电费一样多,系数是个定值a.
则:

y = ax;

x表示月的个数,则月个数越大,y越大。假设拖到了第n+1个月,那么

y1 = a; y2 = a*2;.....yn=a*n

Y(n) = y1+y2+y3+...+yn = a(1+2+3+...+n);

到第n月时出现两种情况:

1、还了最近一个月的:

那么:总还款金额为

Y(n+1) = a(1+0+3+...+n+n+1)+a = a(1+2+...+n-1+2n); //0表示上个月还了。

2、还了最远一个月的:

Y(n+1) = a(1+2+3+...+n) + an = a(1+2+...+n-1+2n);

两种情况是相等的。

所以一样。






回复
tibetjungle 2009-09-02
脱离实际谈论这个问题没有意义,主要看供电局怎么定义这个缴费规则,从前算还是从后算,程序实现起来都是很简单的。
回复
cuijie_cn 2009-08-29
以后取消这样的霸王条款了,就不要算了 呵呵
回复
donkey301 2009-08-28
必然是m=v1,n=v2
[Quote=引用 14 楼 silverswords 的回复:]
用y轴代表违约金数目
X轴代表时间(月份)
k代表违约金系数
v代表当前月的欠费,即违约金基数

那每个月上的违约金简单的算法为
y=kvx

则第一个月和第二个月的违约金分别为
y1=k*v1*x
y2=k*v2*(x-1)
因为第二个月的违约金日期要比前面少一个月

假设在三月份上总共还了Q元,分摊到第一个月的是m,第二个月是n

则从三月份开始,
y1=k*(v1-m)*x
y2=k*(v2-n)*(x-1)

最后,用还款后的违约金和 还款前的违约金相减
得到一个表达式
k(n-Q*x)
这个仅当n=0时候,最小

也就是第二月还款为0,全部还到第一个月上。

大家看看有漏洞没有?


[/Quote]
回复
侠雨飞飞 2009-08-28
用y轴代表违约金数目
X轴代表时间(月份)
k代表违约金系数
v代表当前月的欠费,即违约金基数

那每个月上的违约金简单的算法为
y=kvx

则第一个月和第二个月的违约金分别为
y1=k*v1*x
y2=k*v2*(x-1)
因为第二个月的违约金日期要比前面少一个月

假设在三月份上总共还了Q元,分摊到第一个月的是m,第二个月是n

则从三月份开始,
y1=k*(v1-m)*x
y2=k*(v2-n)*(x-1)

最后,用还款后的违约金和 还款前的违约金相减
得到一个表达式
k(n-Q*x)
这个仅当n=0时候,最小

也就是第二月还款为0,全部还到第一个月上。

大家看看有漏洞没有?

回复
longwenfeng 2009-08-27
计算条件为:不是利滚利,那么有连续多个月存在违约金的时候,那么缴费时必须是按月分开计算,从最前面的欠费月份开始逐月计算比较理想,例如8月缴费时发现用户从5月份未缴费,那么应收费等于以下几个月的总和:
5月应缴=5月电费*(5至8月的天数)*系数
6月应缴=6月电费*(6至8月的天数)*系数
7月应缴=7月电费*(7至8月的天数)*系数
8月应缴=8月电费*系数


回复
侠雨飞飞 2009-08-27
谢谢大家~

国家政策规定,违约金不允许利滚利的。
各位只是凭感觉给出猜测,
有没有数学模型依据呢?

回复
fiwiner 2009-08-26
没明白意思...
回复
某月当前违约金=某月拖欠电费*拖欠天数*违约金系数


无所谓的。因为不管是哪月的电费,其一天的违约金都是某月拖欠电费*违约金系数。
回复
XGJ889 2009-08-26
应该独月核,每个月的违约天数是不一样的
回复
PeacefulBY 2009-08-26
如果不是利滚利,而且违约系数为常数的话,先结哪个都一样
因为每欠一天产生的滞纳金都等于欠的总钱数*违约系数*1天
回复
cmchao 2009-08-26
我觉得算出一个负数比较好一点,电老虎太厉害了
回复
donkey301 2009-08-26
我觉得这个月的拖欠费用不会累计到下个月,以前每个月的拖欠费*月数*系数就是一个定值,所以该付的费用是个定值,无论你怎么付
回复
sunzerui 2009-08-25
应该是单独算,越靠前的月份越少才符合常理啊
回复
whg01 2009-08-25
各月独自算,先算拖欠电费多的月,用户能少损失一点。因为没有利滚利,只是基数*月*系数。
回复
发动态
发帖子
数据结构与算法
创建于2007-08-27

3.2w+

社区成员

数据结构与算法相关内容讨论专区
申请成为版主
社区公告
暂无公告