var m = new Array();
var ms = new Array();
var d = new Array();
var c = new Array();
var y = new Array();
var yy = new Array();
var alpha;
function sample() {
y[1] = 200;
y[2] = 250;
y[3] = 300;
c[1] = 300;
c[2] = 250;
c[3] = 200;
for(s=1;s<4;s++){
d[s] = new Array();
}
d[1][1] = 0;
d[1][2] = 2;
d[1][3] = 4;
d[2][1] = 2;
d[2][2] = 0;
d[2][3] = 2;
d[3][1] = 4;
d[3][2] = 2;
d[3][3] = 0;
m[1] = 5;
m[2] = 7;
m[3] = 10;
alpha = 0.5;
op();
g();
alert(yy[1]+","+yy[2]+","+yy[3]);
}
function op() {
for (num = 1; num < 11; num++) {
for (tr = 1; tr < 4; tr++) {
subx(tr);
}
}
}
function subx(tr) {
for (s = 1; s < 4; s++) {
ms[s] = m[s];
}
mine = 999999;
delta = 1;
for (s1 = 1; s1 < 11; s1++) {
ms[tr] = s1;
e1 = f();
if (e1 < mine) delta = s1;
if (e1 < mine) mine = e1;
}
m[tr] = delta;
}
function f() {
var p = new Array();
for (s = 1; s < 4; s++) {
p[s] = new Array();
}
for (s = 1; s < 4; s++) {
for (sx = 1; sx < 4; sx++) {
p[s][sx] = alpha * ms[s] - (1 - alpha) * d[s][sx];
}
}
var ys = new Array();
for (s = 1; s < 4; s++) {
ys[s] = 0;
}
for (sx = 1; sx < 4; sx++) {
p1 =0;
for (s = 1; s < 4; s++) {
p1 = p1 + p[s][sx];
}
for (s = 1; s < 4; s++) {
ys[s] =ys[s]+ c[sx]*p[s][sx]/p1;
}
}
e1 = 0;
for (s = 1; s < 4; s++) {
e1 = e1 + (y[s] - ys[s]) * (y[s] - ys[s]);
}
return e1;
}
function g() {
var p = new Array();
for (s = 1; s < 4; s++) {
p[s] = new Array();
}
for (s = 1; s < 4; s++) {
for (sx = 1; sx < 4; sx++) {
p[s][sx] = alpha * m[s] - (1 - alpha) * d[s][sx];
if (p[s][sx] < 0) p[s][sx] = 0;
}
}
for (s = 1; s < 4; s++) {
yy[s] = 0;
}
for (sx = 1; sx < 4; sx++) {
p1 = 0;
for (s = 1; s < 4; s++) {
p1 = p1 + p[s][sx];
}
for (s = 1; s < 4; s++) {
yy[s] = yy[s] + c[sx] * p[s][sx] / p1;
}
}
}
最終更新:2015年06月22日 15:11