C:\"Program Files\Microsoft Visual Studio .NET 2003"\Vc7\bin\vcvars32.bat nmake /f win32vc.mak
glpsol sample\samp1.mps
cl /Iinclude glpk.lib sample\sample.c sample
| 3種類の原材料M1,M2,M3を用いて、3種類の製品P1,P2,P3を生産する。 利益が最大となる生産量を求めよ。 |
| P1 | P2 | P3 | 利用可能量 | |
| M1 | 4 | 7 | 5 | 22 |
| M2 | 3 | 1 | 8 | 24 |
| M3 | 4 | 2 | 9 | 20 |
| 利益 | 4 | 7 | 5 |
var p1,>=0; var p2,>=0; var p3,>=0; maximize profit: 5*p1+8*p2+3*p3; s.t. c1: 4*p1+7*p2+5*p3<=22; c2: 3*p1+1*p2+8*p3<=24; c3: 4*p1+2*p2+9*p3<=20; |
set I := 0..2;
set J := 0..2;
param a{J,I};
param b{J};
param c{I};
var p{I}, >=0;
maximize profit: sum{i in I} c[i]*p[i];
s.t. cons{j in J}: sum{i in I} a[j,i]*p[i] <= b[j];
data;
param b := 0 22 1 24 2 20;
param c := 0 5 1 8 2 3;
param a:
0 1 2 :=
0 4 7 5
1 3 1 8
2 4 2 9;
|
#include "stdafx.h"
#using <mscorlib.dll>
using namespace System;
#include "CLP.h"
int _tmain()
{
double a[][3] = {{4,7,5}, {3,1,8}, {4,2,9}};
double r[] = {22,24,20};
double c[] = {5,8,3};
int i,j, rows = SIZE(a), cols = SIZE(a[0]);
CLP lp(rows,cols,"sample");
lp.SetObjDir(CLP::MAX);
for (i=1;i<=rows;++i) {
lp.SetMatRow(i,cols,a[i-1]);
lp.SetRowBounds(i,CLP::UP,0,r[i-1]);
}
for (j=1;j<=cols;++j) {
lp.SetColCoef(j,c[j-1]);
lp.SetColBounds(j,CLP::LO,0,0);
}
lp.Simplex();
printf("\nZ = %g; x1 = %g; x2 = %g; x3 = %g\n",
lp.GetObjVal(),lp.GetColInfo(1),lp.GetColInfo(2),lp.GetColInfo(3));
return 0;
}
|
* 0: objval = 0.000000000e+000 infeas = 0.000000000e+000 (0) * 2: objval = 2.720000000e+001 infeas = 0.000000000e+000 (0) OPTIMAL SOLUTION FOUND Z = 27.2; x1 = 4.8; x2 = 0.4; x3 = 0 |