平均分配,移動欠費催收款資料的分配應用例項

2022-02-21 11:33:06 字數 2384 閱讀 7519

最近接到乙個小專案,是個專做移動電信欠費催收款的律師事務所,求要幫他們做個系統,把每批次的欠費資料平均分配給催收員

(要求每個催收員分到的記錄數和欠費金額都比較公平

),然後等移動電信把提成報表傳過來後再做提成計算就可以了。想想功能不多於是

2k就接下來了。

這個小系統主要的難點是在給催收員的資料分配上,事實上實現起來也不難。我想在分班或者其它有類似需求的系統上也可以用得上。

分平均分配的演算法有很多,如蛇形演算法,貪婪演算法等等。

1、蛇形演算法類似於下面的排序

abcd

1009998

9793949596

92919089

如果拿1-100

的數字來分配當然蛇形演算法最好不過的了,不過移動的欠費資料可不是這樣,金額大的幾萬,小的

0.01

都有,所以這種演算法沒法用。

2、倒序貪婪

(我稱之為倒序貪婪,也不懂該叫什麼

)過程大概是這樣(把

m份資料分配到

n個人的頭上

)1.1

把待分配的資料

m從大到小排序

;1.2

從資料m取出n

份做為初始值分配給

n個人;

1.3 把這n

個人的資料從小到大排序;

1.4

從資料m

再取出n

份資料累加到

n個人的頭上

1.5

重複1.3-1.4

直至資料分配結束

但得出來的結果也不合格,因為得出的金額資料相差太大

3、隨機貪婪

(我稱之為隨機貪婪,也不懂該叫什麼

)過程大概是這樣(把

m份資料分配到

n個人的頭上

)1.1

從資料m

中隨機取出

n份做為初始值分配給

n個人;

1.2 把n

個人的資料從小到大排序;

1.3

從資料m

中隨機再取出

n份資料累加到

n個人的頭上

1.4

重複1.2-1.3

直至資料分配結束

咋一看結果是不錯,但如果在最後幾次分配資料時,出現金額落差比較大時問題就出來了。

不過倒好解決,我們何不先進行幾輪倒序貪婪,把大額度的資料排除,餘下的資料再進行隨機貪婪。這個結果客戶也比較滿意。

**實現:

(原本是打算用

c#做的,但我這個人太懶了,為了圖速度就

asp寫了,要轉為

c#的話,也是很簡單,主要把下面這個函式轉為

c#的語法也就差不多了

)code

『陣列排序

function

sort(ary)

dimkeepchecking,i,firstvalue,secondvalue,firstteam,secondteam

keepchecking 

=true

dountil keepchecking 

=false

keepchecking 

=false

fori =0

toubound

(ary) 

ifi 

=ubound

(ary) 

then

exit

forif

ary(i,0) 

>

ary(i+1

,0) then

firstvalue 

=ary(i,0) 

firstteam 

=ary(i,1)

secondvalue 

=ary(i+1

,0) secondteam 

=ary(i+1

,1) ary(i,0) 

=secondvalue 

ary(i,1) 

=secondteam 

ary(i+1

,0) =

firstvalue 

ary(i+1

,1) =

firstteam 

keepchecking 

=true

endif

next

loop

sort 

=ary 

end function

分配結果:

另:下週打算分離仿

winform

的產品入錄介面**

(支援編號、拼音、產品名稱、條形碼自動完成錄入

)出來給大家

,對開發

web下進銷存或者

crm感興趣的朋友到時候可以一起交流一下。

圖:flash

演示:

平均分配演算法

平均分配有2種情況 1 都沒有記錄的時候,平均分配。若11個元素,4個cpu,則分配數量為 2,3,3,3 每次分配的起點終點表示區間為 list seqno taskcounters,list seqno 1 taskcounters 11個數,平均分給4個cpu header content t...

預約如何實現平均分配

工作當中遇到乙個問題,自己沒有想清楚。寫點文字記錄下來。場景 帶來的問題點 嘗試解決的方法 需要滿足的點 在未來40天之內,每個人分配的任務量是相對平均的。在每一天之內,每個人分配的任務量是相對平均的。其實只要做到第 2 點,自然做到第 1 點嗎?不一定 舉個例子,你每天的工資比我多200塊錢。乙個...

java JTable 列自適應大小(平均分配)

在網上看了一篇jtable自適應列寬的文章,發現設定之後最後一列會留出很長的位置,下面我對這個方法做了適當地修改,能夠平均分配每一列 public void fittablecolumns jtable mytable 將所有列的最大寬度存入陣列i中 i j width int allwidth 0...