/* A0810.java * 機械修理の問題 (理論値により最良の人数を求める ) * (C) H.Ishikawa 2008 */ package simulation; import java.applet.*; import java.awt.*; import java.text.DecimalFormat; public class A0810 extends Applet{ int M = 5; /* 機械の台数 */ int N = 2; /* 修理者の人数 */ double A = 10.0; /* 平均故障発生間隔 */ double H = 4.0; /* 平均修理時間 */ double INCOME = 8.0; /* 機械1台当りの収益 */ double COST = 2.0; /* 修理者1組当りの費用 */ public void paint(Graphics g) { int j; /* 機械のforのカウンタ */ double p[] = new double[M + 1]; /* 機械がf台故障している時間の割合 */ double p0 = 0.0; double total; /* 総収益 */ double profit; /* 総利益 */ int n; /* 修理者の人数 */ DecimalFormat exFormat1 = new DecimalFormat(" 0.000000"); for (n = 1; n <= M; n ++) { total = 0.0; p0 = 0.0; p[0] = 1; p[1] = (double)M * H / A * p[0]; for (j = 1; j <= n - 1; j ++) { p[j + 1] = (double)(M - j) / (j + 1) * H / A * p[j]; } for (j = n; j <= M - 1; j ++) { p[j + 1] = (double)(M - j) / n * H / A * p[j]; } for (j = 0; j<= M; j ++) { p0 = p0 + p[j]; } for (j = 0; j<= M; j ++) { p[j] = p[j] / p0; } for (j = 0; j <= M; j ++) { total = total + p[j] * (double)(M - j) * INCOME; } profit = total - n * COST; g.drawString(" n = " + n + " profit = " + exFormat1.format(profit) ,10 , 10 * n); } } }