人工智慧小作業,假設存在一組線性方程式和一些點,點會在方程式的右半部或左半部是已知的,要如何透過類神經網路的概念來讓電腦自動取得符合所有情況的係數呢?
如果將係數當成圖論上的權重,而座標是節點,一種方法是假設權重一開始是(0,0,0),接下來依序尋找所有已知點,去判斷此權重是否滿足所有情況,若有誤差則利用此點的資料對權重進行調整,程式碼如下:struct cof //方程式係數
{
int x;
int y;
int z;
int c;
};
int main()
{
//假設有一線性方程式:ax+by+cz-20 = 0,利用學習權重找出a b c
int test_data[][4] = //測試點
{
{1,0,0,-1},
{7,7,7,1},
{0,0,0,-1},
{3,1,1,1},
{-1,-1,-1,-1},
{4,0,0,1}
};
cof c = {1,0,0,0}; //假設權重先等於第一筆資料
for(int i = 0 ; i = 0)//如果點在線的右邊(>0) * 預設結果在右邊(=0)
{
//權重滿足此點,不用更新
}
else //如果點在線的右邊(>0) * 預設結果在左邊(<0) = 結果不符(<0)
{
c.x += test_data[i][0]* test_data[i][3];
c.y += test_data[i][1]* test_data[i][3];
c.z += test_data[i][2]* test_data[i][3];
if(i == 5)i = 0;
}
printf("%d %d %d\n",c.x,c.y,c.z);
}
system("pause");
return 0;
}