1

J'ai besoin de résoudre un certain nombre de programmes linéaires en Perl.
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 sad
Il faudrait faire comment ?
avatar
<<< Kernel Extremis©®™ >>> et Inventeur de la différence administratif/judiciaire ! (©Yoshi Noir)

<Vertyos> un poil plus mais elle suce bien quand même la mienne ^^
<Sabrina`> tinkiete flan c juste qu'ils sont jaloux que je te trouve aussi appétissant

2

[edit] Hmmm ah non tu utilises un package... j'ai rien dit

3

tiens, un spectras de retour cheeky

bon, j'en ai plus besoin, mais quand même : le problème, c'est de lors de l'appel, je ne sais pas comment appeler la fonction sans savoir à l'avance le nombre d'arguments, sachant que je ne peux pas modifier la fonction appelée
avatar
<<< Kernel Extremis©®™ >>> et Inventeur de la différence administratif/judiciaire ! (©Yoshi Noir)

<Vertyos> un poil plus mais elle suce bien quand même la mienne ^^
<Sabrina`> tinkiete flan c juste qu'ils sont jaloux que je te trouve aussi appétissant

4

Oué ^^ Après 4 ou 5 mois chez un client qui bloquait yaronet, me revoilà chez un client moins pénible.

Sur le principe c'est bon, en tous cas au moins la ligne de l'appel. Si tu passes des tableaux à une fonction perl, perl aplatit tout.
my @truc;
$truc[0] = 42;
$truc[1] = 24;
d4_function(@truc);
c_b = 24; d4_function($truc_a, $truc_b);
est en principe strictement équivalent à $truc_a = 42;
$tru


Hmmm juste un truc, ton variable est un @variable, et tu t'y adresses avec des accolades. Je ne sais pas si c'est censé marcher ?
Tu as vérifié le contenu du tableau juste avant l'appel ?

5

spectras (./4) :
Sur le principe c'est bon, en tous cas au moins la ligne de l'appel. Si tu passes des tableaux à une fonction perl, perl aplatit tout.

bin c'est ce que je pensais, en tout cas ^^
spectras (./4) :
Hmmm juste un truc, ton variable est un @variable, et tu t'y adresses avec des accolades. Je ne sais pas si c'est censé marcher ?

Je pensais que oui, en tout cas grin (mais maintenant, j'ai un truc qui marche, et pas mal différent, donc dur de dire grin)
avatar
<<< Kernel Extremis©®™ >>> et Inventeur de la différence administratif/judiciaire ! (©Yoshi Noir)

<Vertyos> un poil plus mais elle suce bien quand même la mienne ^^
<Sabrina`> tinkiete flan c juste qu'ils sont jaloux que je te trouve aussi appétissant