#author("2018-12-06T16:48:38+09:00","","") #author("2018-12-06T17:10:53+09:00","","") [[卒論]] #ref(frm0-1_pos_P_A1-1.c) #ref(data.txt) /* 引数のエラー処理 */ 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); }