• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:glpkの文法について(初心者的質問))

glpkの文法について(初心者的質問)

seta_takahiroの回答

回答No.3

最初の投稿時の入力ファイルで実験したところ、自分の環境では、 multiplication of linear forms not allowed Context: ...IN } : sum { b in BUNKATSU } Blength [ b ] * BX [ b , s ] >= というエラーになりました。 線型計画法なので、 varとvarとのかけ算は許されないというので、 それが最大の原因のように思います。 どういう問題が解きたいのかが良くわからなかったので解決策は示せません。 paramは大文字で始めて、varは小文字で始めるとか、 命名規則を適当に定めてやったら良いのではないでしょうか。 回答に対する補足を見たら直っていたみたいですが、 最初の投稿時は Swidth[s]であるべきところがSwidth{s}になっていたり データファイルでparamであるべきところがsetになっていたり(:=の後ろについてもparamの文法と違う)していました。 あと、CoilLengthという変数が使われていなかったりしました。

anahiro
質問者

お礼

回答ありがとうございます。 multiplication of linear forms not allowed というエラーについては、当方でも同じようにでていたのですが、最初の質問でも述べたように、そもそもGLPKの規則がよくわかっていなかったため、対処のしようがなかったのです。指摘の後半部分はその通りで初回の回答で気づいて直した次第です。 今回varとvarの掛け算がだめとの示唆を頂き、言われてみればその通りであり、モデル自身を構築しなおす必要があると思っています。 LPに適したモデル構築の問題か、GLPKの文法問題かの区別もつかいない初心者ですので、何かよい文法書があればご教授お願いします。

