我有一組方程。我也有一組值和方程的結果。 喜歡的東西:將方程求解爲CSP
a + b + c = x
和一些分配可能是:
1 + 1 + 1 = 3
2 + 3 + 4 = 9
然而,實際的方程是更長的時間,可能會包含一些功能,例如對數。
我現在需要改變給定集合的結果,方式是(1)方程變得等於特定值xx和(2)參數變化儘可能小。
以爲可以解決這個作爲CSP通過改變eqation到
(a + ax) + (b + bx) + (c + cx) = xx
其中a,b和c對應的舊值和斧子,BX和CX是需要被施加的差異到相應的舊值。而xx將是我想要的方程式的結果。注意,a,b,c,xa,xb,cx等都是整數值,並且xx將總是在與x的一定距離內,即xx - d < x < xx + d
。
在CSP中,b,c和xx將被視爲問題事實,ax,bx,cx將被視爲Planning變量,並且方程(a + ax) + (b + bx) + (c + cx) = xx
將是一個硬性約束。最小化所有的ax,ab,ac將是一個軟約束。 我並沒有在這裏看到一個Planning實體。
global HardSoftScoreHolder scoreHolder;
rule "changeIsBad"
when
DeltaVariable($delta : delta)
then
scoreHolder.addSoftConstraintMatch(kcontext, -Math.abs(delta));
end
rule "equationMustBeEqual"
// No idea?
end
但我無法弄清楚如何從這裏繼續。 Optaplanner是否可行這種問題?看起來所有的PlanningVariable
都必須來自列表,並且必須是實例,而我只有整數值。我的模型是否正確?
線性規劃方法可能更簡單。你考慮過了嗎? –
我不認爲線性規劃是可行的,因爲方程不一定是線性的。 – Mene