競技に対して解を送信する際に以下の条件を満たすように送信してください。
プレイヤーは以下のプロパティをもつJSONオブジェクトを入力します.
| プロパティ | 型 | 説明 |
|---|---|---|
query |
string | シミュレーション・プログラム syn_pop.py の第1引数 |
payment |
float | シミュレーション・プログラム syn_pop.py の第2引数 |
{"query": "family_type_id == [0,3,4,60,70,80] and role_household_type_id == [0,1,21,30,31] and industry_type_id == [-1,10,20,30,50,60,80,90,100,160,170,200] and employment_type_id == [-1,20,30] and company_size_id == [-1,5,10]", "payment": 9}
queryにはシミュレーション・プログラムの第1引数を,paymentには第2引数を設定してください.
{
"query": "family_type_id == [0,3,4,60,70,80] and role_household_type_id == [0,1,21,30,31] and industry_type_id == [-1,10,20,30,50,60,80,90,100,160,170,200] and employment_type_id == [-1,20,30] and company_size_id == [-1,5,10]",
"payment": 9
}
キーや値の前後には改行やスペースを入れることができます.評価値に影響はありません.
{
"query": "family_type_id == [0,3,4,60,70,80] and role_household_type_id == [0,1,21,30,31] and industry_type_id == [-1,10,20,30,50,60,80,90,100,160,170,200] and employment_type_id == [-1,20,30] and company_size_id == [-1,5,10]",
"payment": 7.2
}
paymentには小数が使用できます.ただし指数表記(7.2e+1など)は使用できませんのでご注意ください.
{
'query': 'family_type_id == [0,3,4,60,70,80] and role_household_type_id == [0,1,21,30,31] and industry_type_id == [-1,10,20,30,50,60,80,90,100,160,170,200] and employment_type_id == [-1,20,30] and company_size_id == [-1,5,10]',
'payment': 9
}
シングルクォーテーションは使えません.ダブルクォーテーションで囲ってください.
{
"query": "family_type_id == [0,3,4,60,70,80] and role_household_type_id == [0,1,21,30,31] and industry_type_id == [-1,10,20,30,50,60,80,90,100,160,170,200] and employment_type_id == [-1,20,30] and company_size_id == [-1,5,10]",
"payment": "9"
}
paymentの値をクォートしてはいけません.
{
"query": "family_type_id == [0,3,4,60,70,80] and role_household_type_id == [0,1,21,30,31] and industry_type_id == [-1,10,20,30,50,60,80,90,100,160,170,200] and employment_type_id == [-1,20,30] and company_size_id == [-1,5,10]",
"payment": 9,
}
末尾に余分なコンマを付けてはいけません.
プレイヤーは以下のプロパティをもつJSONオブジェクトを受け取ります.
| プロパティ | 型 | 説明 |
|---|---|---|
objective |
float| float[2] |
目的関数値.SYNPOP_FUNC=[1]の場合は$f_1$の値,SYNPOP_FUNC=[2]の場合は$f_2$の値,SYNPOP_FUNC=[1,2]の場合は$f_1,f_2$の値.いずれも最小化問題. |
constraint |
float[28] |
制約関数値.最初の要素は支給制約.残りの27要素はシミュレーションの各試行において余った予算に-1を掛けた値(例:10万円余ったときは-10.0).すべての値が0.0以下ならば実行可能解.正の値が1つ以上あれば実行不可能解. |
info |
float[27] | float[2][27] |
シミュレーション27試行それぞれの経済指標値(参考情報).SYNPOP_FUNC=[1]の場合は$F_1$の値,SYNPOP_FUNC=[2]の場合は$F_2$の値,SYNPOP_FUNC=[1,2]の場合は$F_1,F_2$の値の2次元配列.問題を解く際にソルバなどで利用できる. |
配布したシミュレーション・プログラムの出力とは以下の点が異なることに注意してください.
0.0(シミュレーション・プログラムのTrueに相当),実行不可能ならば1.0(シミュレーション・プログラムのFalseに相当).単目的の場合.constraint[i] <= 0なので実行可能解.objective == mean(info)が成り立つ.
{
"objective": 0.1,
"constraint": [0.0, -0.1, -0.1, -0.1, -0.1, -0.1, -0.1, -0.1, -0.1, -0.1, -0.1, -0.1, -0.1, -0.1, -0.1, -0.1, -0.1, -0.1, -0.1, -0.1, -0.1, -0.1, -0.1, -0.1, -0.1, -0.1, -0.1, -0.1],
"info": [0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1]
}
多目的の場合.constraint[i] <= 0なので実行可能解.objective[i] == mean(info[i])が成り立つ.
{
"objective": [0.1, 0.2],
"constraint": [0.0, -0.1, -0.1, -0.1, -0.1, -0.1, -0.1, -0.1, -0.1, -0.1, -0.1, -0.1, -0.1, -0.1, -0.1, -0.1, -0.1, -0.1, -0.1, -0.1, -0.1, -0.1, -0.1, -0.1, -0.1, -0.1, -0.1, -0.1],
"info": [
[0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1],
[0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2]
]
}