Pour un petit programme, ça ressemble à ça (au moins pour déterminer la fonction objectif)
$x1 = new Math::LP::Variable(name => 'x1');
$x2 = new Math::LP::Variable(name => 'x2');
$obj_fn = make Math::LP::LinearCombination($x1,1.0,$x2,2.0);
$lp->maximize_for($obj_fn);
Dans mon cas, je ne connais pas a priori le nombre de variables, donc je fais
my %gamma = (); # ""
my @variables = ();
for(my $i = 1; $i <= $m; $i++) {
$gamma{$i} = new Math::LP::Variable(name => ('gamma'.$i));
$variables{2*($i-1)} = $gamma{$i};
$variables{2*$i-1} = 1.0;
}
my $obj_fn = make Math::LP::LinearCombination(@variables);
$lp->maximize_for($obj_fn);
Manque de pot, ça n'a pas l'air de lui convenir (j'ai l'impression que la combinaison linéaire produite est vide
Il faudrait faire comment ?
(mais maintenant, j'ai un truc qui marche, et pas mal différent, donc dur de dire