<!DOCTYPE html>
<html>
<body>
<h1>我的第一张网页</h1>
<p id="demo">我的第一个段落</p>
<p id="demo1">我的第一个段落</p>
<script>
var b=5;
//全局变量
var M=10000;
//var knrnel[110][310];
//声明二维数组 核心矩阵表
var knrnel = new Array();
for(var i=0;i<40;i++){ //一维长度为5
knrnel[i]=new Array(i); //在声明二维
for(var j=0;j<40;j++){ //二维长度为5
knrnel[i][j]=0;
}
}
//m:约束不等式个数
//n:结构向量的个数
//t:目标函数类型:-1代表求求最小值,1代表求最大值
var m=0,n=0,t=0;
//约束条件矩阵
//读入约束条件
var x0=[-999,-999,-999,-999,-999,-999,-999,-999,-999];//多余部分
// x1,x2,x3,x4,x5,x6,等号方向,常数项
var x1=[-999, 4,1,0,1,0,0,1,325 ,65416541];
var x2=[-999, 0,1,0,0,1,0,1,300 ,65416541];
var x3=[-999, 0,0,1,0,0,1,1,275 ,65416541];
var x4=[-999, 1,1,1,0,0,0,1,350 ,65416541];
var x5=[-999, 0,0,0,12,1,1,1,600 ,65416541];
var x6=[-999, 3.9,1.7,1,2.5,1.8,1.4 ,58465464];
//求解不等式方程为
// max=3.9*x1+1.7*x2+1*x3+2.5*x4+1.8*x5+1.4*x6;
// 4*x1+x2+x4<=325;
// x2+x5<=300;
// x3+x6<=275;
// x1+x2+x3<=350;
// 12*x4+x5+x6<=600;
var x=[x0,x1,x2,x3,x4,x5,x0,x6];
var temp5=new Array();
f=0;//最优值
function input() {
//输入n=?
n=6;
//输入m=?
m=5;
var i,j;
//初始化核心向量
for ( i = 0; i < m+1; i++) {
for ( j = 0; j < n+m+m; j++) {
knrnel[i][j]=0;
}
}
var f,k;
for ( f = 1; f < m+1; f++) {
for ( k = 1; k < n+3; k++) {
knrnel[f][k]=x[f][k];
}
}
for (i = 1; i <= m; i++)
{
knrnel[i][0] = knrnel[i][n + 2];
knrnel[i][n + 2] = 0;
}
//读入目标条件 系数
i=1;
for (j = 1; j < n+1; j++) {
knrnel[0][j]=x[7][j];
}
//输入t t:目标函数类型:-1代表求求最小值,1代表求最大值
t=-1;
//矩阵调整
if (t==-1) {
for (i = 1; i <= n; i++)
knrnel[0][i] = (-1)*knrnel[0][i];
}
for (i = 1; i <= m; i++)
{
knrnel[i][n + i] = knrnel[i][n + 1];
if (i != 1)
knrnel[i][n + 1] = 0;
}
}
function comput() {
gg=0;
tiaochu=0;
var i,j,flag,temp1,temp2,h,f,k=0;
var temp3 = new Array();
var a,temp,aa,d,c;
var b=new Array();
var temp4=new Array();
var end=new Array();
//初始化
for (i = 1; i <= m; i++)
temp3[i] = 0;
for (i = 0; i < 11; i++)
{
temp4[i] = 0;
temp5[i] = 0;
}
for (i = 1; i <= m; i++)
{
if (knrnel[i][n + i] == -1)
{
knrnel[i][n + m + i] = 1;
knrnel[0][n + m + i] = M;
temp3[i] = n + m + i;
}
else
temp3[i] = n + i;
}
for (i = 1; i <= m; i++)
temp4[i] = knrnel[0][temp3[i]];
do {
for (i = 1; i <= n + m + m; i++)
{
a = 0;
for (j = 1; j <= m; j++)
a =a+ knrnel[j][i] * temp4[j];
knrnel[m + 1][i] = knrnel[0][i] - a;
}
for (i = 1; i <= n + m + m; i++)
{
if (knrnel[m + 1][i] >= 0) flag = 1;
else
{
flag = -1;
break;
}
}
if (flag == 1)
{
for (i = 1; i <= m; i++)
{
if (temp3[i] <= n + m) temp1 = 1;
else
{
temp1 = -1;
break;
}
}
if (temp1 == 1)
{
for (i = 1; i <= m; i++)
temp5[temp3[i]] = knrnel[i][0];
tiaochu=1;
if (tiaochu==1) {
break;
}
}
else
{
tiaochu=1;
if (tiaochu==1) {
break;
}
}
}
if (tiaochu==1) {
break;
}
if (flag == -1)
{
temp = 100000;
for (i = 1; i <= n + m + m; i++)
if (knrnel[m + 1][i] < temp)
{
temp = knrnel[m + 1][i];
h = i;
}
for (i = 1; i <= m; i++)
{
if (knrnel[i][h] <= 0) temp2 = 1;
else {
temp2 = -1;
break;
}
}
}
if (temp2 == 1)
{
//cout << "此线性规划无约束";
if (tiaochu==1) {
break;
}
}
if (tiaochu==1) {
break;
}
if (temp2 == -1)
{
c = 100000;
for (i = 1; i <= m; i++)
{
if (knrnel[i][h] != 0) b[i] = knrnel[i][0] / knrnel[i][h];
if (knrnel[i][h] == 0) b[i] = 100000;
if (b[i] < 0) b[i] = 100000;
if (b[i] < c)
{
c = b[i];
k = i;
}
}
temp3[k] = h;
temp4[k] = knrnel[0][h];
d = knrnel[k][h];
for (i = 0; i <= n + m + m; i++)
knrnel[k][i] = knrnel[k][i] / d;
for (i = 1; i <= m; i++)
{
if (i == k)
continue;
aa = knrnel[i][h];
for (j = 0; j <= n + m + m; j++)
knrnel[i][j] = knrnel[i][j] - aa * knrnel[k][j];
}
}
if (tiaochu==1) {
break;
}
} while (1);
}
input()
z=""
r=""
comput()
a=5;
alert(knrnel[1][1]+" "+knrnel[0][4]);
knrnel[1][1] = knrnel[0][4] - a;
for ( kk = 0; kk < 30; kk++) {
for ( hh = 0; hh < 30; hh++) {
z=z+"       "+knrnel[kk][hh]+"       //";
}
z=z+"</br>"
}
//temp5
for ( i = 0; i < temp5.length; i++) {
r=r+"    "+temp5[i]+"    ";
}
qqq=0
for (i = 1; i <= n; i++)
qqq +=-1*knrnel[0][i] * temp5[i];
// alert(qqq)
document.getElementById("demo").innerHTML=r+"    最优:"+qqq;
document.getElementById("demo1").innerHTML=z;
// max=2.5*x1+1.7*x2+1.8*x3+2.5*x4+1.8*x5+1.4*x6;
// 4*x1+x2+x4<=325;
// x2+x5<=300;
// x3+x6<=275;
// x1+x2+x3<=350;
// 12*x4+x5+x6<=600;
// x1>0;
// x2>0;
// x3>0;
// x4>0;
// x5>0;
// x6>0;
</script>
</body>
</html>