2017-02-04 66 views
0

私は2つのエージェント、ディストリビューター、サプライヤーを持っています。これらのカメにはいくつかの変数があり、それらのうちいくつかはグローバルに定義され、別のタイプのエージェントに割り当てることができます。問題は、以下のように、変数のいくつかを使ってディストリビューターの方程式の系を解こうとしているということです。(売上と係数は毎回変わるディストリビューターの変数です)DCoeffiecients =行列A、売上=行列C、私は未知=行列B を探しています方程式系のnetlogoの行列拡張

sales = DCoefficients * Unknowns 

が、私はそれを解決するために「マトリックス拡張」を使用(私はプロシージャ内で呼び出していますすべての変数は、グローバルに定義されている)が、私は期待このエラー」に遭遇します私は変数がいくつかの定数ではないので、 "リテラル値"

to Solve-quantity 
ask distributers[ 
let A matrix:from-row-list [[Prod1coeff1 Prod1coeff2 Prod1coeff3 prod1coeff4] [[Prod2coeff1 Prod2coeff2 Prod2coeff3 prod2coeff4][Prod3coeff1 Prod3coeff2 Prod3coeff3 prod3coeff4][Prod4coeff1 Prod4coeff2 Prod4coeff3 prod4coeff4] ] 
let C matrix:from-row-list [[S1] [S2] [S3] [S4]] 
print matrix:solve A C 
]end 

このエラーを修正し、変数をマトリックスに割り当てる方法はありますか? ありがとう

+0

'list'に角括弧を使用しないでください。 – Alan

+0

申し訳ありません、もっと詳しく説明できますか?私はそれを得ていません – Naha

+0

'x'と' y'が変数であれば '(list x y)'と書く必要があります。角括弧 '[x y]'は機能しません。それはリテラル(数字と文字列)でのみ機能します。 – Alan

答えて

0

ここには、listプリミティブを使用して行う必要があるものの簡略化された例があります。私はそれを1行で行い、それから壊れたことに注意してください。

extensions [matrix] 

to go 
    let Prod1coeff1 1 
    let Prod1coeff2 2 
    let prod2coeff1 3 
    let prod2coeff2 4 

    let A matrix:from-row-list (list (list Prod1coeff1 Prod1coeff2) (list Prod2coeff1 Prod2coeff2)) 
    show A 

    let row1 (list Prod1coeff1 Prod1coeff2) 
    let row2 (list Prod2coeff1 Prod2coeff2) 
    let list-of-rows (list row1 row2) 
    let B matrix:from-row-list list-of-rows 
    show B 

end 

注あまりにもリストが二つ以上の要素が含まれている場合、あなたがそれらを必要とするように私は原始的listの前後に括弧を挿入したこと。

HTH、Charles

+0

おかげで唯一の問題は、私は次のもののように変数を割り当てるとき、それはまだ動作しないということです。\t Proced1 にはProd1coeff1 variablex がProd1coeff2のvariabley がprod2coeff1 variableyを聞かせて聞かせてみましょうvariablex、y、zはグローバルか、この行の前に定義されていますが! – Naha

+0

申し訳ありませんが別の質問。あなたが壊れた部品が同等で、そのうちの1つで十分であることを意味しますか?たとえば、次のようにします。行列:from-row-list(list(Prod1coeff1 Prod1coeff2)をリストしてください) show A – Naha

+0

ありがとうございました。どちらの回答も私がエラーを解決するのに役立ちました。 – Naha

関連する問題