卒論
/* 引数のエラー処理 */
if(argc != 2) {
printf("\n引数を正しく設定して下さい.\n\n");
return(0);
}
printf("\n実行プログラム名:%s 入力データファイル:%s\n\n", argv[0], argv[1]);
st_ptr = fopen(argv[1], "r"); /* ファイルオープン */
if(st_ptr == NULL) {
printf("ファイル%sは存在しません.\n\n", argv[1]);
return(0);
}
input_probrem(st_ptr, &k, &m, &n, &n_int, &a, &b, &d1, &d2, &beta1, &beta2, &gamma1, &gamma2, &t_E, &t_V, &sign, &h, &mu_bar, &g0,
&g1, &L_inv, &mu_G_inv, &p0, &p1, &x, &mu); /* 領域の確保とデータ読み込み */
fclose(st_ptr); /* ファイルクローズ */
print_probrem(k, m, n, n_int, a, b, d1, d2, beta1, beta2, gamma1, gamma2, t_E, t_V, sign); /* 問題の表示 */
system("pause"); /* 一時停止 */
status = set_g0g1(k, m, n, a, b, d1, d2, t_E, sign, g0, g1); /* ファジィ目標Gのg0, g1を設定する(Zimmermannの方法) */
print_result_set_g0g1(k, g0, g1, status); /* 結果表示 */
/* ファジィ目標Gが設定できた場合 */
if(status == 1)
while(1) {
input_h(k, h, g0, g1, L_inv, mu_G_inv); /* 満足基準h_lを入力 */
system("pause"); /* 一時停止 */
status = set_p0p1(k, m, n, a, b, d1, d2, beta1, beta2, t_E, t_V, sign, L_inv, mu_G_inv, p0, p1); /* ファジィ目標のp0, p1を設定する(Zimmermannの方法) */
print_result_set_p0p1(k, p0, p1, status); /* 結果表示 */
/* ファジィ目標が設定できた場合 */
if(status == 1)
while(1) {
input_mu_bar(k, mu_bar); /* 基準メンバシップ値μ_bar_lを入力 */
system("pause"); /* 一時停止 */
start_clock = clock();
status = enumeration_method(k, m, n, a, b, d1, d2, beta1, beta2, t_E, t_V, sign, mu_bar, L_inv, mu_G_inv, p0, p1, x,
mu, &v); /* 完全列挙法による満足解導出 */
end_clock = clock();
print_result_enumeration_method(k, n, x, mu, v, status); /* 結果表示 */
printf("実行時間:%f[s]\n", (double)(end_clock - start_clock) / CLOCKS_PER_SEC);
printf("基準メンバシップ値μ_bar_lを変更しますか?\n");
input_ans(&ans); /* 対話の判断 */
if(ans == 1) /* 変更 */
continue;
else if(ans == 0) /* 終了 */
break;
}
printf("満足基準h_lを変更しますか?\n");
input_ans(&ans); /* 対話の判断 */
if(ans == 1) /* 変更 */
continue;
else if(ans == 0) /* 終了 */
break;
}
/* 領域解放(入力データ用) */
for(i = 0; i < m; ++i)
free(a[i]);
free(a);
free(b);
for(l = 0; l < k; ++l) {
free(d1[l]);
free(d2[l]);
free(beta1[l]);
free(beta2[l]);
free(gamma1[l]);
free(gamma2[l]);
}
free(d1);
free(d2);
free(beta1);
free(beta2);
free(gamma1);
free(gamma2);
free(t_E);
free(t_V);
free(sign);
/* 領域解放(対話用) */
free(h);
free(mu_bar);
/* 領域解放(作成データ用) */
free(g0);
free(g1);
free(L_inv);
free(mu_G_inv);
free(p0);
free(p1);
/* 領域解放(出力データ用) */
free(x);
free(mu);
return(0);
}