.


:




:

































 

 

 

 


.

4. . г .

.

:

A B C D
R1          
R2          
R3          
         

 


Z = 3x1+8x2+9x3+5x4

4x1+2x2+x3+4x4≤506

2x1++2x3+3x4≤206

2x1+3x2+x3 +.≤546

 

 

2)

4y1+2y2+2y3 3

2y1+ + 3y3 8

y1+2y2+y3 9

4y1+3y2+ 5

 


.

, .

F (X) = 3x1+8x2+9x3+5x4 -.

4x1+2x2+x3+4x4≤506

2x1+2x3+3x4≤206

2x1+3x2+x3≤546

( ).

1- (≤) x5. 2- (≤) x6. 3- (≤) x7.

4x1 + 2x2 + x3 + 4x4 + x5 = 506

2x1 + 2x3 + 3x4 + x6 = 206

2x1 + 3x2 + x3 + x7 = 546

A = a(ij) :

             
             
             

 

:

x5, x6, x7,

, 0, :

X1 = (0,0,0,0,506,206,546)

x1 x2 x3 x4 x5 x6 x7
x5                
x6                
x7                
z-c   -10 -5 -4 -8      

 

-.

0.

, .

, x1, .

Di : bi / ai1

:

min(506/2, 206/2, 546/2) = 103

, 2- .

 

x1 x2 x3 x4 x5 x6 x7 Q
x5                  
x6                  
x7                  
z-c   -10 -5 -4 -8        

 

ϳ :

x1 x2 x3 x4 x5 x6 x7
x5       -3 -2   -2  
x1         1.5   0.5  
x7       -1 -3   -1  
z-c     -8 -6 -0.5   1.5  

 

1.

, .

, x2, .

Di : bi / ai2

. , 1- .

x1 x2 x3 x4 x5 x6 x7 Q
x5       -3 -2   -2    
x1         1.5   0.5   -
x7       -1 -3   -1    
z-c     -8 -6 -0.5   1.5    

 

 

ϳ :

x1 x2 x3 x4 x5 x6 x7
x2       -1.5 -1 0.5 -1  
x1         1.5   0.5  
x7       3.5   -1.5    
z-c       -18 -3,5   -8  

 

2.

, .

, x3, .

Di : bi / ai3

. , 3- .

x1 x2 x3 x4 x5 x6 x7 Q
x2       -1.5 -1 0.5 -1   -
x1         1.5   0.5   51.5
x7       3.5   -1.5     99.5
z-c       -18 -8,5   -8    

 

 

ϳ :

x1 x2 x3 x4 x5 x6 x7
x2 52.5         -0.14 -0.14 0.43
x1 3.5       1.5 0.43 -0.0714 -0.29
x3 99.5         -0.43 0.57 0.29
F(X3)         7.5 1.12 0.86 5.18

ʳ : - .

:

X*=(3.5, 52.5, 99.5, 0)

F(X) = 3*3.5 + 8*52.5 + 9*99.5 = 1326

. ³ :

F min = 506*y1+206*y2+546*y3=1326

Z max = F min = 1326

 

.

A, B, C A=3.5 (.), B=52.5 (.), C=99.5 (.). D(x4=0) .

1326 .

, . , ( ), , 1-, 2- 3- . ֳ .

:

. , ,

:

4*3.5 +2*52.5 +1*99.5 +4*0=218.5 ( A )

2*3.5 + 2*99.5 + 3*0=206 ( B )

2*3.5 + 3*52.5 +1*99.5 +0*0=264 ( C )

 

. 0, , =0, .


.

(b1=506+1=507), Z max .. Z max=1327.57.

1 3.5 .. 3.37 . ., 1 52.5 . 52.8, 99.5 . 100.1 ..

(b2=206+1=207), Z max .. Z max=1327.57.

2 52.5 .. 53.57 . ., 1 3.5 . 2.43, 99.5 . 100.7 ..

(b3=546+1=547), Z max .. Z max= 1327.29.

3 99.5 .. 99.79 . ., 1 3.5 . 3.21, 99.5 . 99.79 ..

ϳ , , , 10 . , ()

() 1 ∆b1.

, , - 䒺 :

, 1 350 8,14 , 1 . , 1 :

:

2 3

 

, 2 350 . 174.56 ., 2 1,57.

2 :

:

 

() 3 ∆b3.

, , - 䒺 :

, 3 12.06 343.1 , 3 1,29. , 3 :

:

 

, , , . .

3 :

-. :