関連するQ&A

  • 数学の質問><

    a,b を a<-1/3 b≠-2 をみたす定数とする。 (1)xについての不等式 x^2-(3a+3)x+3a+2<0 の解Sを求めよ。 (2)xについてのもう一つの不等式 x^2-3bx+(2b^2-b-1)<0 の解Tを求めよ。 (3)TがSに含まれるための a,b がみたす条件を求めよ。 おねがいします

  • SUMとJOINのことで質問です

    こんにちは 以下のようなテーブルがあるとして これらをLEFT JOINで全て繋いで、T2以降のSUM(金額)をそれぞれ 取りたいのですが、T2 T3 T4 T5 T6 の中にデータを入れるごとに 2倍・4倍・8倍・16倍とSUMの中の値がドンドン増えていってしまう のですが、何が原因なのでしょうか? 増えていく値が2のn乗なのはわかるのですが、どこが引っかかって こんなことになるのかサッパリわかりません。 ● T1 名前|A_id|B_id|C_id|D_id|E_id| AAAA|1111|2222|3333|4444|5555| ● T2 id|S_id|金額 01|1111|1000 →SUM=1000のはずが、16000 ● T3 id|S_id|金額 01|2222|2000 →SUM=2000のはずが、32000 ● T4 id|S_id|金額 01|3333|3000 →SUM=3000のはずが、48000 ● T5 id|S_id|金額 01|4444|4000 →SUM=4000のはずが、64000 ● T6 id|S_id|金額 01|5555|5000 →SUM=5000のはずが、80000 原因と宜しければ修正方法も教えて頂けるとありがたいです。 MySQL クライアントのバージョン: 5.0.45です 宜しくお願いします。。。

  • Javascriptで数値の和を求める際の処理

    宜しくお願いします。 下記のプログラムの場合、 a,b,c の何れかの値が一つでも未入力の場合、 計算結果が表示されません。 未入力の場合は「0」とみなして、結果を表示させるには、 どの様にしたらよろしいでしょうか。 ご教授ください。 <script> var sum = 0; sum += a; sum += b; sum += c; var result = sum; var x = result; var y = myFormatNumber(x);function myFormatNumber(x) { var s = "" + x; var p = s.indexOf(".");if (p < 0) { p = s.length; } var r = s.substring(p, s.length); for (var i = 0; i < p; i++) { var c = s.substring(p - 1 - i, p - 1 - i + 1); if (c < "0" || c > "9") { r = s.substring(0, p - i) + r; break;}if (i > 0 && i % 3 == 0) { r = "," + r; } r = c + r; } return r; } document.write(y); </script>

  • ベジェ曲線(3次関数)の長さ

    ベジェ曲線(3次関数)の長さを求めようと思っています。 p,q,r,sを位置ベクトルとする。 ベジェ曲線(p-q-r-s)の位置ベクトルbは b=p+t(-3p+3q+t(3p-6q+3r+t(-p+3q-3r+s))) (定義域0≦t≦1) 例えば4点(10,20)-(20,40)-(80,10)-(50,80)で表現されるベジェ曲線は bx=-140(t^3)+150(t^2)+30t+10 bx=150(t^3)-150(t^2)+60t+20 となります この曲線の長さを求める式を教えてください。

  • SUM関数を教えてください

    エクセル画面です      A     B     C 1    氏名  点数 2    H氏   10 3    A氏   20 4    S氏   30 5    T氏   40 6    Z氏   50 7    D氏   60 8    合計      S氏を基準としてS氏が(A4)の位置にある場合の合計を出すときの計算式は   B8=SUM(B4:B7)  となります S氏が(A5)の位置に来た場合   B8=SUM(B5:B7)  となります S氏のセルの位置が上下に移動するので SUM関数で範囲を自働的に変動させて計算させる方法を 教えてください よろしくお願いいたします。

  • 逆ラプラス変換について

    L^(-1)[log((s+a)/(s+b))](x) という問題をとくのに授業でもらったプリントに F(s)=log((s+a)/(s+b))=log(s+a)-log(s+b) とおく s→∞でlimF(s)=0 でありF'(s)=1/(s+a)-1/(s+b) であるのでF(s)=-∫F'(t)dt (s~∞)=∫{1/(t+a)-1/(t+b)}dt (s~∞) である.ここでG(s)=1/(s+a)-1/(s+b) と置くと F(S)=∫G(t)dt(s~∞) でありg(x)=L^(-1)G(x)=e^(-bx)-e^(-ax) よってL^(-1)F(x)=L^(-1)[∫G(t)dt](x) (s~∞) =g(x)/x==e^(-bx)-e^(-ax)/xと書いてありましたが 途中のF(s)=-∫F'(t)dt (s~∞)がこうなるのがよくわかりません.公式ですか? ただL^(-1)(s/(s^2+4)^2)(x) を上記の通りに解いたら2(e^(x)-cosx)/xとなりました.これは合っているのでしょうか?

  • 【C#】LINQについての質問です。

    【C#】LINQについての質問です。 今、プログラミングLINQ(日経BP)の本を読んでいるのですが、わからないところがありましたので、お分かりの方に教えていただきたいです。 問題の場所は、P87のリスト3-43で、以下のコードです。 わからないのは、このコードの中で、ラムダ式のtとsが何にを指しているのかということです。 お分かりになる方、よろしくお願いいたします。 var expr = from c in customers join o in (from c in customers from o in c.Orders join p in products on o.IdProduct equals p.IdProduct select new { c.Name, o.IdProduct, o.Month, OrderAmount = o.Quantity * p.Price }) on c.Name equals o.Name into orders select new { c.Name, MaxOrder = orders .Aggregate( new { Amount = 0m, Month = String.Empty }, (t, s) => t.Amount > s.OrderAmount ? t : new { Amount = s.OrderAmount, Month = s.Month }) };

  • 【シェル】case文でワイルドカードを使う

    変数varにtestで始まる文字列が格納されているかされていないかを判定し、 testで始まる文字列が格納されていない場合、ある処理をしたいです。 以下のようにすると、tまたはeまたはsまたはtで始まるかどうかを判定してしまいます。 case "$var" in [!test]* );; esac どのように書けばよいでしょうか? ヒントでも良いので教えてください。

  • 質問中の比例式(2)式の成立する根拠

    f(x)=ax^2+bx+c   a,b,c ∈Z(整数環) f( ξ )=0なる ξ が実の2次代数的数のときξを2次無理数 という。 以下f( ξ )=0となる2次無理数とする。   (1)式 η=(r ξ +s)/(t ξ +u)  r,s,t,u∈Z ,ru-st=1のとき ξ→ η なる変換を正のモジュラー変換という。 ここで ξ→ ξ なる自己変換を考える。 (1)’ 式  ξ =(r ξ+s)/(tξ+u) (1) ’ 式より t ξ ^2+(a-r)ξ-s=0、f(ξ)=0かつ ξ は有理数ではないので (2)式  t/a=(u-r)/b=-s/c=yとなる この(2)式は直観的には納得するのですが、厳密な論理からするとどういう定理(あるいは根拠)により成立するのかお教えください。 

  • 積分の問題について

    a,bを正の数とする。2つの曲線y=x^3+bx^2 , y=ax^2+abxによって囲まれる2つの部分の面積の和をSとする。 (1)Sをa,bで表せ。 (2)a+b=1のとき、Sを最小にするa,bの値を求めよ。 (一対一の対応、p157) この問題の(2)なのですが、解答は (1)より12S=(a^4+b^4+2a^3b+2ab^3) ab=tとおくと 12S=1-2t-2t^2 -(1) ここで、t>0であり、この範囲ではSはtの減少関数である。 よって、Sが最小になるのはtが最大のときであり、 t=ab=a(1-a) (0<a<1) はa=1/2のときに最大となる。 となっているのですが、 a>0,b>0,a+b=1より 0<ab<1⇔0<t<1 これと(1)を二次関数のグラフと見て最小値はt=1とするのはなぜダメなのでしょうか? t=1はとれないし、Sもマイナスになってしまうのでダメなことは明らかですが、なぜ解答のような考えに至るのかがわかりません。 よろしくお願いします。