I think beating the rake is enough to make a profit,
what GlennB said.
Or rather: There is no real distinction between beating the rake and beating other players: You have to beat both to make a profit, and it's hard to tell where your losses are.
but I don't know what the state of the art is. I just figure if humans can do it, so can computers.
You are mistaken.
I hear computers are still lousy at playing Go. IIRC, the possibilities for each move vastly outnumber the abilities of a computer - a human player can quickly discard the vast majority of legal moves, though.
I can't find the site - but I know of a game that explicitly designed so that a 5 year old could play it well, whilst a computer would not be able to play even just reasonably well.
Anyway ... poker:
In order to play well, you need to be able to assign motives to the actions of players: Is he trying to bluff me out of a pot, or is he trying to build value?
Computers are notoriously bad at making that type of distinction.
Maybe you can write a bot that does reasonably well against poor players, when it takes all of their playing history in account. such a bot might even win money.
Until another player figures out what it is you are doing. You will be extremely exploitable.*
Better players will often adjust their game, they will change their style and react to what it is you are doing at the time. I have no idea how a computer should keep up with that.
* I was laying a free online tournament the other day. Guy with a massive stack would
- limp into practically every pot,
- minbet on the flop and turn
- bet huge (potsized or over) on the river
Strategy:
- limp with any hand that might be semi-reasonable
- call flop and turn with anything better than TPTK or a draw to anything better.
- fold to his final bet if oyu didn't hit; call or reraise if you hit
-> I think he doubled me up, then massively increased my stack and then gave me everything he had left.
He was an extremely easy opponent. Hardly ever changed or adjusted his play; he was well worth losing a few BB against because he kept paying you off. And even after I had taken a few pots off of him, he did not change his play or get any more careful. (There was the odd push on the river or even flop. But that wasn't enough.)
It would be difficult to get a computer to even recognize this incredibly simple pattern.
It would be even more difficult, to let a computer find out the incredibly simple counter-strategy. (Because it wasn't good play at all. Playing over half of my hands at a full table would have gotten me killed in any other situation, after all.)
Simple standard play would have seen me playing a few hands here and there, and then folding against his massive raises. In fact, that is what I ended up doing for the first few hands until I had figured him out.)