x1 x2 x3 x4 x5 x6 x7
x2 62.1         -0.14 -0.14 0.43
x1 4.7       1.5 0.43 -0.0714 -0.29
x3 93.2         -0.43 0.57 0.29
F(X4)         7.5 1.07 0.24 4.77

 

:

22.7 1349.7.

, , , .

ϳ . ( ) ( ), . , .

4*1,57+2*1,57+2*1,29=12 ( )

2*1,57+3*1,29=7 ( )

1*1,57+2*1,57+1*1,29=6 ( )

4*1,57+3*1,57=11>10 ( D )

, , , . , , .

.

1=1,57 2=1,57 3=1,29 4=0

, , , D .

ϳ ( ). , ,

, -, , . , 䒺.

. 4 , -

, D 7.5 .., .

. -, ().

:

x1 x2 x3 x4 x5 x6 x7
x2 62.1         -0.14 -0.14 0.43
x1 4.7       1.5 0.43 -0.0714 -0.29
x3 93.2         -0.43 0.57 0.29
F(X4)         7.5 1.07 0.24 4.77

 

, . :

,

, 1 54.28 86 .., -83 57.28 ..

:

, . :

 

, 2 11.4 2,9 .., 6.1 19.4 ..

:

, . :

, 3 3.7 2.8 .., 7.8 12.7 ..

, X -, .

.

 

 


. -. Java. , . , , . Java. -, .

 


1 .. - . . .: , 2004.

2 : / . .. .: , 1999.

3 .. . .: , 1999.

4 . . 7- .. : , 2007.

5 .. . ϳ (. ). 7- .. : , 2006.

6 .. : . . 5- ., . : ., 2004.

7 : . / .., .., .., .. . . .. . : , 2002.


 

1

ϳ : ) ; ) ; ) ( MIN); ) (=, ≥, ≤)

ϳ , , .

, , , . : , MIN ( , ) (. 2). , . ( ) .

2-

2

package simplex;

 

import javax.swing.*;

 

