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 |