數位化婚姻配對嘗試
這本來是乙個大學比賽的題目,幫朋友寫的,
唉,我真實閒著蛋疼了
數位化婚姻配對嘗試
二、題目:
建立乙個模型,來模擬推導社會男女擇偶過程。
為了模型簡化,乙個人的特性指標有三個,這裡假設為財富、樣貌、品格,每個指標均可取值1-100之間任意數字。同樣也對這3項指標有自己的需求。這3個需求值取值範圍都在1-98間,當然三者的和必須為100.所以任意乙個人可以用以下陣列來表述:
g(a、b、c、a1、b1、c1)g代表男,m代表女。
舉例g11(80、50、40、10、30、60),表示男11號,擁有財富80、樣貌50、品格40,對異性品格的偏好為:財富在乎程度百分之10、樣貌在乎程度百分之30、品格在乎程度百分之60。
同樣為了模型簡化,假設資訊是完全對稱的,即是說,每個人都能一眼就能看清楚任意乙個人的財富、樣貌、品格。
還是為了模型簡化,我建模所用樣本為男女各100個,即男女人數相同。
每個人對異性的滿意度將如下定義:每個偏好指標與異性的對應的稟賦指標相乘,三個指標的乘積再相加,即他(她)對某個異性的滿意度。
舉例g11(80、50、40、10、30、60)對m(50、60、80、40、10、50)的滿意度為:
(10*50+30*60+60*80)= 7100分
相對的 mm 對 gg的滿意度則為:
(40*80+10*50+50*40) = 5700分
好了,配對活動開始,設計的配對法則如下:
1、100個男方,順序,輪流從0號到99號女方中挑選自己最滿意的一位,然後向她發出配對邀請。
2、接受邀請最多的女方開始行動,對這些邀請的男性中,選擇最滿意的一位。
3、那麼這兩位配對成功,剔除出樣本,剩下的99對繼續這樣配對。
4、迴圈該配對法則,直到最後一對男女配對成功。
在匹配時,如果發現有多個滿意度相同的物件,要求自身三個屬性(財富,外貌,品格)總和大的優先,如果再相同則id小的優先。如果有2位女士的選票相同,優先順序規則同上。
using自己測試通過了,程式可以支援,男女不同的人數system;
using
system.collections.generic;
using
system.linq;
using
system.text;
namespace
zuohaoyouxi
console.readkey();
console.readkey();
}//////
隨機生成person 列表,個屬性隨機,但是之和為100
/// ///
其實就是生成的人數
///private
static listgenerator(int
length)
return
temp;
}//////
這個函式是核心迭代函式
/// ///
男 ///
女 private
static
void selects(listmales, listfemales)
for (int i = 0; i < males.count; i++)
//然後找到女的之中得到票數最多的乙個
person personofmaxinum =findthemaxinum(females);
"得到票數最多的女:"+personofmaxinum.tostring()+"\n"+personofmaxinum.ticketbox.getsenders().count.tostring());
listsenders=personofmaxinum.ticketbox.getsenders();
//女的在選擇她的男的中選擇滿意度最高的那個
person personofsatisfied =findsatisfied(personofmaxinum, senders);
//男的女的 都選擇了之後,把他們兩用wedding 記錄下來
wedding wedding=new
wedding(personofsatisfied,personofmaxinum);
result.add(wedding);
//從男的列表中刪除已經配對好的
male.remove(personofsatisfied);
//從女的列表中刪除已經配對好的
female.remove(personofmaxinum);
//迭代下面的選擇
selects(males,female);
}//////
這個函式主要是篩選一堆人中,每個人箱子裡面的票數最多的那個
/// ///
被篩選的人
///private
static person findthemaxinum(listpersons)
person maxinum = persons[0
];
for (int i = 0; i < persons.count; i++)
else
if (persons[i].ticketbox.getsenders().count ==maxinum.ticketbox.getsenders().count)}}
return
maxinum;
}//////
這個函式是乙個人在一堆人之中找到他/她 滿意度最高的
/// ///
主動要選的人
///被動的候選人
///private
static person findsatisfied(person selector,listpersons)
person satisfied = persons[0
];
for (int i = 0; i < persons.count; i++)
else
if (person.satiesfiedlevel(selector, persons[i]) ==person.satiesfiedlevel(selector, satisfied))
else
if (persons[i].total() ==satisfied.total())}}
}return
satisfied;}}
//////
wedding 類是最後儲存person的單元,乙個weeding 其實就是一對男女
/// sealed
class
wedding
}sealed
class
person
character)
public
static
intsatiesfiedlevel(person person1, person person2)
//////
返回乙個person例項三個屬性之和
/// ///
public
inttotal()
//////
當乙個person 要投票的時候就用的哦啊這個函式,這是person的行為
/// ///
票 的接收者
public
void
vote(person reciver)
}class
ticketbox
public
void
addticket(person sender)
else
}public listgetsenders()
else
return
tem;}}
private
class
ticket}}
}
我接到這個題目,第一感覺,這個題目太蛋疼了,現在中 根本不成立,研究這個有毛用,不過感覺程式的邏輯還是值得挑戰的。哈哈
構築數位化運營基石,加速數位化轉型
在華為運營轉型峰會 operations transformation forum 2016 華為董事,電信軟體業務部總裁張平安先生發表主題演講,提倡運營商採用big bang transformation的方式構建數位化運營系統進行徹底數位化變革,從而匹配數位化商業發展訴求,確保收入增長與盈利能力...
數位化實驗系統
1 通用實驗軟體 數字實驗軟體系統是與數字實驗儀器配套使用的乙個顯示測量資料以及處理測量資料的平台。該系統具備對感測器即插即用,自動識別的功能,以及資料的多模式顯示,如數字顯示,示波顯示和指標顯示 能夠支援四個感測器同時採集和資料處理 對波形顯示能夠對兩個以上相同感測器進行組合比較,以及時間線的伸縮...
資訊數位化2
演算法思想 有4個bool型的數值相加,當且僅當只有乙個正確時,即有1個等於1.其他3個等於0,這時表示只有一位專家說對了,這 是輸出的m就是最好的賽車。題目2 兩個桌球隊進行比賽,各出三人。甲隊為a,b,c三人,乙隊為x,y,z三人。已抽籤決定 比賽名單。有人向隊員打聽比賽的名單。a說他不和x比,...