public class Simplex {

 

static boolean solved = false;

static boolean lim = false;

static int tempCInd = 0;

static int minRInd = 0;

static int minCInd = 1;

static float[] solution;

 

//

static float[][] Solve(float[][] matrix){

 

solved = true;

// Check for optimum

for (int i = 0; i <= ReadFile.colCount; i++){

if (matrix[i][0] < 0)

solved = false;

 

 

//While answer is not optimum

while (!solved){

//

float minR = matrix[0][0];

int minRInd = 0;

for (int i = 0; i <= ReadFile.colCount; i++){

if (matrix[i][0] < minR){

minR = matrix[i][0];

minRInd = i;

}

}

 

//check AF

lim = false;

for (int i = 0; i <= ReadFile.rowCount; i++){

if (matrix[minRInd][i] > 0)

lim = true;

}

//If error

//

if (!lim){

solved = true;

JOptionPane.showMessageDialog(null, " ");

break M1;

}

 

 

//Finding direction string

float minC = matrix[ReadFile.colCount][1]/matrix[minRInd][1];

int minCInd = 1;

for (int i = 1; i < tempCInd; i++){

if (matrix[ReadFile.colCount][i]/matrix[minRInd][i] < minC){

minC = matrix[ReadFile.colCount][i]/matrix[minRInd][i];

minCInd = i;

}

}

for (int i = tempCInd + 1; i <= ReadFile.rowCount; i++){

if (matrix[ReadFile.colCount][i]/matrix[minRInd][i] < minC){

minC = matrix[ReadFile.colCount][i]/matrix[minRInd][i];

minCInd = i;

}

}

 

//Get from basis [0][minCInd], push into basis [minRInd][0]

ReadFile.varCol[minCInd-1] = ReadFile.varRow[minRInd];

 

 

//new simplex table

//separate DS on D element

float temp = matrix[minRInd][minCInd];

System.out.print(">> " + temp + "\n");

System.out.print("\n : ");

for (int i = 0; i <= ReadFile.colCount; i++){

matrix[i][minCInd] /= temp;

}

 

//

for (int j = 0; j < minCInd; j++){

float minTemp = matrix[minRInd][j];

for (int i = 0; i <= ReadFile.colCount; i++){

matrix[i][j] += matrix[i][minCInd] * -minTemp;

}

}

 

for (int j = minCInd+1; j <=ReadFile.rowCount; j++){

float minTemp = matrix[minRInd][j];

for (int i = 0; i <= ReadFile.colCount; i++){

matrix[i][j] += matrix[i][minCInd] * -minTemp;

}

}

//upgrade answer vector

for (int i = 0; i < ReadFile.bvarCount; i++){

for (int j = 0; j < ReadFile.varCount; j++){

int k = j + 1;

String tempS = "x" + k;

if (tempS.equals(ReadFile.varCol[i]))

solution[j] = matrix[ReadFile.colCount][i+1];

}

}

tempCInd = minCInd;

//recursion until not optimum answer

Solve(matrix);

}

}

return matrix;

}

//create answer vector

static void initSolution(int varCount){

solution = new float[varCount];

for (int i = 0; i < varCount; i++){

solution[i] = 0;

}

}

 

 

//select D column

static boolean userChooseCol(float[][] matrix, JTable tableName){

 

boolean err = false;

 

M1: {

 

//find DC

float minR = matrix[0][0];

minRInd = 0;

for (int i = 0; i <= ReadFile.colCount; i++){

if (matrix[i][0] < minR){

minR = matrix[i][0];

minRInd = i;

}

}

 

//check choise of user

while (minRInd!= SimplexView.getSelectedCol() - 1){

JOptionPane.showMessageDialog(null, "

");

err = true;

break M1;

}

 

int temp = minRInd;

float[] proportion = new float[ReadFile.rowCount];

 

//calculate help column

for (int i = 1; i <= ReadFile.rowCount; i++){

if (i == tempCInd){

proportion[i-1] = java.lang.Float.NaN;

}

else{

proportion[i-1] = matrix[ReadFile.colCount][i] /

matrix[temp][i];

}

}

TableView.fillProportion(tableName, proportion, tempCInd);

}

 

return err;

}

 

//select DS

static boolean userChooseRow(float[][] matrix, JTable tableName){

lim = false;

boolean err = false;

 

M1:{

//check AF

for (int i = 0; i <= ReadFile.rowCount; i++){

if (matrix[minRInd][i] > 0)

lim = true;

}

 

if (!lim){

JOptionPane.showMessageDialog(null, "

");

break M1;

}

 

//find DS

float minC = matrix[ReadFile.colCount][1]/matrix[minRInd][1];

minCInd = 1;

for (int i = 1; i < tempCInd; i++){

if (matrix[ReadFile.colCount][i]/matrix[minRInd][i] < minC){

minC = matrix[ReadFile.colCount][i]/matrix[minRInd][i];

minCInd = i;

}

}

for (int i = tempCInd + 1; i <= ReadFile.rowCount; i++){

if (matrix[ReadFile.colCount][i]/matrix[minRInd][i] < minC){

minC = matrix[ReadFile.colCount][i]/matrix[minRInd][i];

minCInd = i;

}

}

 

//check user

System.out.print("user: " + SimplexView.getSelectedRow() + "; min: "

+minCInd);

while (minCInd!= SimplexView.getSelectedRow()){

err = true;

JOptionPane.showMessageDialog(null, "

");

break M1;

}

}

return err;

}

 

//rebuild simplex table

static void userBuildNewTable(float[][] matrix, JTable tableName){

 

ReadFile.varCol[minCInd-1] = ReadFile.varRow[minRInd];

float temp = matrix[minRInd][minCInd];

 

for (int i = 0; i <= ReadFile.colCount; i++){

matrix[i][minCInd] /= temp;

}

 

//nulls in DC

for (int j = 0; j < minCInd; j++){

float minTemp = matrix[minRInd][j];

for (int i = 0; i <= ReadFile.colCount; i++){

matrix[i][j] += matrix[i][minCInd] * -minTemp;

}

}

 

for (int j = minCInd+1; j <=ReadFile.rowCount; j++){

float minTemp = matrix[minRInd][j];

for (int i = 0; i <= ReadFile.colCount; i++){

matrix[i][j] += matrix[i][minCInd] * -minTemp;

}

}

 

for (int i = 0; i < ReadFile.bvarCount; i++){

for (int j = 0; j < ReadFile.varCount; j++){

int k = j + 1;

String tempS = "x" + k;

if (tempS.equals(ReadFile.varCol[i]))

solution[j] = matrix[ReadFile.colCount][i+1];

}

}

 

tempCInd = minCInd;

}

 

//check for optimum

static boolean checkSolved(float matrix[][]){

 

solved = true;

for (int i = 0; i <= ReadFile.colCount; i++){

if (matrix[i][0] < 0)

solved = false;

}

if (solved){

JOptionPane.showMessageDialog(null, " ");

tempCInd = 0;

}

 

return solved;

}

}



<== | ==>
. | II. .
:


: 2017-02-11; !; : 303 |


:

:

: , .
==> ...

1360 - | 1312 -


© 2015-2024 lektsii.org - -

: 0.382 .